Chapter 36 Quiz: Accounting and General Ledger Systems

Test your understanding of COBOL accounting and general ledger concepts. Each question is followed by a hidden answer -- try to answer before revealing it.


Question 1

What is the fundamental rule of double-entry bookkeeping, and how does a COBOL GL system enforce it?

Show Answer The fundamental rule is that **every transaction must be recorded with at least two entries -- one debit and one credit -- and total debits must always equal total credits**. This maintains the accounting equation: Assets = Liabilities + Equity. A COBOL GL system enforces this rule at multiple levels: 1. **Journal entry level**: The validation program verifies that `JE-TOTAL-DEBITS = JE-TOTAL-CREDITS` before allowing an entry to post. 2. **Batch level**: Hash totals and control totals verify that the batch of entries processed balances. 3. **Period level**: The trial balance report verifies that all accounts' debit balances sum to the same total as all credit balances. If debits do not equal credits at any level, it indicates a system error that must be investigated before proceeding.

Question 2

Which account type has a normal debit balance?

  • a) Liabilities
  • b) Revenue
  • c) Equity
  • d) Assets
Show Answer **d) Assets.** Assets and expenses have normal debit balances (debits increase them, credits decrease them). Liabilities, equity, and revenue have normal credit balances (credits increase them, debits decrease them). This follows from the accounting equation: since Assets = Liabilities + Equity, assets sit on the opposite (debit) side from liabilities and equity (credit side).

Question 3

True or False: In a GL master file, period 13 corresponds to the thirteenth month of the calendar year.

Show Answer **False.** Period 13 is the **adjustment period**, used for year-end audit adjustments. It does not correspond to any calendar month. Auditors use period 13 to post corrections and reclassifications that should not affect any specific month's financial statements. This way, monthly reports that have already been distributed to management remain unchanged while auditors' adjustments are properly recorded. Periods 1-12 correspond to the twelve calendar or fiscal months.

Question 4

What is the difference between a "postable" account and a "summary-only" account in the chart of accounts?

Show Answer A **postable** account (`COA-POSTABLE VALUE 'Y'`) is a detail-level account that accepts journal entry postings. Individual transactions are recorded directly to these accounts. Example: "Marketing Department - Office Supplies" (0100-5500-3200-00). A **summary-only** account (`COA-SUMMARY-ONLY VALUE 'N'`) is a parent account that exists solely for roll-up reporting purposes. It cannot receive direct journal entry postings; its balance is calculated by aggregating the balances of its child accounts. Example: "Total Operating Expenses" (0100-5000-0000-00). If a journal entry line references a summary-only account, the validation program must reject the entry with an error. This prevents posting to the wrong level of the account hierarchy.

Question 5

What does the following COBOL code calculate, and when would it be used?

       COMPUTE WS-VARIANCE =
           GL-PRD-BUDGET(WS-PERIOD) -
           GL-PRD-NET(WS-PERIOD)
       IF GL-PRD-BUDGET(WS-PERIOD) NOT = ZEROS
           COMPUTE WS-VARIANCE-PCT =
               (WS-VARIANCE /
                GL-PRD-BUDGET(WS-PERIOD)) * 100
       ELSE
           MOVE ZEROS TO WS-VARIANCE-PCT
       END-IF
Show Answer This code calculates the **budget variance** for a specific GL account and period. It computes: 1. **Dollar variance**: The difference between the budgeted amount and the actual amount (net activity) for the period. A positive variance means actual was less than budget; a negative variance means actual exceeded budget. 2. **Percentage variance**: The dollar variance as a percentage of the budget, with a guard against division by zero when the budget is zero. This calculation is used in **management reporting** to identify accounts where actual spending deviates significantly from plan. For expense accounts, a positive variance (under budget) is favorable; for revenue accounts, a negative variance (under budget) is unfavorable. Finance teams typically investigate variances exceeding a threshold (e.g., 10%) as part of the month-end close process.

