IDENTIFICATION DIVISION. PROGRAM-ID. PROGR3. * ENVIRONMENT DIVISION. CONFIGURATION SECTION. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ARQ1 ASSIGN TO DISK ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT ARQ2 ASSIGN TO DISK ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT ARQ3 ASSIGN TO DISK ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT ARQ4 ASSIGN TO DISK ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL. * DATA DIVISION. FILE SECTION. FD ARQ1 LABEL RECORD IS STANDARD VALUE OF FILE-ID IS "ARQ1.DAT". 01 REG1. 02 COD1 PIC 9(5). 02 NOM1 PIC x(30). 02 VR1 PIC 9(12)V99. FD ARQ2 LABEL RECORD IS STANDARD VALUE OF FILE-ID IS "ARQ2.DAT". 01 REG2. 03 COD2 PIC 9(5). 03 NOM2 PIC X(30). 03 VR2 PIC 9(12)v99. FD ARQ3 LABEL RECORD IS STANDARD VALUE OF FILE-ID IS "ARQ3.DAT". 01 REG3. 02 COD3 PIC 9(5). 02 NOM3 PIC x(30). 02 VR3 PIC 9(12)V99. FD ARQ4 LABEL RECORD IS STANDARD VALUE OF FILE-ID IS "ARQ4.DAT". 01 REG4. 02 COD4 PIC 9(5). 02 NUM4 PIC x(30). 02 VR4 PIC 9(12)V99. WORKING-STORAGE SECTION. 01 CT1 PIC 9. 01 CT2 PIC 9(1). 01 CT3 PIC 9(1). PROCEDURE DIVISION. INICIO. OPEN INPUT ARQ1 ARQ2 ARQ3. OPEN OUTPUT ARQ4. MOVE 0 TO CT1 CT2 CT3. R5. IF CT1 = 0 THEN READ ARQ1 AT END MOVE 9 TO CT1 MOVE 99999 TO COD1 GO TO R2. MOVE 1 TO CT1. R2. IF CT2 = 0 THEN READ ARQ2 AT END MOVE 9 TO CT2 MOVE 99999 TO COD2 GO TO R3. MOVE 1 TO CT2. R3. IF CT3 = 0 THEN READ ARQ3 AT END MOVE 9 TO CT3 MOVE 99999 TO COD3 GO TO R4. MOVE 1 TO CT3. R4. IF CT1 = 9 OR CT2 = 9 OR CT3 = 9 THEN EXIT PROGRAM. ELSE IF COD1 = COD2 AND COD1 = COD3 THEN MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 COMPUTE VR4 = VR1 + VR2 + VR3 WRITE REG4 MOVE 0 TO CT1 CT2 CT3 ELSE IF COD1 = COD2 THEN MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 COMPUTE VR4 = VR1 + VR2 WRITE REG4 MOVE 0 TO CT1 CT2 ELSE IF COD1 = COD3 THEN MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 COMPUTE VR4 = VR1 + VR3 WRITE REG4 MOVE 0 TO CT1 CT3 ELSE IF COD2 = COD3 THEN MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 COMPUTE VR4 = VR2 + VR3 WRITE REG4 MOVE 0 TO CT2 CT3 ELSE IF COD1 = COD3 THEN MOVE COD1 TO COD4 MOVE NOM1 TO COD4 COMPUTE VR4 = VR1 + VR3 WRITE REG4 MOVE 0 TO CT1 CT3 ELSE IF COD1 = COD2 AND COD2 = COD3 THEN MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 COMPUTE VR4 = VR1 + VR2 + VR3 MOVE 0 TO CT1 CT2 CT3 ELSE IF COD1 < COD2 THEN IF COD3 < COD1 THEN MOVE COD3 TO COD4 MOVE NOM3 TO NUM4 MOVE VR3 TO VR4 WRITE REG4 MOVE 0 TO CT3 ELSE MOVE COD1 TO COD4 MOVE NOM1 TO NUM4 MOVE VR1 TO VR4 WRITE REG4 MOVE 0 TO CT1 END-IF ELSE IF COD2 < COD3 THEN MOVE COD2 TO COD4 MOVE NOM2 TO NUM4 MOVE VR2 TO VR4 WRITE REG4 MOVE 0 TO CT2 ELSE MOVE COD3 TO COD4 MOVE NOM3 TO NUM4 MOVE VR3 TO VR4 WRITE REG4 MOVE 0 TO CT3 END-IF. END-IF. GO TO R5.
Abaixo está o código LST:
B.COB Fri Mar 23 13:05:45 2012 Page 1 line number source line Microsoft COBOL Version 2.20 1 IDENTIFICATION DIVISION. 2 PROGRAM-ID. PROGR3. 3 * 4 ENVIRONMENT DIVISION. 5 CONFIGURATION SECTION. 6 DECIMAL-POINT IS COMMA. 7 INPUT-OUTPUT SECTION. 8 FILE-CONTROL. 9 SELECT ARQ1 ASSIGN TO DISK 10 ORGANIZATION IS SEQUENTIAL 11 ACCESS MODE IS SEQUENTIAL. 12 SELECT ARQ2 ASSIGN TO DISK 13 ORGANIZATION IS SEQUENTIAL 14 ACCESS MODE IS SEQUENTIAL. 15 SELECT ARQ3 ASSIGN TO DISK 16 ORGANIZATION IS SEQUENTIAL 17 ACCESS MODE IS SEQUENTIAL. 18 SELECT ARQ4 ASSIGN TO DISK 19 ORGANIZATION IS SEQUENTIAL 20 ACCESS MODE IS SEQUENTIAL. 21 22 * 23 DATA DIVISION. 24 FILE SECTION. 25 FD ARQ1 26 LABEL RECORD IS STANDARD 27 VALUE OF FILE-ID IS "ARQ1.DAT". 28 01 REG1. 29 02 COD1 PIC 9(5). 30 02 NOM1 PIC x(30). 31 02 VR1 PIC 9(12)V99. 32 FD ARQ2 33 LABEL RECORD IS STANDARD 34 VALUE OF FILE-ID IS "ARQ2.DAT". 35 01 REG2. 36 03 COD2 PIC 9(5). 37 03 NOM2 PIC X(30). 38 03 VR2 PIC 9(12)v99. 39 FD ARQ3 40 LABEL RECORD IS STANDARD 41 VALUE OF FILE-ID IS "ARQ3.DAT". 42 01 REG3. 43 02 COD3 PIC 9(5). 44 02 NOM3 PIC x(30). 45 02 VR3 PIC 9(12)V99. 46 FD ARQ4 47 LABEL RECORD IS STANDARD 48 VALUE OF FILE-ID IS "ARQ4.DAT". 49 01 REG4. 50 02 COD4 PIC 9(5). 51 02 NUM4 PIC x(30). 52 02 VR4 PIC 9(12)V99. 53 WORKING-STORAGE SECTION. 54 01 CT1 PIC 9. 55 01 CT2 PIC 9(1). 56 01 CT3 PIC 9(1). 57 B.COB Fri Mar 23 13:05:45 2012 Page 2 line number source line Microsoft COBOL Version 2.20 58 PROCEDURE DIVISION. 59 INICIO. 60 OPEN INPUT ARQ1 ARQ2 ARQ3. 61 OPEN OUTPUT ARQ4. 62 MOVE 0 TO CT1 CT2 CT3. 63 R5. 64 IF CT1 = 0 THEN 65 READ ARQ1 AT END 66 MOVE 9 TO CT1 67 MOVE 99999 TO COD1 68 GO TO R2. 69 MOVE 1 TO CT1. 70 R2. 71 IF CT2 = 0 THEN 72 READ ARQ2 AT END 73 MOVE 9 TO CT2 74 MOVE 99999 TO COD2 75 GO TO R3. 76 MOVE 1 TO CT2. 77 R3. 78 IF CT3 = 0 THEN 79 READ ARQ3 AT END 80 MOVE 9 TO CT3 81 MOVE 99999 TO COD3 82 GO TO R4. 83 MOVE 1 TO CT3. 84 R4. 85 IF CT1 = 9 OR CT2 = 9 OR CT3 = 9 THEN 86 EXIT PROGRAM. 87 ELSE 88 IF COD1 = COD2 AND COD1 = COD3 THEN 89 MOVE COD1 TO COD4 90 MOVE NOM1 TO NUM4 91 COMPUTE VR4 = VR1 + VR2 + VR3 92 WRITE REG4 93 MOVE 0 TO CT1 CT2 CT3 94 ELSE 95 IF COD1 = COD2 THEN 96 MOVE COD1 TO COD4 97 MOVE NOM1 TO NUM4 98 COMPUTE VR4 = VR1 + VR2 99 WRITE REG4 100 MOVE 0 TO CT1 CT2 101 ELSE 102 IF COD1 = COD3 THEN 103 MOVE COD1 TO COD4 104 MOVE NOM1 TO NUM4 105 COMPUTE VR4 = VR1 + VR3 106 WRITE REG4 107 MOVE 0 TO CT1 CT3 108 ELSE 109 IF COD2 = COD3 THEN 110 MOVE COD1 TO COD4 111 MOVE NOM1 TO NUM4 112 COMPUTE VR4 = VR2 + VR3 113 WRITE REG4 114 MOVE 0 TO CT2 CT3 B.COB Fri Mar 23 13:05:45 2012 Page 3 line number source line Microsoft COBOL Version 2.20 115 ELSE 116 IF COD1 = COD3 THEN 117 MOVE COD1 TO COD4 118 MOVE NOM1 TO COD4 119 COMPUTE VR4 = VR1 + VR3 120 WRITE REG4 121 MOVE 0 TO CT1 CT3 122 ELSE 123 IF COD1 = COD2 AND COD2 = COD3 THEN 124 MOVE COD1 TO COD4 125 MOVE NOM1 TO NUM4 126 COMPUTE VR4 = VR1 + VR2 + VR3 127 MOVE 0 TO CT1 CT2 CT3 128 ELSE 129 IF COD1 < COD2 THEN 130 IF COD3 < COD1 THEN 131 MOVE COD3 TO COD4 132 MOVE NOM3 TO NUM4 133 MOVE VR3 TO VR4 134 WRITE REG4 135 MOVE 0 TO CT3 136 ELSE 137 MOVE COD1 TO COD4 138 MOVE NOM1 TO NUM4 139 MOVE VR1 TO VR4 140 WRITE REG4 141 MOVE 0 TO CT1 142 END-IF 143 ELSE 144 IF COD2 < COD3 THEN 145 MOVE COD2 TO COD4 146 MOVE NOM2 TO NUM4 147 MOVE VR2 TO VR4 148 WRITE REG4 149 MOVE 0 TO CT2 150 ELSE 151 MOVE COD3 TO COD4 152 MOVE NOM3 TO NUM4 153 MOVE VR3 TO VR4 154 WRITE REG4 155 MOVE 0 TO CT3 156 END-IF. 157 END-IF. 158 GO TO R5. 0006:Area A violation; resumption at next paragraph/section/division/verb. IS 0064:Statement deleted due to erroneous syntax. THEN 0071:Statement deleted due to erroneous syntax. THEN 0078:Statement deleted due to erroneous syntax. THEN 0085:Statement deleted due to erroneous syntax. THEN 0087:A paragraph declaration is required here. ELSE 0087:Unrecognizable element is ignored. ELSE 0088:Statement deleted due to erroneous syntax. THEN 0094:Unrecognizable element is ignored. ELSE 0095:Statement deleted due to erroneous syntax. THEN 0101:Unrecognizable element is ignored. ELSE 0102:Statement deleted due to erroneous syntax. THEN 0108:Unrecognizable element is ignored. ELSE B.COB Fri Mar 23 13:05:45 2012 Page 4 line number source line Microsoft COBOL Version 2.20 0109:Statement deleted due to erroneous syntax. THEN 0115:Unrecognizable element is ignored. ELSE 0116:Statement deleted due to erroneous syntax. THEN 0122:Unrecognizable element is ignored. ELSE 0123:Statement deleted due to erroneous syntax. THEN 0128:Unrecognizable element is ignored. ELSE 0129:Statement deleted due to erroneous syntax. THEN 0130:Statement deleted due to erroneous syntax. THEN 0136:Unrecognizable element is ignored. ELSE 0142:Unrecognizable element is ignored. END-IF 0143:Unrecognizable element is ignored. ELSE 0144:Statement deleted due to erroneous syntax. THEN 0150:Unrecognizable element is ignored. ELSE 0156:Unrecognizable element is ignored. END-IF 0157:Unrecognizable element is ignored. END-IF 0001:/F/File never closed. 0002:/F/File never closed. 0003:/F/File never closed. 0004:/F/File never closed. 32 errors or warnings Data area size = 924 Code area size = 1142