the following COBOL program will do what you want. Well, in my minor test it did. Compiled with Enterprise COBOL 3.4.
000100 PROCESS MAP,TRUNC(OPT),OPTIMIZE,VBREF,XREF,APOST,LIST 000200 ID DIVISION. 000300 PROGRAM-ID. SMFALTER. 000400 AUTHOR. JOHN MCKOWN. 000500 INSTALLATION. HEALTHMARKETS, INC. 000600 DATE-WRITTEN. FEBRUARY 04, 2009. 000700 DATE-COMPILED. 000800 SECURITY. NONE. 000900* 001000 ENVIRONMENT DIVISION. 001100 CONFIGURATION SECTION. 001200 SOURCE-COMPUTER. IBM-370. 001300 OBJECT-COMPUTER. IBM-370. 001400 INPUT-OUTPUT SECTION. 001500 FILE-CONTROL. 001600 SELECT SMF-INPUT ASSIGN TO UT-S-SMFIN 001700 ORGANIZATION IS SEQUENTIAL 001800 ACCESS MODE IS SEQUENTIAL 001900 FILE STATUS IS SMFIN-FILE-STATUS. 002000 SELECT SMF-OUTPUT ASSIGN TO UT-S-SMFOUT 002100 ORGANIZATION IS SEQUENTIAL 002200 ACCESS MODE IS SEQUENTIAL 002300 FILE STATUS IS SMFOUT-FILE-STATUS. 002400 I-O-CONTROL. 002500* APPLY WRITE-ONLY ON SMF-OUTPUT. 002600* 002700 DATA DIVISION. 002800 FILE SECTION. 002900 FD SMF-INPUT 003000 BLOCK CONTAINS 0 RECORDS 003100 LABEL RECORDS ARE STANDARD 003200 RECORDING MODE IS S 003300 RECORD IS VARYING IN SIZE FROM 1 TO 32763 CHARACTERS 003400 DEPENDING ON WS-INPUT-RECORD-SIZE 003500 . 003600 01 SMF-INPUT-RECORD. 003700 05 SMF-INPUT-DATA PIC X 003800 OCCURS 1 TO 32763 TIMES 003900 DEPENDING ON WS-INPUT-RECORD-SIZE 004000 . 004100*01 LARGEST-INPUT-RECORD. 004200* 05 FILLER PIC X(32763). 004300 01 SMF-COMMON-RECORD. 004400 05 FILLER PIC X. 004500 05 SMF-RECORD-TYPE PIC X. 004600 88 SMF-RECORD-TYPE-30 VALUE IS X'1E'. 004700 05 SMF-TIME PIC S9(9) BINARY. 004800 05 SMF-DATE PIC S9(7) PACKED-DECIMAL. 004900 05 SMF-SYSTEM-ID PIC X(4). 005000 05 SMF-SUBSYSTEM-ID PIC X(4). 005100 05 SMF-RECORD-SUBTYPE PIC S9(4) BINARY. 005200 88 SMF-RECORD-SUBTYPE-2 VALUE IS 2. 005300 88 SMF-RECORD-SUBTYPE-3 VALUE IS 3. 005400* 005500 FD SMF-OUTPUT 005600 BLOCK CONTAINS 0 RECORDS 005700 LABEL RECORDS ARE STANDARD 005800 RECORDING MODE IS S 005900 RECORD IS VARYING IN SIZE FROM 1 TO 32763 CHARACTERS 006000 DEPENDING ON WS-INPUT-RECORD-SIZE 006100 . 006200 01 SMF-OUTPUT-RECORD. 006300 05 SMF-OUTPUT-BYTES PIC X 006400 OCCURS 1 TO 32763 TIMES 006500 DEPENDING ON WS-INPUT-RECORD-SIZE 006600 . 006700* 006800 WORKING-STORAGE SECTION. 006900 77 SMFIN-FILE-STATUS PIC XX. 007000 77 SMFOUT-FILE-STATUS PIC XX. 007100 77 EOF-ON-SMFIN-VALUE PIC X VALUE 'N'. 007200 88 EOF-ON-SMFIN VALUE IS 'Y'. 007300 77 TOTAL-RECORDS-READ PIC S9(15) PACKED-DECIMAL 007400 VALUE IS ZERO. 007500 77 WS-INPUT-RECORD-SIZE PIC 9(9) BINARY. 007600 77 TOTAL-RECORDS-WRITTEN PIC S9(15) PACKED-DECIMAL 007700 VALUE IS ZERO. 007800* 007900*LINKAGE SECTION. 008000* 008100 PROCEDURE DIVISION. 008200 START-UP. 008300 OPEN INPUT SMF-INPUT 008400 OUTPUT SMF-OUTPUT. 008500 IF SMFIN-FILE-STATUS IS NOT EQUAL TO ZEROS THEN 008600 DISPLAY 'ERROR. INPUT FILE FAILED TO OPEN. STATUS=' 008700 SMFIN-FILE-STATUS UPON SYSOUT 008800 MOVE +8 TO RETURN-CODE 008900 END-IF. 009000 IF SMFOUT-FILE-STATUS IS NOT EQUAL TO ZEROS THEN 009100 DISPLAY 'ERROR. OUTPUT FILE FAILED TO OPEN. STATUS=' 009200 SMFOUT-FILE-STATUS UPON SYSOUT 009300 MOVE +8 TO RETURN-CODE 009400 END-IF. 009500 IF RETURN-CODE IS NOT EQUAL TO ZERO THEN 009600 GOBACK 009700 END-IF. 009800 READ SMF-INPUT AT END SET EOF-ON-SMFIN TO TRUE. 009900 PERFORM ALTER-INPUT 010000 UNTIL EOF-ON-SMFIN 010100 OR SMFIN-FILE-STATUS IS NOT EQUAL TO ZERO 010200 OR SMFOUT-FILE-STATUS IS NOT EQUAL TO ZERO. 010300 CLOSE SMF-INPUT 010400 SMF-OUTPUT. 010500 DISPLAY 'TOTAL RECORDS READ =' TOTAL-RECORDS-READ 010600 UPON SYSOUT. 010700 DISPLAY 'TOTAL RECORDS WRITTEN =' TOTAL-RECORDS-WRITTEN 010800 UPON SYSOUT. 010900 IF SMFIN-FILE-STATUS IS NOT EQUAL TO ZERO THEN 011000 DISPLAY 'READ ERROR. STATUS=' SMFIN-FILE-STATUS 011100 UPON SYSOUT 011200 MOVE +8 TO RETURN-CODE 011300 END-IF. 011400 IF SMFOUT-FILE-STATUS IS NOT EQUAL TO ZERO THEN 011500 DISPLAY 'WRITE ERROR. STATUS=' SMFOUT-FILE-STATUS 011600 UPON SYSOUT 011700 MOVE +8 TO RETURN-CODE 011800 END-IF. 011900 GOBACK. 012000* 012100 ALTER-INPUT. 012200 ADD +1 TO TOTAL-RECORDS-READ. 012300 EVALUATE SMF-SYSTEM-ID 012400 WHEN 'CSYS' MOVE 'ESYS' TO SMF-SYSTEM-ID 012500 WHEN 'DSYS' MOVE 'FSYS' TO SMF-SYSTEM-ID 012510 WHEN 'LIH1' MOVE 'LIH2' TO SMF-SYSTEM-ID 012600 WHEN OTHER CONTINUE 012700 END-EVALUATE 012800 MOVE SMF-INPUT-RECORD(1:WS-INPUT-RECORD-SIZE) TO 012900 SMF-OUTPUT-RECORD(1:WS-INPUT-RECORD-SIZE) 012910 WRITE SMF-OUTPUT-RECORD. 013000 READ SMF-INPUT AT END SET EOF-ON-SMFIN TO TRUE. 013100* 013200* 013300 END PROGRAM SMFALTER. -- John ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html