Question 6

In a GL system, what is the purpose of the "journal code" field on a journal entry?

  • a) To assign a unique identifier to each journal entry
  • b) To classify the source or type of journal entry (e.g., general journal, cash receipts, payroll)
  • c) To indicate whether the entry is a debit or credit
  • d) To specify which fiscal year the entry belongs to
Show Answer **b) To classify the source or type of journal entry.** Common journal codes include: - **GJ**: General Journal (manual adjusting entries) - **CR**: Cash Receipts journal - **CD**: Cash Disbursements journal - **PY**: Payroll journal - **AP**: Accounts Payable journal - **AR**: Accounts Receivable journal - **AJ**: Adjusting Journal (period-end adjustments) The journal code helps auditors and analysts identify the origin of each entry. For example, all payroll-related entries carry the 'PY' code, making it easy to review all payroll postings for a period. It also supports segregation of duties controls, where certain users may only be authorized to create entries with specific journal codes.

Question 7

True or False: An auto-reversing journal entry is reversed by changing the amounts to negative numbers.

Show Answer **False.** An auto-reversing entry is reversed by **swapping the debit/credit indicators**, not by changing amounts to negative. If the original entry debited Account A for $10,000 and credited Account B for $10,000, the reversal credits Account A for $10,000 and debits Account B for $10,000. The amounts remain positive; only the direction (debit vs. credit) changes. In COBOL, this is implemented by checking the debit/credit indicator on each line and flipping it:
IF JH-LN-DC-IND(WS-IDX) = 'D'
    MOVE 'C' TO WS-REV-DC-IND(WS-IDX)
ELSE
    MOVE 'D' TO WS-REV-DC-IND(WS-IDX)
END-IF
This approach is standard in accounting because it preserves the positive-amount convention and maintains clear audit trail visibility.

Question 8

What are the three types of trial balance, and when is each generated?

Show Answer 1. **Unadjusted Trial Balance**: Generated **before** any adjusting entries are posted. It reflects only the routine transactions recorded during the period. Used as a starting point for the month-end close process. 2. **Adjusted Trial Balance**: Generated **after** adjusting entries (accruals, deferrals, depreciation, corrections) but **before** closing entries. This is the basis for generating the period's financial statements (income statement, balance sheet). 3. **Post-Closing Trial Balance**: Generated **after** closing entries, which transfer revenue and expense balances to retained earnings. It includes only **balance sheet accounts** (assets, liabilities, equity) because all income statement accounts have been zeroed out by the closing process. It serves as the starting point for the next fiscal year.

Question 9

What is the accounting equation, and how does it relate to the balance sheet?

Show Answer The accounting equation is: **Assets = Liabilities + Equity** In expanded form: **Assets = Liabilities + Equity + Revenue - Expenses** This equation directly maps to the balance sheet: - The **left side** (Assets) represents resources owned by the organization. - The **right side** (Liabilities + Equity) represents claims against those resources: liabilities are claims by creditors, and equity is the residual claim of the owners. The balance sheet is a snapshot of this equation at a point in time. The COBOL program that generates the balance sheet must verify that total assets equal total liabilities plus total equity. If they do not balance, it indicates a system error:
COMPUTE WS-CHECK-TOTAL =
    WS-TOTAL-LIABILITIES + WS-TOTAL-EQUITY
IF WS-TOTAL-ASSETS NOT = WS-CHECK-TOTAL
    PERFORM BALANCE-SHEET-ERROR
END-IF

Question 10

