Figure 9.9 01 STUDENT-RECORD. 05 STUDENT-NAME 05 SOCIAL-SECURITY-NUM 05 STUDENT-ADDRESS. 10 STREET 10 CITY-STATE 05 ZIP-CODE 05 CREDITS 05 MAJOR 05 FILLER Duplicate Data Names PIC X(20). PIC 9(9). PIC X(15). PIC X(15). PIC X(5). PIC 9(3). PIC X(10). PIC X(3). . . . 01 PRINT-LINE. 05 STUDENT-NAME 05 FILLER 05 CREDITS 05 FILLER 05 TUITION 05 FILLER 05 STUDENT-ADDRESS. 10 STREET 10 CITY-STATE 10 ZIP-CODE 05 FILLER 05 SOCIAL-SECURITY-NUM 05 FILLER PIC X(20). PIC XX. PIC 9(3). PIC XX. PIC $$,$$9.99. PIC XX. PIC X(15). PIC X(15). PIC X(5). PIC XX. PIC 999B99B9999. PIC X(47). (a) Duplicate Data Names Figure 9.9 Duplicate Data Names MOVE CORRESPONDING STUDENT-RECORD TO PRINT-LINE (b) MOVE CORRESPONDING Statement MOVE STUDENT-NAME OF STUDENT-RECORD TO STUDENT-NAME OF PRINT-LINE. MOVE SOCIAL-SECURITY-NUM OF STUDENT-RECORD TO SOCIAL-SECURITY-NUM OF PRINT-LINE. MOVE STREET OF STUDENT-RECORD TO STREET OF PRINT-LINE. MOVE CITY-STATE OF STUDENT-RECORD TO CITY-STATE OF PRINT-LINE. MOVE CREDITS OF STUDENT-RECORD TO CREDITS OF PRINT-LINE. (c) Equivalent MOVE Statements The Iteration Structure A TRUE CONDITION? A FALSE CONDITION? FALSE TRUE (a) DO WHILE Construct (b) DO UNTIL Construct The PERFORM Verb • Structured Programming uses iteration as an integral part of its main constructs. • In COBOL the PERFORM statement handles all the different iterations. • We will discuss the different variations of the Perform. • But first, how do we define a paragraph 000-MAIN-MODULE. PERFORM 100-INITIALIZATION-RTN. PERFORM 200-PROCESS-SCREEN-RECORD-RTN UNTIL WS-FUNCTION-KEY-03. PERFORM 300-TERMINATION-RTN. STOP RUN. 100-INITIALIZATION-RTN. OPEN I-O DISPLAY-FILE INPUT EMPLOYEE-PAY-FILE. WRITE DISPLAY-RECORD FORMAT IS 'SCREEN1'. READ DISPLAY-FILE RECORD. 200-PROCESS-SCREEN-RECORD-RTN. MOVE SN1-EMPLOYEE-NUMBER TO EP-EMPLOYEE-NUMBER. READ EMPLOYEE-PAY-FILE Paragraph Scope The scope of ‘100-INITIALIZATION-RTN’ is delimited by the occurrence of the paragraph name ‘200-PROCESS-SCREEN-RECORD-RTN’. PERFORM statement formats • • • Basic PERFORM PERFORM . . . TIMES phrase. PERFORM . . . UNTIL phrase. • PERFORM . . .VARYING phrase.. PERFORM variation examples • PERFORM 1000-INITIALIZATION-RTN (THRU 100-EXIT). • PERFORM 420-PRINT-RTN 2 TIMES. • PERFORM 2000-PROCESS-SCREEN-RECORD-RTN • UNTIL WS-FUNCTION-KEY-03. • PERFORM 300-PRINT-RTN • VARYING SUB FROM 1 BY 1 UNTIL SUB > 12 • • • • PERFORM UNTIL END-OF-FILE-SWITCH = 'YES’ . . . . . . END-PERFORM. The Basic Peform THRU PERFORM 1stProc EndProc THROUGH • This is the only type of PERFORM that is not an iteration construct. • It instructs the computer to transfer control to an out-of-line block of code. • When the end of the block is reached, control reverts to the statement (not the sentence) immediately following the PERFORM. • 1stProc and EndProc are the names of Paragraphs or Sections. • The PERFORM..THRU instructs the computer to treat the Paragraphs or Sections from 1stProc TO EndProc as a single block of code. Keep them in line when possible • The out-of-line Perform • The in-line Perform • Avoid GO TOs Figure 9.2 Structure of a COBOL Program READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH. PERFORM PROCESS-RECORDS UNTIL DATA-REMAINS-SWITCH = ‘NO’. PROCESS-RECORDS. . Procedure Division statements to process the current record . . READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH. (a) Priming Read PERFORM UNTIL DATA-REMAINS-SWITCH = ‘NO’ READ INPUT-FILE AT END MOVE ‘NO’ TO DATA-REMAINS-SWITCH NOT AT END . Procedure Division statements to process the current record . . END-READ END-PERFORM. (b) False Condition Branch with In-Line Perform EVALUATE Statement Implements the Case Structure • In many cases nested IF statements can be replaced by an EVALUATE statement. • The EVALUATE statement evaluates multiple conditions and a particular action is taken depending on the results of these evaluations. IF Syntax. StatementBlock IF Condition THEN NEXT SENTENCE StatementBlock END - IF ELSE NEXT SENTENCE CONDITION TYPES • • • Simple Conditions – Relation Conditions – Class Conditions – Sign Conditions Complex Conditions Condition Names The Evaluate statement • EVALUATE TRUE • WHEN STU-CREDITS <= 1ST-CREDIT-LIMIT • MOVE 1ST-ACTIVITY-FEE TO IND-ACTIVITY-FEE • WHEN STU-CREDITS > 1ST-CREDIT-LIMIT • AND STU-CREDITS <= 2ND-CREDIT-LIMIT • MOVE 2ND-ACTIVITY-FEE TO IND-ACTIVITY-FEE • WHEN STU-CREDITS > 2ND-CREDIT-LIMIT • MOVE 3RD-ACTIVITY-FEE TO IND-ACTIVITY-FEE • WHEN OTHER • DISPLAY 'INVALID CREDITS FOR: ' STU-NAME • END-EVALUATE. • Check pgm Tuition5 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • EVALUATE MENU-INPUT WHEN "0" PERFORM INIT-PROC WHEN "1" THRU "9" PERFORM PROCESS-PROC WHEN "R" PERFORM READ-PARMS WHEN "X" PERFORM CLEANUP-PROC WHEN OTHER PERFORM ERROR-PROC END-EVALUATE. Equivalent Nested If’s IF (MENU-INPUT = "0") THEN PERFORM INIT-PROC ELSE IF (MENU-INPUT ° "1") AND (MENU-INPUT ° "9") THEN PERFORM PROCESS-PROC ELSE IF (MENU-INPUT = "R") THEN PERFORM READ-PARMS ELSE IF (MENU-INPUT = "X") THEN PERFORM CLEANUP-PROC ELSE PERFORM ERROR-PROC END-IF END-IF END-IF END-IF. Why all these varieties? • Did you hear about the Law of the Hammer • If the only tool you have is a hammer you will always try pounding as the best and only solution
© Copyright 2024 Paperzz