Hi John, I just ran John Reda's sort and checked it out when I read your post. I hope you didn't spend a lot of time writing it. I don't think I'll try it right now, but I will keep a copy of it in case I have any more problems working with SMF records. SMF records ALWAYS give trouble sometimes.
Thanks for your help. Eric -- Eric Bielefeld Systems Programmer Washington University St Louis, Missouri 314-935-3418 ---- John McKown <[email protected]> wrote: > 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 ---------------------------------------------------------------------- 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