Analyze the following year-end closing code. What does it do, and what would happen if GL-ACCOUNT-TYPE = 'A' (Asset) records were processed by this paragraph?

       CLOSE-REVENUE-ACCOUNTS.
           PERFORM UNTIL WS-EOF-GL
               READ GL-MASTER-FILE
                   AT END SET WS-EOF-GL TO TRUE
               END-READ
               IF NOT WS-EOF-GL AND GL-ACCOUNT-TYPE = 'R'
                   ADD GL-ENDING-BALANCE TO WS-NET-INCOME
                   MOVE GL-ACCOUNT-NUM TO JE-LN-ACCOUNT(1)
                   MOVE 'D'            TO JE-LN-DC-IND(1)
                   MOVE GL-ENDING-BALANCE
                       TO JE-LN-AMOUNT(1)
                   PERFORM POST-CLOSING-LINE
               END-IF
           END-PERFORM
           .
Show Answer This paragraph **closes revenue accounts** during the year-end close process. For each revenue account (type 'R'): 1. It adds the account's ending balance to `WS-NET-INCOME` (accumulating total revenue). 2. It creates a closing journal entry line that **debits** the revenue account for its full ending balance. Since revenue accounts have a normal credit balance, debiting them for their full balance reduces them to zero. 3. The offsetting credit would be posted to an Income Summary or Retained Earnings account in a separate paragraph. If asset accounts (type 'A') were processed by this paragraph, it would be a **critical error**: - Asset balances would be incorrectly added to net income. - Debit entries would be posted to asset accounts, which already have debit balances, doubling their balances. - The balance sheet would be completely wrong. - The accounting equation would be violated. The `IF GL-ACCOUNT-TYPE = 'R'` condition correctly prevents this. Only **temporary accounts** (Revenue and Expenses) are closed at year-end; **permanent accounts** (Assets, Liabilities, Equity) carry their balances forward to the new year.

Question 11

What is the relationship between a subledger and a GL control account?

Show Answer A **subledger** contains detailed transaction records for a specific area (Accounts Receivable, Accounts Payable, Payroll, Fixed Assets). A **GL control account** contains the summary total that should equal the sum of all detail records in the corresponding subledger. For example, the Accounts Receivable subledger contains individual customer balances ($5,000 for Customer A, $3,200 for Customer B, etc.), while the GL AR control account contains the total ($8,200). The two must always agree. The GL does not store individual customer invoices or vendor payments -- those details reside in the subledger. The GL stores only the aggregate amount. Each subledger generates summary journal entries that are posted to the GL, and during month-end close, the subledger total is reconciled against the GL control account to verify accuracy. If a discrepancy exists, it indicates a posting error, timing difference, or missing transaction that must be investigated and resolved.

Question 12

True or False: In a COBOL GL system, the OCCURS 13 TIMES clause on the period table means the program must always process all 13 periods when generating a report.

Show Answer **False.** The OCCURS 13 TIMES clause defines the storage capacity of the period table -- it can hold data for 13 periods. However, programs access specific periods using subscripts and only process the periods relevant to their purpose. For example: - A monthly report accesses only one period: `GL-PRD-DEBITS(WS-CURRENT-PERIOD)`. - A YTD report loops from period 1 through the current period: `PERFORM VARYING WS-PRD FROM 1 BY 1 UNTIL WS-PRD > WS-CURRENT-PERIOD`. - An annual report processes periods 1-12 (or 1-13 if audit adjustments should be included). - The trial balance typically uses the ending balance field, which already reflects all posted periods. The 13th period is only processed when audit adjustments need to be included or when performing the year-end close.

Question 13

What Sarbanes-Oxley (SOX) control does the following code enforce?

       IF JE-ENTERED-BY = JE-APPROVED-BY
           MOVE 'SOX VIOLATION: SAME USER ENTERED AND '
                'APPROVED ENTRY'
               TO WS-ERROR-MSG
           PERFORM WRITE-SOX-VIOLATION
           SET WS-SOX-FAILED TO TRUE
       END-IF
