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

Reply via email to