This chapter contains sample macros you can use to customize APS.
This sample macro uses the % IF structure to build a program that tests records for any specific character and replaces some occurrences of it with any other specific character, depending on the character's mode (for example, whether the character appears as a leading or trailing character, or anywhere). The variables that control what you search for and replace with (and the length of the record read) appear at the top of the program. Thus, you can use this macro many different times for many different purposes simply by changing the values of a few variables.
% &MODE = 'TRAILING' 201.
% &REC-LEN = 121 202.
% &TEST-CHR = 'SPACE' 203.
% &REPLACE-CHR = 'ZERO' 204.
IDENTIFICATION DIVISION. 205.
PROGRAM-ID. EXAMPLE2. 206.
*SPECIAL CONSIDERATIONS. 207.
* SAMPLE PROGRAM TO READ RECS WHOSE LENGTH IS DETERMINED AT 208.
* AT COMPILE-TIME & REPLACE SOME OCCURRENCES OF TEST-CHR 209.
* BY THE REPLACE-CHR (BOTH TO BE SET AT COMPILE-TIME). 210.
* REPLACEMENT MODE USED (LEADING, TRAILING, OR ALL) 211.
* IS SET AT COMPILE-TIME. 212.
213.
ENVIRONMENT DIVISION. 214.
INPUT-OUTPUT SECTION. 215.
FILE-CONTROL. 216.
SELECT INPUT-FILE ASSIGN-UT-S-INPUT. 217.
SELECT OUTPUT-FILE ASSIGN-UT-S-OUTPUT. 218.
219.
DATA DIVISION. 220.
FILE SECTION. 221.
222.
FD INPUT-FILE 223.
BLOCK CONTAINS 0 RECORDS 224.
LABEL RECORDS ARE STANDARD. 225.
01 INPUT-RECORD PIC X(&REC-LEN). 226.
227.
FD OUTPUT-FILE 228.
BLOCK CONTAINS 0 RECORDS 229.
LABEL RECORDS ARE STANDARD. 230.
01 OUTPUT-RECORD PIC X(&REC-LEN). 231.
232.
WORKING-STORAGE SECTION. 233.
234.
01 WS-RECORD. 235.
02 WS-CHR PIC X OCCURS &REC-LEN. 236.
237.
01 II PIC S9(3) COMP SYNC. 238.
239.
PROCEDURE DIVISION. 240.
241.
OPEN INPUT INPUT-FILE 242.
OPEN OUTPUT OUTPUT-FILE 243.
244.
REPEAT 245.
READ INPUT-FILE INTO WS-RECORD 246.
UNTIL AT END ON INPUT-FILE 247.
% IF &MODE = 'LEADING' 248.
REPEAT VARYING II FROM 1 BY 1 249.
UNTIL II > &REC-LEN 250.
... OR WS-CHR (II) NOT = &TEST-CHR 251.
WS-CHR (II) = &REPLACE-CHAR 252.
% ELSE-IF &MODE = 'TRAILING' 253.
REPEAT VARYING II FROM &REC-LEN BY -1 254.
UNTIL II < 1 255.
... OR WS-CHR (II) NOT = &TEST-CHR 256.
WS-CHR (II) = &REPLACE-CHAR 257.
% ELSE-IF &MODE = 'ALL' 258.
REPEAT VARYING II FROM 1 BY 1 259.
UNTIL II > &REC-LEN 260.
IF WS-CHR (II) = &TEST-CHR 261.
WS-CHR (II) = &REPLACE-CHAR 262.
% ELSE 263.
DISPLAY "PARAMETER ERROR IMPROPER MODE:" &MODE 264.
265.
WRITE OUTPUT-RECORD FROM WS-RECORD 266.
267.
CLOSE INPUT-FILE OUTPUT-FILE 268.
020500 IDENTIFICATION DIVISION. 205. 020600 PROGRAM-ID. EXAMPLE2. 206. 020700*SPECIAL CONSIDERATIONS. 207. 020800* PROGRAM TO READ RECS WHOSE LENGTH IS DETERMINED AT 208. 020900* COMPILE-TIME & REPLACE SOME OCCURRENCES OF TEST-CHR 209. 021000* BY THE REPLACE-CHR (BOTH TO BE SET AT COMPILE-TIME). 210. 021100* REPLACEMENT MODE USED (LEADING, TRAILING OR ALL) 211. 021200* IS SET AT COMPILE-TIME. 212. 021300 213. 021400 ENVIRONMENT DIVISION. 214. 021500 INPUT-OUTPUT SECTION. 215. 021600 FILE-CONTROL. 216. 021700 SELECT INPUT-FILE ASSIGN UT-S-INPUT. 217. 021800 SELECT OUTPUT-FILE ASSIGN UT-S-OUTPUT. 218. 021900 219. 022000 DATA DIVISION. 220. 022100 FILE SECTION. 221. 022200 222. 022300 FD INPUT-FILE 223. 022400 BLOCK CONTAINS 0 RECORDS 224. 022500 LABEL RECORDS ARE STANDARD. 225. 022600 01 INPUT-RECORD PIC X(121). 226. 022700 227. 022800 FD OUTPUT-FILE 228. 022900 BLOCK CONTAINS 0 RECORDS 229. 023000 LABEL RECORDS ARE STANDARD. 230. 023100 01 OUTPUT-RECORD PIC X(121). 231. 023200 232. 023300 WORKING-STORAGE SECTION. 233. 023400 234. 023500 01 WS-RECORD. 235. 023600 02 WS-CHR PIC X OCCURS 121. 236. 023700 237. 023800 01 II PIC S9(3) COMP SYNC. 238. 023900 239. 024000 PROCEDURE DIVISION. 240. 024100 241. 024200 OPEN INPUT INPUT-FILE 242. 024300 OPEN OUTPUT OUTPUT-FILE 243. 024400 244. 024500 REPEAT 245. 024600 READ INPUT-FILE INTO WS-RECORD 246. 024700 UNTIL AT END ON INPUT-FILE 247. 025400 REPEAT VARYING II FROM 121 BY -1 254. 025500 UNTIL II < 1 255. 025600 ... OR WS-CHR (II) NOT = SPACE 256. 025700 WS-CHR (II) = ZERO 257. 026600 WRITE OUTPUT-RECORD FROM WS-RECORD 266. 026700 267. 026800 CLOSE INPUT-FILE OUTPUT-FILE 268.
This program calls two user macros that use loops to create a data structure. A loop that incorporates built-in functions returns a value to text.
%* HERE ARE TWO MACROS: $ITEM-MAKER AND $TABLE-MAKER 601.
602.
% DEFINE $ITEM-MAKER( &MM, &DATANAME, &TAIL) 603.
% &II = 1 604.
% WHILE &II <= &MM 605.
02 &DATANAME+-&II &40+PIC &TAIL. 606.
% &II = &II + 1 607.
% END 608.
609.
% DEFINE $TABLE-MAKER( &MM, &NN, &TNAME, &INAME, &TAIL) 610.
% &II = 1 611.
% WHILE &II <= &MM 612.
02 &TNAME+-&II. 613.
% &JJ = 1 614.
% UNTIL &JJ > &NN 615.
% BEGIN 616.
03 &INAME+-&II+-&JJ &40+PIC &TAIL. 617.
% &JJ = &JJ + 1 618.
% &II = &II + 1 619.
% END 620.
621.
% SET BLANK 622.
IDENTIFICATION DIVISION. 623.
PROGRAM-ID. EXAMPLE6. 624.
*SPECIAL CONSIDERATIONS. 625.
* DEMONSTRATE LOOPING. 626.
627.
--------------------------------------- 628.
--------------------------------------- 629.
630.
WORKING-STORAGE SECTION. 631.
632.
01 TEST-RECORD. 633.
$ITEM-MAKER( 12, 'TEST-ITEM', 'S9(9) COMP SYNC VALUE -1') 634.
$TABLE-MAKER( 3, 4, 'ENTRY', 'ITEM', 'X(4) VALUE SPACES') 635.
% &STR = 'MISSISSIPPI' 637.
% &SUB = 'IS' 638.
% &II = 0 639.
% REPEAT 640.
% &JJ = &INDEX( &STR, &SUB) 641.
% UNTIL &JJ = 0 642.
% &II = &II + 1 643.
% &JJ = &JJ + &LENGTH( &SUB) 644.
% &STR = &SUBSTR( &STR, &JJ) 645.
THE NUMBER OF 'IS' IN 'MISSISSIPPI' IS &II. 646.
647.
062300 IDENTIFICATION DIVISION. 623. 062400 PROGRAM-ID. EXAMPLE6. 624. 062500*SPECIAL CONSIDERATIONS. 625. 062600* DEMONSTRATE LOOPING. 626. 062700 627. 062800 ----------------------------------- 628. 062900 ----------------------------------- 629. 063000 630. 063100 WORKING-STORAGE SECTION. 631. 063200 632. 063300 01 TEST-RECORD. 633. 063400 02 TEST-ITEM-1 PIC S9(9) COMP SYNC VALUE -1. 634. 063402 02 TEST-ITEM-2 PIC S9(9) COMP SYNC VALUE -1. 623. 063404 02 TEST-ITEM-3 PIC S9(9) COMP SYNC VALUE -1. 634. 063406 02 TEST-ITEM-4 PIC S9(9) COMP SYNC VALUE -1. 634. 063408 02 TEST-ITEM-5 PIC S9(9) COMP SYNC VALUE -1. 634. 063410 02 TEST-ITEM-6 PIC S9(9) COMP SYNC VALUE -1. 634. 063412 02 TEST-ITEM-7 PIC S9(9) COMP SYNC VALUE -1. 634. 063414 02 TEST-ITEM-8 PIC S9(9) COMP SYNC VALUE -1. 634. 063416 02 TEST-ITEM-9 PIC S9(9) COMP SYNC VALUE -1. 634. 063418 02 TEST-ITEM-10 PIC S9(9) COMP SYNC VALUE -1. 634. 063420 02 TEST-ITEM-11 PIC S9(9) COMP SYNC VALUE -1. 634. 063422 02 TEST-ITEM-12 PIC S9(9) COMP SYNC VALUE -1. 634. 063500 02 ENTRY-1. 635. 063502 03 ITEM-1-1 PIC X(4) VALUE SPACES. 635. 063504 03 ITEM-1-2 PIC X(4) VALUE SPACES. 635. 063506 03 ITEM-1-3 PIC X(4) VALUE SPACES. 635. 063508 03 ITEM-1-4 PIC X(4) VALUE SPACES. 635. 063510 02 ENTRY-2. 635. 063512 03 ITEM-2-1 PIC X(4) VALUE SPACES. 635. 063514 03 ITEM-2-2 PIC X(4) VALUE SPACES. 635. 063516 03 ITEM-2-3 PIC X(4) VALUE SPACES. 635. 063518 03 ITEM-2-4 PIC X(4) VALUE SPACES. 635. 063520 02 ENTRY-3. 635. 063522 03 ITEM-3-1 PIC X(4) VALUE SPACES. 635. 063524 03 ITEM-3-2 PIC X(4) VALUE SPACES. 635. 063526 03 ITEM-3-3 PIC X(4) VALUE SPACES. 635. 063528 03 ITEM-3-4 PIC X(4) VALUE SPACES. 635. 063600 636. 064600 THE NUMBER OF 'IS' IN 'MISSISSIPPI' IS 2. 646. 064700 647.
%* HERE IS THE MACRO $DAYDEF 501.
502.
% DEFINE $DAYDEF( &DAY) 506.
% &PREFIX = &SUBSTR( &DAY, 1, 24) 507.
% &CHR = &SUBSTR( &PREFIX, 24) 508.
% IF &CHR = '-' 509.
% &PREFIX = &SUBSTR( &PREFIX, 1, 23) 510.
% &SUFFIX = '-ENTRY' 511.
% &DAYCTR = &DAYCTR + 1 512.
02 &PREFIX&SUFFIX. 513.
03 FILLER &40+PIC S9(2) COMP SYNC VALUE +&LENGTH( &DAY).514.
% IF &LENGTH( &DAY) <= 16 515.
03 FILLER &40+PIC X(30) VALUE &QT&DAY&QT. 516.
% ELSE 517.
03 FILLER &40+PIC X(30) VALUE 518.
&40+&QT&DAY&QT. 519.
% END 520.
521.
% &DAYCTR = 0 522.
% &QT = "'" 523.
524.
% SET BLANK 525.
IDENTIFICATION DIVISION. 526.
PROGRAM-ID. EXAMPLE&INDEX( 'ABCDEFG', 'EF'). 527.
DATE-COMPILED. &COMPILETIME. 528.
*SPECIAL CONSIDERATIONS. 529.
* A PIECE OF A SAMPLE PROGRAM TO DEMONSTRATE SOME 530.
* OF THE MACRO FACILITY BUILT-IN FUNCTIONS. 531.
532.
-- 533.
-- 534.
535.
WORKING-STORAGE SECTION. 536.
537.
01 DAY-TABLE. 538.
$DAYDEF( 'SUNDAY') 539.
$DAYDEF( 'MONDAY') 540.
$DAYDEF( 'TUESDAY') 541.
$DAYDEF( 'WEDNESDAY') 542.
$DAYDEF( 'THURSDAY') 543.
$DAYDEF( 'FRIDAY') 544.
$DAYDEF( 'A-LARGE-SYMBOL-TO-CHECK-DAYDEF') 545.
01 DAY-TABLE-REDEF REDEFINES DAY-TABLE. 546.
02 DAY-ENTRY OCCURS &DAYCTR. 547.
03 DAY-LEN PIC S9(2) COMP SYNC. 548.
03 DAY-BOL PIC X(30). 549.
550.
PROCEDURE DIVISION. 551.
552.
-- 553.
-- 554.
052300 IDENTIFICATION DIVISION. 526. 052400 PROGRAM-ID. EXAMPLE5. 527. 052500 DATE-COMPILED. 22 OCT 79 14.24.00. 528. 052600*SPECIAL CONSIDERATIONS. 529. 052700* A PIECE OF A SAMPLE PROGRAM TO DEMONSTRATE SOME 530. 052800* OF THE MACRO FACILITY BUILT-IN FUNCTIONS. 531. 052900 532. 053000 -- 533. 053100 -- 534. 053200 535. 053300 WORKING-STORAGE SECTION. 536. 053400 537. 053500 01 DAY-TABLE. 538. 053600 02 SUNDAY-ENTRY. 539. 053602 03 FILLER PIC S9(2) COMP SYNC VALUE +6 539. 053604 03 FILLER PIC X(30) VALUE 'SUNDAY'. 539. 053700 02 MONDAY-ENTRY. 540. 053702 03 FILLER PIC S9(2) COMP SYNC VALUE +6. 540. 053704 03 FILLER PIC X(30) VALUE 'MONDAY'. 540. 053800 02 TUESDAY-ENTRY. 541. 053802 03 FILLER PIC S9(2) COMP SYNC VALUE +7. 541. 053804 03 FILLER PIC X(30) VALUE 'TUESDAY'. 541. 053900 02 WEDNESDAY-ENTRY. 542. 053902 03 FILLER PIC S9(2) COMP SYNC VALUE +9. 542. 053904 03 FILLER PIC X(30) VALUE 'WEDNESDAY'. 542. 054000 02 THURSDAY-ENTRY. 543. 054002 03 FILLER PIC S9(2) COMP SYNC VALUE +8. 543. 054004 03 FILLER PIC X(30) VALUE 'THURSDAY'. 543. 054100 02 FRIDAY-ENTRY. 544. 054102 03 FILLER PIC S9(2) COMP SYNC VALUE +6. 544. 054104 03 FILLER PIC X(30) VALUE 'FRIDAY'. 544. 054200 02 A-LARGE-SYMBOL-TO-CHECK-ENTRY. 545. 054202 03 FILLER PIC S9(2) COMP SYNC VALUE +30.545. 054204 03 FILLER PIC X(30) VALUE 545. 054206 'A-LARGE-SYMBOL-TO-CHECK-DAYDEF'.545. 054300 01 DAY-TABLE-REDEF REDEFINES DAY-TABLE. 546. 054400 02 DAY-ENTRY OCCURS 7. 547. 054500 03 DAY-LEN PIC S9(2) COMP SYNC. 548. 054600 03 DAY-BOL PIC X(30). 549. 054700 550. 054800 PROCEDURE DIVISION. 551. 054900 552. 055000 -- 553. 055100 -- 554.
$DAYDEF uses the built-in functions &SUBSTR and &LENGTH to build a data structure for a table. $DAYDEF builds for each table entry an 02-level data name and provides the values of the VALUE clauses of the two 03-level entries that follow it. The 02-level data name is constructed as &PREFIX&SUFFIX.
The value of &SUFFIX for each macro call is the literal string -ENTRY.
The value of &PREFIX is supplied by the formal argument &DAY which receives its value from a macro call to $DAYDEF. For example, the first macro call in the program gives the value SUNDAY to &DAY. The built-in function &SUBSTR checks this value and dictates that up to 24 characters will be accepted (values longer than 24 characters are truncated). On the next line, &SUBSTR checks to see whether the 24th character (if there is one) is a hyphen. If it is a hyphen, only 23 characters are used in order to prevent a double hyphen which would be undesirable (for example, you don't want a hyphen from the name followed by the hyphen of the suffix -ENTRY). SUNDAY is only 6 characters long, so the entire value is accepted as the value for &PREFIX. Thus the value of &PREFIX&SUFFIX for the first call is SUNDAY-ENTRY.
Now $DAYDEF provides the values of the VALUE clauses of the two 03-level data elements for SUNDAY-ENTRY. In the first 03 element, VALUE +&LENGTH( &DAY) becomes VALUE +6 because the value of &DAY (which is SUNDAY) is 6 characters long. The plus symbol is recognized as the COBOL plus symbol because there is a space before it. (In contrast, the plus symbol in &40+PIC is recognized as a Customization Facility column indicator, which in this case means "Put the PIC clause in column 41.")
Line 515 checks to see whether the length of the values of &DAY can fit all on one line (for example, whether it is 16 characters maximum). If it can fit, its format is the one on line 516 (remember: the line will shift under the % IF statement during processing). If it cannot fit, its format is the two-line format on lines 518-519.
This example illustrates the use of program location statements and in-line macros. In addition to showing macros, program input and the resultant Customization Facility output, this example goes one step further and shows the program after APS Precompiler processing.
1. % DEFINE $IN-LINE( &ARG) 2. COUNTER = &ARG 3. % &IN-LINE = &ARG 4. % END 5. % DEFINE $MY-EPILOGUE 6. % * MARK COLUMN 7 MARGIN 7. % SET LINKAGE 8. 01 MY-EPILOGUE-CHR &40+PIC X. 9. % SET PROCEDURE 10. COUNTER = 100 11. % SET EPILOGUE $SECOND-EPILOGUE 12. % DEFINE $SECOND-EPILOGUE 13. % BEGIN 14. COUNTER = 101 15. % SET EPILOGUE $MY-EPILOGUE
16. % SET EVAL-BRACKETS "<>" 17. IDENTIFICATION DIVISION. 18. PROGRAM-ID. 19. EXAMPLE9. 20. ENVIRONMENT DIVISION. 21. INPUT-OUTPUT SECTION. 22. FILE-CONTROL. 23. SELECT YOUR-FILE ASSIGN UT-S-YOURFILE. 24. DATA DIVISION. 25. FILE SECTION. 26. FD YOUR-FILE. 27. 01 YOUR-RECORD PIC X(80). 28. WORKING-STORAGE SECTION. 29. 01 COUNTER PIC S9(4) COMP. 30. 01 WS-1 PIC X. 31. % SET END-WORKING-STORAGE 32. * PLACE FOR STUFF THAT MUST BE AT END OF WS FOR 33. * CERTAIN NON-APS PRE-PROCESSORS. 34. PROCEDURE DIVISION. 35. COUNTER = 1 36. $IN-LINE( 2) 37. TEST-NO-DELIMITERS = <$IN-LINE( 3)> 38. ADD <$IN-LINE( 4)> <$IN-LINE( 5)> TO COUNTER 39. % SET LINKAGE 40. 01 LINKAGE-STUFF PIC X. 41. % SET PROCEDURE 42. % SET DELIMITERS-OPTIONAL 43. $IN-LINE( TEST-NO-DELIMITERS) 44. $IN-LINE( 6) 45. % SET DATA 46. * PLACING DATA IN DATA DIVISION 47. % SET PROCEDURE 48. % SET FILE 49. FD MY-FILE. 50. 01 MY-RECORD PIC X(80). 51. % SET PROCEDURE 52. % SET FILE-CONTROL 53. SELECT MY-FILE ASSIGN UT-S-MYFILE. 54. % SET PROCEDURE 55. OPEN INPUT MY-FILE YOUR-FILE 56. CLOSE MY-FILE YOUR-FILE 57. % SET WORKING-STORAGE 58. 01 TEST-NO-DELIMITERS PIC 9(&IN-LINE). 59. % SET PROCEDURE 61. % SET AUXILIARY-OUTPUT 62. THIS IS AUXILIARY FILE DATA 63. % SET NORMAL-OUTPUT
001700 IDENTIFICATION DIVISION. 17. 001800 PROGRAM-ID. 18. 001900 EXAMPLE9. 19. 002000 ENVIRONMENT DIVISION. 20. 002100 INPUT-OUTPUT SECTION. 21. 002200 FILE-CONTROL. 22. 002300 SELECT YOUR-FILE ASSIGN UT-S-YOURFILE. 23. 005300 SELECT MY-FILE ASSIGN UT-S-MYFILE. 53. 005302 DATA DIVISION. 24. 005304* PLACING DATA IN DATA DIVISION 46. 005306 FILE SECTION. 25. 005308 FD YOUR-FILE. 26. 005310 01 YOUR-RECORD PIC X(80). 27. 005312 FD MY-FILE. 49. 005314 01 MY-RECORD PIC X(80). 50. 005316 WORKING-STORAGE SECTION. 28. 005318 01 COUNTER PIC S9(4) COMP. 29. 005320 01 WS-1 PIC X. 30. 005322 01 TEST-NO-DELIMITERS PIC 9(6). 005324* PLACE FOR STUFF THAT MUST BE AT END OF WS FOR 32. 005326* CERTAIN NON-APS PRE-PROCESSORS. 33. 005328 LINKAGE SECTION. 005330 01 LINKAGE-STUFF PIC X. 40. 006300 01 MY-EPILOGUE-CHR PIC X. 006302 PROCEDURE DIVISION. 34. 006304 COUNTER = 1 35. 006306 COUNTER = 2 006308 COUNTER = 3 006310 TEST-NO-DELIMITERS = 3 006312 COUNTER = 4 006314 COUNTER = 5 006316 COUNTER = COUNTER + 4 5 006318 COUNTER = TEST-NO-DELIMITERS 006320 COUNTER = 6 006322 OPEN INPUT MY-FILE YOUR-FILE 55. 006324 CLOSE MY-FILE YOUR-FILE 56. 006326*/* THIS IS AN S-COBOL COMMENT LINE. 60. 006328 COUNTER = 100 11. 006330 COUNTER = 101 15.
During processing of $MY-EPILOGUE, % SET LINKAGE relocates line 9 to the end of the Linkage Section (line 6300), and puts COUNTER = 100 at the end of the Procedure Division (line 6328). Line 15 is an EPILOGUE statement nested within a $MY-EPILOGUE; it puts $SECOND-EPILOGUE into the EPILOGUE area. The processing of $MY-EPILOGUE is now completed.
Now that $MY-EPILOGUE is finished and $SECOND-EPILOGUE has become the last macro existing in EPILOGUE, $SECOND-EPILOGUE is automatically invoked.
After the above program is processed by the Customization Facility, it is processed by the APS Precompiler. The result is shown below. Note the additional lines (5324 through 5340 and 6236 through 6242) that have been generated by the Precompile process.
001700 IDENTIFICATION DIVISION. 17. 001800 PROGRAM-ID. 18. 001900 EXAMPLE9. 19. 002000 ENVIRONMENT DIVISION. 20. 002100 INPUT-OUTPUT SECTION. 21. 002200 FILE-CONTROL. 22. 002300 SELECT YOUR-FILE ASSIGN UT-S-YOURFILE. 23. 005300 SELECT MY-FILE ASSIGN UT-S-MYFILE. 53. 005302 DATA DIVISION. 24. 005304* PLACING DATA IN DATA DIVISION 46. 005306 FILE SECTION. 25. 005308 FD YOUR-FILE. 26. 005310 01 YOUR-RECORD PIC X(80). 27. 005312 FD MY-FILE. 49. 005314 01 MY-RECORD PIC X(80). 50. 005316 WORKING-STORAGE SECTION. 28. 005318 77 COUNTER PIC S9(4) COMP. 29. 005320 01 WS-1 PIC X. 30. 005322 01 TEST-NO-DELIMITERS PIC 9(6). 005322 005324 01 GENERATED--FLAGS. 005326 05 TRUE PIC X VALUE 'T'. 005328 88 ALWAYS VALUE 'T'. 005330 88 NEVER VALUE 'F'. 005332 05 FALSE PIC X VALUE 'F'. 005334 05 YOUR-FILE--END PIC X. 005336 05 YOUR-FILE--INV PIC X. 005338 05 MY-FILE--END PIC X. 005340 05 MY-FILE--INV PIC X. 005342 005344* PLACE FOR STUFF THAT MUST BE AT END OF WS FOR 32. 005346* CERTAIN NON-APS PRE-PROCESSORS. 33. 005348 LINKAGE SECTION. 005350 01 LINKAGE-STUFF PIC X. 40. 006200 01 MY-EPILOGUE-CHR PIC X. 006202 PROCEDURE DIVISION. 34. 006204 MAIN--SECTION SECTION. 35. 006206 MAIN--SECTION--PARA. 35. 006208 COUNTER = 1. 35. 006210 COUNTER = 2. 006212 COUNTER = 3. 006214 TEST-NO-DELIMITERS = 3. 006216 COUNTER = 4. 006218 COUNTER = 5. 006220 COUNTER = COUNTER + 4 5 006222 COUNTER = TEST-NO-DELIMITERS. 006224 COUNTER = 6. 006226 OPEN INPUT MY-FILE YOUR-FILE. 55. 006228 CLOSE MY-FILE YOUR-FILE. 56. 006230* THIS IN AN S-COBOL COMMENT LINE 60. 006232 COUNTER = 100. 11. 006234 COUNTER = 101. 15. 006236 MAIN--SECTION--EXIT. 15. 006238 EXIT PROGRAM. 15. 006240 MAIN--SECTION--EXIT. 15. 006242 STOP RUN. 15.
Copyright © 2002 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.