Show Answer This code enforces the **segregation of duties** control, one of the most fundamental SOX requirements. Segregation of duties requires that no single individual should have the ability to both initiate and approve a financial transaction. This prevents fraud by ensuring that at least two people are involved in processing financial entries. In this specific check, the person who created the journal entry (`JE-ENTERED-BY`) must be different from the person who approved it (`JE-APPROVED-BY`). If the same user ID appears in both fields, the system flags it as a SOX violation and prevents the entry from being posted. Other SOX controls that GL systems typically enforce include: - Approval thresholds (large entries require management approval) - Access controls (users can only post to authorized accounts) - Change management (modifications to the chart of accounts are logged) - Data retention (financial records must be retained for 7 years)

Question 14

What is the purpose of the "cost center" segment in a segmented account number like 0100-5100-3200-00?

  • a) To identify the type of transaction (salary, rent, revenue)
  • b) To identify the organizational unit responsible for the expense
  • c) To identify which fiscal year the account belongs to
  • d) To identify the natural account classification
Show Answer **b) To identify the organizational unit responsible for the expense.** In the segmented account number 0100-5100-3200-00: - 0100 = Company Code - 5100 = Natural Account (identifies the type, e.g., Salary Expense) - **3200 = Cost Center / Department** (identifies who is responsible, e.g., Marketing) - 00 = Sub-account The cost center enables **responsibility reporting**: management can see all expenses for a specific department, regardless of the type of expense. This segmentation also supports flexible reporting: you can report on all salary expenses across the company (by natural account), all expenses for Marketing (by cost center), or salary expense specifically for Marketing (by both).

Question 15

Explain why the COBOL PIC S9(13)V99 COMP-3 data type is essential for GL balance fields. What would go wrong if COMP (binary) or COMP-1/COMP-2 (floating-point) were used instead?

Show Answer `PIC S9(13)V99 COMP-3` (packed decimal) is essential because: 1. **Exact decimal representation**: COMP-3 stores decimal numbers exactly. The value $1,234,567.89 is stored as exactly 1234567.89 with no approximation. Financial systems require this exactness because even tiny rounding errors, when accumulated across millions of transactions, produce material discrepancies. 2. **Fixed precision**: The PIC clause specifies exactly 13 integer digits and 2 decimal places, matching the precision requirements of financial amounts (up to $9,999,999,999,999.99). If **COMP (binary)** were used: Binary integers can represent whole numbers exactly, but they handle decimal fractions by using a scaled binary representation. While this works for COBOL's implicit decimal point, the conversion from packed decimal during arithmetic operations adds overhead and can introduce issues in intermediate calculations on some platforms. If **COMP-1/COMP-2 (floating-point)** were used: Floating-point numbers cannot exactly represent most decimal fractions. For example, 0.01 (one cent) has no exact binary floating-point representation. This means: - $100.10 might be stored as $100.09999999999999... or $100.10000000000001... - Accumulated rounding errors across thousands of entries could cause the trial balance to be out of balance - Interest calculations would produce incorrect results - Regulatory violations would occur (Truth in Lending, SOX compliance) COMP-3 avoids all of these problems by performing arithmetic in decimal, matching the way humans think about money.

Question 16

True or False: During the year-end close, balance sheet accounts (Assets, Liabilities, Equity) are closed to zero and their balances are transferred to Retained Earnings.

Show Answer **False.** Only **income statement accounts** (Revenue and Expenses) are closed to zero during the year-end close. Their net balance (revenue minus expenses = net income) is transferred to Retained Earnings. **Balance sheet accounts** (Assets, Liabilities, Equity) are **permanent accounts** -- their balances carry forward from one year to the next. Cash does not reset to zero on January 1; accounts payable obligations do not disappear; retained earnings accumulates over the life of the company. The COBOL program that creates opening balances for the new year handles this distinction:
IF GL-ACCOUNT-TYPE = 'A' OR 'L' OR 'E'
    MOVE GL-ENDING-BALANCE TO NEW-GL-BEGINNING-BALANCE
ELSE
    MOVE ZEROS TO NEW-GL-BEGINNING-BALANCE
END-IF

Question 17

