Vous êtes sur la page 1sur 8

SOLUTIONS TO REVIEW QUESTIONS I. 1. 2. 3. True-False Questions F T F Zero is neither negative nor positive.

An alphanumeric field can be neither numeric nor alphabetic. In EBCDIC, numbers are greater than uppercase letters. In ASCII however, numbers are less than uppercase letters. Numeric items are compared algebraically (020 = 20). Trailing spaces do not affect the evaluation of a nonnumeric field. (Expansion of the smaller field according to rules of numeric and alphanumeric fields results in fields of equal size for the comparison.) Statements surrounding the word AND are evaluated first.

4.

5.

6. 7. 8. 9. 10. II. 1. 2. 3. 4.

T T T F T General Questions AMT1 is equal to AMT2 AMT1 is equal to AMT2 AMT1 is equal to AMT2 AMT1 is equal to AMT2 Parentheses may be used to alter the hierarchy of operations

5.

IF SALARY <= 84900 COMPUTE FICA ROUNDED = SALARY * 0.0765 ELSE COMPUTE FICA ROUNDED = 84900 * 0.0765 + (SALARY - 84900) * 0.0145 END-IF MOVE A TO HOLD-IT IF B > HOLD-IT MOVE B TO HOLD-IT END-IF IF C > HOLD-IT MOVE C TO HOLD-IT END-IF IF D > HOLD-IT MOVE D TO HOLD-IT END-IF The statements are not equivalent. In (a), 600-PRINT-RTN will always be performed. In (b), 600-PRINT-RTN will only be performed if A = B. The statements are not equivalent. In (a), 700-RTN-Y will be performed if A is zero. In (b), 600-RTN-X will be performed if A is zero. The statements are not equivalent. In (a), if DISCOUNT is greater than TOTAL the 500ERR-RTN will be performed but not the subtraction. In (b), if DISCOUNT is greater than TOTAL, the 500-ERR-RTN is performed, and the subtraction is also performed. Correct. The word IF should not be repeated.

6.

7.

8.

9.

10. 11.

12.

000-MAIN-MODULE. PERFORM UNTIL ARE-THERE-MORE-RECORDS = NO READ SHIPPING-FILE AT END MOVE NO TO ARE-THERE-MORE-RECORDS NOT AT END PERFORM 200-PROCESS-SHIPMENT END-READ END-PERFORM. 200-PROCESS-SHIPMENT. EVALUATE SHIPPING-WEIGHT < 30000 WHEN TRUE MOVE 0.35 TO RATE WHEN OTHER MOVE 0.30 TO RATE END-EVALUATE COMPUTE SHIPPING-CHARGES = RATE * SHIPPING-WEIGHT / 100.

13.

IF WEEKEND = YES IF ORCHESTRA = YES MOVE 48 TO TICKET-PRICE ELSE MOVE 36 TO TICKET-PRICE END-IF ELSE IF ORCHESTRA = YES MOVE 44 TO TICKET-PRICE ELSE MOVE 24 TO TICKET-PRICE END-IF END-IF DISPLAY TICKET PRICE = , TICKET-PRICE

14a.

000-MAIN-MODULE. PERFORM UNTIL ARE-THERE-MORE-RECORDS = NO READ ACCOUNT-FILE AT END MOVE NO TO ARE-THERE-MORE-RECORDS NOT AT END PERFORM 200-PROCESS-ACCOUNT END-READ END-PERFORM PERFORM 300-CALCULATE-PERCENT. 200-PROCESS-ACCOUNT. ADD 1 TO ACCOUNT-CTR IF BALANCE-IN > 100000 ADD 1 TO HIGH-BALANCE-CTR END-IF. 300-CALCULATE-PERCENT. IF ACCOUNT-CTR > 0 COMPUTE HIGH-BALANCE-PCT ROUNDED = 100 * HIGH-BALANCE-CTR / ACCOUNT-CTR ELSE MOVE 0 TO HIGH-BALANCE-PCT END-IF.

14b.

In module 200-PROCESS-ACCOUNT, replace the IF statement with: EVALUATE BALANCE-IN > 100000 WHEN TRUE ADD 1 TO HIGH-BALANCE-CTR END-EVALUATE.

15.

MOVE ZERO TO COUNTER. PERFORM 400-TABLE-RTN 10 TIMES. . . . 400-TABLE-RTN. ADD 1 TO COUNTER MOVE COUNTER TO POS1-OUT MULTIPLY COUNTER BY 2 GIVING POS2-OUT MULTIPLY COUNTER BY 3 GIVING POS3-OUT MULTIPLY COUNTER BY 4 GIVING POS4-OUT MULTIPLY COUNTER BY 5 GIVING POS5-OUT MULTIPLY COUNTER BY 6 GIVING POS6-OUT MULTIPLY COUNTER BY 7 GIVING POS7-OUT MULTIPLY COUNTER BY 8 GIVING POS8-OUT MULTIPLY COUNTER BY 9 GIVING POS9-OUT MULTIPLY COUNTER BY 10 GIVING POS10-OUT WRITE OUTPUT-REC FROM TABLE-LINE AFTER ADVANCING 1 LINE. 900-FINISH will be performed in cases b, e, g, and h. DIVIDE 2 INTO FLDA REMAINDER ANSWER IF ANSWER = 0 MOVE EVEN TO RESULT-OUT ELSE MOVE ODD TO RESULT-OUT END-IF. WORKING-STORAGE SECTION field definitions: 01 DATE-FIELDS. 05 BIRTH-DATE. 10 BIRTH-YEAR 10 BIRTH-MONTH 10 BIRTH-DAY 05 TODAYS-DATE. 10 TODAYS-YEAR 10 TODAYS-MONTH 10 TODAYS-DAY 10