What is the purpose of the journal entry status field, and what does each status value represent?

       05  JE-STATUS             PIC X(01).
           88  JE-PENDING        VALUE 'P'.
           88  JE-APPROVED       VALUE 'A'.
           88  JE-POSTED         VALUE 'D'.
           88  JE-REJECTED       VALUE 'R'.
           88  JE-REVERSED       VALUE 'V'.
Show Answer The journal entry status field tracks each entry through its lifecycle: - **'P' (Pending)**: The entry has been created but not yet approved. It exists in the system but has not affected any GL balances. Users can still modify or delete pending entries. - **'A' (Approved)**: The entry has been reviewed and approved by an authorized person. It is queued for posting but has not yet been posted to the GL master. The entry can no longer be modified; if changes are needed, a new entry must be created. - **'D' (Posted)**: The entry has been successfully posted to the GL master file. Account balances have been updated. The 'D' value (rather than 'P') avoids confusion with 'P' for Pending. Posted entries cannot be changed; corrections require a new reversing entry. - **'R' (Rejected)**: The entry failed validation (out of balance, invalid account, closed period, failed SOX controls). It has not been posted. The user must correct the errors and resubmit. - **'V' (Reversed)**: The entry was previously posted but has been reversed by a subsequent entry. The original entry remains in the history with status 'V' for audit trail purposes, with a reference to the reversing entry. This status-driven workflow ensures that every journal entry follows the prescribed approve-post lifecycle and that the complete history of each entry is preserved.

Question 18

A financial analyst notices that the income statement shows total revenue of $5,000,000 for June, but the trial balance shows revenue account balances totaling $28,500,000. Explain why these numbers are different. Is this an error?

Show Answer **This is not an error.** The numbers are different because they represent different time periods: - The **income statement for June** shows only the **month-to-date (MTD)** activity: $5,000,000 is the revenue earned specifically during the month of June (period 6). - The **trial balance** shows the **year-to-date (YTD)** balance of the revenue accounts: $28,500,000 is the cumulative revenue from January through June. In the GL master record, these values come from different fields: - Income statement uses: `GL-PRD-NET(6)` -- the net activity for period 6 only - Trial balance uses: `GL-ENDING-BALANCE` -- the cumulative balance from the beginning of the year through the current period The relationship is: `GL-ENDING-BALANCE = GL-BEGINNING-BALANCE + SUM(GL-PRD-NET(1) through GL-PRD-NET(current period))`. For revenue accounts that start the year at zero (after year-end closing), the ending balance equals the YTD cumulative revenue.

Question 19

What is the difference between batch posting and real-time posting in a GL system? What are the advantages of batch posting in a COBOL environment?

Show Answer **Batch posting** accumulates journal entries throughout the day and posts them to the GL master file in a scheduled batch run (typically during the evening). **Real-time posting** updates the GL immediately as each entry is approved. Advantages of batch posting in a COBOL environment: 1. **Atomicity**: The entire batch either posts or rolls back. If an error occurs partway through, the batch can be restarted from the beginning. This is easier to manage than recovering from a failed real-time posting. 2. **Performance**: Batch processing optimizes I/O by processing records sequentially. VSAM sequential reads are much faster than random reads. When entries are sorted by account before posting, buffer utilization is maximized. 3. **Audit trail**: A complete posting run produces a single, comprehensive posting report that shows every entry processed, every account updated, and all control totals. This is easier to audit than individual real-time postings scattered throughout the day. 4. **Control**: Management can review and approve all entries before the batch runs. This provides a checkpoint where errors can be caught before they affect the GL. 5. **Concurrency**: Batch processing runs during off-hours when online systems are not accessing the GL master file, avoiding contention and locking issues. 6. **Restart/recovery**: If the batch job fails, it can be restarted from a checkpoint. Real-time posting requires more complex recovery logic.

Question 20

Analyze the following code for generating opening balances for a new fiscal year. What is the significance of the IF condition?

       CREATE-OPENING-BALANCES.
           PERFORM UNTIL WS-EOF-GL
               READ GL-MASTER-FILE
                   AT END SET WS-EOF-GL TO TRUE
               END-READ
               IF NOT WS-EOF-GL
                   IF GL-ACCOUNT-TYPE = 'A' OR
                      GL-ACCOUNT-TYPE = 'L' OR
                      GL-ACCOUNT-TYPE = 'E'
                       MOVE GL-ENDING-BALANCE
                           TO NEW-GL-BEGINNING-BALANCE
                   ELSE
                       MOVE ZEROS TO NEW-GL-BEGINNING-BALANCE
                   END-IF
                   PERFORM WRITE-NEW-YEAR-RECORD
               END-IF
           END-PERFORM
           .
Show Answer The IF condition distinguishes between **permanent accounts** and **temporary accounts**: - **Permanent accounts** (Assets 'A', Liabilities 'L', Equity 'E'): Their ending balance from the old year becomes the beginning balance for the new year. Cash does not reset to zero; debts do not disappear; equity carries forward. `GL-ENDING-BALANCE` is moved to `NEW-GL-BEGINNING-BALANCE`. - **Temporary accounts** (Revenue 'R', Expenses 'X', and any others): Their beginning balance for the new year is set to **zero**. Revenue and expense accounts accumulate activity only for the current fiscal year. At year-end, their balances were closed to Retained Earnings by the closing entries. The new year starts with a clean slate for tracking the next year's income and expenses. This is one of the most fundamental concepts in accounting: the distinction between permanent (balance sheet) and temporary (income statement) accounts. Getting this wrong would result in either: - Revenue and expenses carrying forward (overstating the next year's income/expenses), or - Assets and liabilities resetting to zero (making the balance sheet disappear). Either error would produce materially incorrect financial statements.

Question 21

True or False: In a chart of accounts hierarchy, a parent account's balance should always be calculated by the GL posting program and stored in the GL master file.

Show Answer **False.** Parent (summary) accounts should **not** receive direct postings. Their balances should be **calculated dynamically** by aggregating child account balances during report generation, or pre-computed in a roll-up process that runs after all posting is complete. Storing calculated roll-up balances in the GL master file creates a maintenance problem: every time a child account's balance changes, the parent's stored balance becomes stale. If the roll-up is not recomputed after every posting, reports will show inconsistent totals. The preferred approach is: 1. Mark parent accounts as `COA-SUMMARY-ONLY VALUE 'N'` (not postable). 2. Only post to detail-level (leaf) accounts. 3. Calculate roll-up balances at report time by traversing the parent-child hierarchy. 4. Optionally, pre-compute and cache roll-up balances in a separate summary table after each batch posting run.

Question 22

What is the purpose of the hash total in batch GL processing, and how is it different from a simple record count?

Show Answer A **hash total** is a control total computed by summing a non-financial field (like account numbers) across all records in a batch. Its purpose is to detect **missing, duplicated, or substituted records** that a simple record count would miss. For example, consider a batch of three journal entry lines: - Line 1: Account 1100, Amount $5,000 - Line 2: Account 2100, Amount $5,000 - Line 3: Account 5300, Amount $10,000 Record count: 3 Hash total (sum of account numbers): 1100 + 2100 + 5300 = 8,500 Amount total: $20,000 If Line 2 were accidentally replaced with a duplicate of Line 1: - Line 1: Account 1100, Amount $5,000 - Line 2: Account 1100, Amount $5,000 (duplicate!) - Line 3: Account 5300, Amount $10,000 Record count: 3 (still correct -- would NOT detect the error) Hash total: 1100 + 1100 + 5300 = 7,500 (MISMATCH -- error detected!) Amount total: $20,000 (still correct if amounts happen to match) The hash total catches record substitution errors that neither the record count nor the amount total would detect. It is called a "hash" total because the sum of account numbers has no business meaning -- it is meaningful only as a verification check.

Question 23