16. 17.

18.

PIC 9(4). PIC 9(2). PIC 9(2). PIC PIC PIC PIC 9(4). 9(2). 9(2). X(13).

PROCEDURE DIVISION code: 100-DETERMINE-WHETHER-UNDER-25. DISPLAY 'ENTER A BIRTH DATE (YYYYMMDD): ' ACCEPT BIRTH-DATE MOVE FUNCTION CURRENT-DATE TO TODAYS-DATE EVALUATE TRUE WHEN TODAYS-YEAR - BIRTH-YEAR < 25 DISPLAY 'THIS PERSON IS UNDER 25' WHEN TODAYS-YEAR - BIRTH-YEAR = 25 PERFORM 200-COMPARE-MONTHS WHEN TODAYS-YEAR - BIRTH-YEAR > 25 DISPLAY 'THIS PERSON IS AT LEAST 25' END-EVALUATE. 200-COMPARE-MONTHS. EVALUATE TRUE WHEN BIRTH-MONTH < TODAYS-MONTH DISPLAY 'THIS PERSON IS AT LEAST 25' WHEN BIRTH-MONTH = TODAYS-MONTH PERFORM 300-COMPARE-DAYS WHEN BIRTH-MONTH > TODAYS-MONTH DISPLAY 'THIS PERSON IS UNDER 25' END-EVALUATE. 300-COMPARE-DAYS. EVALUATE TRUE WHEN BIRTH-DAY < TODAYS-DAY DISPLAY 'THIS PERSON IS AT LEAST 25' WHEN BIRTH-DAY = TODAYS-DAY DISPLAY 'HAPPY BIRTHDAY!' WHEN BIRTH-DAY > TODAYS-DAY DISPLAY 'THIS PERSON IS UNDER 25' END-EVALUATE.

19.

WORKING-STORAGE SECTION field definitions: 01 DATE-FIELDS. 05 DATE-OF-LAST-PAYMENT 05 INTEGER-DATE-OF-LAST-PAYMENT 05 DATE-PAYMENT-IS-DUE 05 INTEGER-DATE-PAYMENT-IS-DUE 05 SYSTEM-DATE-AND-TIME. 10 SYSTEM-CURRENT-DATE 10 PIC PIC PIC PIC 9(8). 9(8). 9(8). 9(8).

PIC 9(8). PIC X(13).

PROCEDURE DIVISION code: DISPLAY 'ENTER THE DATE OF LAST PAYMENT (YYYYMMDD): ' ACCEPT DATE-OF-LAST-PAYMENT MOVE FUNCTION INTEGER-OF-DATE (DATE-OF-LAST-PAYMENT) TO INTEGER-DATE-OF-LAST-PAYMENT ADD 90 TO INTEGER-DATE-OF-LAST-PAYMENT GIVING INTEGER-DATE-PAYMENT-IS-DUE MOVE FUNCTION DATE-OF-INTEGER (INTEGER-DATE-PAYMENT-IS-DUE) TO DATE-PAYMENT-IS-DUE MOVE FUNCTION CURRENT-DATE TO SYSTEM-DATE-AND-TIME IF DATE-PAYMENT-IS-DUE < SYSTEM-CURRENT-DATE DISPLAY 'THE PAYMENT IS OVERDUE' ELSE IF DATE-PAYMENT-IS-DUE = SYSTEM-CURRENT-DATE DISPLAY 'THE PAYMENT IS DUE TODAY' ELSE DISPLAY 'THE PAYMENT IS NOT YET DUE' END-IF END-IF.

20.

WORKING-STORAGE SECTION field definitions: 01 DATE-FIELDS. 05 DATE-OF-PURCHASE 05 INTEGER-DATE-OF-PURCHASE 05 DUE-DATE 05 INTEGER-DUE-DATE PIC PIC PIC PIC 9(8). 9(8). 9(8). 9(8).

PROCEDURE DIVISION code: DISPLAY 'ENTER THE DATE OF PURCHASE (YYYYMMDD): ' ACCEPT DATE-OF-PURCHASE MOVE FUNCTION INTEGER-OF-DATE (DATE-OF-PURCHASE) TO INTEGER-DATE-OF-PURCHASE ADD 30 TO INTEGER-DATE-OF-PURCHASE GIVING INTEGER-DUE-DATE MOVE FUNCTION DATE-OF-INTEGER (INTEGER-DUE-DATE) TO DUE-DATE DISPLAY 'THE PAYMENT IS DUE ON ' DUE-DATE.

Vous aimerez peut-être aussi