A COBOL GL program must support multiple companies within a single installation. How does the company code in the account key provide this capability?

Show Answer The company code is the **first segment** of the GL master file key:
05  GL-KEY.
    10  GL-COMPANY         PIC X(04).
    10  GL-NATURAL-ACCT    PIC X(04).
    10  GL-COST-CENTER     PIC X(04).
    10  GL-SUB-ACCOUNT     PIC X(02).
    10  GL-FISCAL-YEAR     PIC 9(04).
This design provides multi-company support in several ways: 1. **Data isolation**: Each company's accounts are separated by the company code prefix. Company 0100's cash account (0100-1010-0000-00) is a completely separate record from Company 0200's cash account (0200-1010-0000-00). 2. **Independent periods**: Each company can have its own fiscal calendar, current period, and open/closed status. Company 0100 might have a January-December fiscal year while Company 0200 uses an April-March fiscal year. 3. **Selective processing**: Programs can process a single company by positioning on the company code prefix, or all companies by reading the entire file. Report programs can filter by company or produce consolidated reports. 4. **Intercompany tracking**: When transactions cross company boundaries (Company 0100 sells to Company 0200), the journal entry references accounts in both companies, and intercompany elimination entries are generated during consolidation. 5. **Security**: Access controls can restrict users to specific company codes, preventing unauthorized access to other companies' financial data.

Question 24

What happens during the month-end close process if the trial balance does not balance? Why is an out-of-balance trial balance considered a critical error?

Show Answer If the trial balance does not balance during the month-end close: 1. **The close process is aborted.** The period must remain open until the imbalance is resolved. The COBOL program sets a non-zero return code (typically 8 or higher) to signal the failure:
IF NOT WS-TB-BALANCED
    DISPLAY 'TRIAL BALANCE OUT OF BALANCE - CLOSE ABORTED'
    MOVE 8 TO RETURN-CODE
END-IF
2. **Subsequent JCL steps do not execute** because the COND parameter prevents them from running when the prior step fails. 3. **Financial statements are not generated** because they would be incorrect. An out-of-balance trial balance is a **critical error** because: - It violates the fundamental principle of double-entry bookkeeping. If debits do not equal credits, at least one transaction was recorded incorrectly. - It indicates a **system-level failure**, not a business error. Business errors (posting to the wrong account) do not cause the trial balance to go out of balance -- they result in correct totals but in the wrong accounts. An out-of-balance condition means that the posting engine itself has a defect, a record was corrupted, or a transaction was partially posted. - Financial statements produced from an unbalanced trial balance would be **materially misstated**, which is a SOX violation for public companies and could result in regulatory penalties for financial institutions. - It may indicate **data corruption** in the GL master file that requires immediate investigation and recovery from backup.

Question 25

Explain the concept of "recurring entries" in a GL system. Give three examples of business transactions that would be set up as recurring entries.

Show Answer **Recurring entries** are journal entry templates that automatically generate the same entry each accounting period. They are used for transactions that occur every month with the same accounts and amounts, eliminating the need for manual entry and reducing the risk of omission. The COBOL program reads a recurring entry template file, checks whether each template is active and within its effective date range, and generates a journal entry for the current period. Three examples: 1. **Monthly office rent**: Debit Rent Expense $15,000, Credit Prepaid Rent $15,000. This amortizes the annual rent payment that was made in advance over 12 months. 2. **Monthly depreciation**: Debit Depreciation Expense $8,500, Credit Accumulated Depreciation $8,500. Straight-line depreciation produces the same amount each month for the life of the asset. 3. **Monthly insurance premium amortization**: Debit Insurance Expense $3,000, Credit Prepaid Insurance $3,000. An annual insurance premium of $36,000 is spread evenly across 12 months. Recurring entries have a start period and an optional end period, allowing them to automatically expire when the underlying obligation is fulfilled (e.g., a 36-month lease generates 36 recurring entries and then stops).

Question 26

What is the difference between an accrual and a deferral? How are they handled in a COBOL GL system?

Show Answer **Accrual**: Recognizing revenue earned or expenses incurred that have **not yet been recorded** because cash has not yet been received or paid. Example: Employees have worked the last week of June, but payroll is not paid until July 5. At June month-end, an accrual entry records the salary expense and the corresponding liability. **Deferral**: Recognizing that cash received or paid relates to **future periods**, not the current period. Example: A customer pays $12,000 in January for a full year of service. The cash is received, but only $1,000 of revenue should be recognized each month. The remaining $11,000 is deferred (recorded as a liability -- unearned revenue). In a COBOL GL system: **Accruals** are typically generated by an accrual processing program that reads templates and creates journal entries at month-end. These entries are usually marked as **auto-reversing** so they reverse on the first day of the next period. When the actual transaction occurs (payroll is paid, invoice is received), it is recorded normally. **Deferrals** are handled through recurring entries that gradually move the deferred amount from the balance sheet (Prepaid Expense or Unearned Revenue) to the income statement (Expense or Revenue) each period. Both accruals and deferrals follow the **matching principle**: revenues should be recognized in the period they are earned, and expenses in the period they are incurred, regardless of when cash changes hands.

Question 27

True or False: A GL system should allow posting to period 13 at any time during the fiscal year.

Show Answer **False.** Period 13 (the adjustment period) should only be open for posting **after the regular period 12 close** and **before the year-end close is finalized**. It is specifically reserved for audit adjustments -- corrections and reclassifications that auditors identify during their year-end review. If period 13 were open throughout the year, it would defeat its purpose: auditors' adjustments would be mixed with regular business transactions, and there would be no clean separation between operating activity and audit corrections. Additionally, monthly financial statements could be affected by period 13 postings if the reporting programs do not properly exclude period 13 from monthly reports. The typical workflow is: 1. Close periods 1-12 through the normal monthly close process. 2. Open period 13 for audit adjustments only. 3. Post all audit adjustments to period 13. 4. Generate the adjusted trial balance (including period 13). 5. Perform the year-end close, which closes period 13 along with the revenue and expense accounts. 6. Create opening balances for the new fiscal year.

Question 28

Analyze the following period balance calculation. Under what circumstances would this code produce an incorrect result?

       CALCULATE-YTD-BALANCE.
           MOVE GL-BEGINNING-BALANCE TO WS-RUNNING-BALANCE
           PERFORM VARYING WS-PRD FROM 1 BY 1
               UNTIL WS-PRD > WS-CURRENT-PERIOD
               ADD GL-PRD-NET(WS-PRD) TO WS-RUNNING-BALANCE
           END-PERFORM
           MOVE WS-RUNNING-BALANCE TO GL-ENDING-BALANCE
           .
Show Answer This code calculates the YTD ending balance by starting with the beginning balance and adding the net activity for each period from 1 through the current period. It would produce incorrect results under these circumstances: 1. **Period 13 adjustments not included**: If the current period is 12 and audit adjustments have been posted to period 13, this code stops at period 12 and misses the period 13 adjustments. The adjusted ending balance should include period 13: the loop condition should be `UNTIL WS-PRD > 13` when generating an adjusted trial balance. 2. **Out-of-sequence posting**: If entries were posted to a future period (e.g., period 8 entries posted when `WS-CURRENT-PERIOD` is 6), those entries would not be included in the YTD balance because the loop stops at period 6. The GL master file may have activity in periods beyond the current period that this calculation ignores. 3. **Negative beginning balance for certain account types**: If the beginning balance was incorrectly carried forward (e.g., a revenue account that should start at zero but was not properly closed), the starting point is wrong and the entire calculation is incorrect. 4. **Concurrent modification**: If another process is posting to the GL master file while this code is reading it, the period net values may be partially updated, producing an inconsistent calculation. This is a concurrency issue that is typically avoided by running the calculation in batch when no posting is occurring.