Close and re-open file
Select messages from
# through # FAQ
[/[Print]\]

MVSFORUMS.com -> Application Programming

#1: Close and re-open file Author: ldushkin PostPosted: Thu Mar 22, 2007 4:33 pm
    —
I have a program, it write only one record from para 0300- this record is the last in the file, not write records from para 0400- . When I split this pgm for two programs it works OK. Can somebody take a look
I appreciate all your help
Code:
 IDENTIFICATION DIVISION.                                       
 PROGRAM-ID. TESTKAS.                                           
 AUTHOR.     XXXXXXXXXXXX.                                       
 DATE-WRITTEN. 12/10/06.                                         
 DATE-COMPILED.                                                 
*                                                               
 ENVIRONMENT DIVISION.                                           
 CONFIGURATION SECTION.                                         
 SOURCE-COMPUTER. IBM-370.                                       
 OBJECT-COMPUTER. IBM-370.                                       
 INPUT-OUTPUT SECTION.                                           
 FILE-CONTROL.                                                   
     SELECT JRNL-IN                       ASSIGN TO JRNL.       
     SELECT JRNL-OUT-FILE                 ASSIGN TO JRNLOUT.     
                                                                 
 DATA DIVISION.                                                 
 FILE SECTION.                                                   
 FD  JRNL-IN                                                     
     LABEL RECORDS ARE STANDARD                                 
     RECORDING MODE IS V                                         
     BLOCK CONTAINS 0 RECORDS.                                   
 01  JRNL-IN-REC          PIC X(421).                           
                                                                 
 FD  JRNL-OUT-FILE                                               
     LABEL RECORDS ARE STANDARD                                 
     RECORDING MODE IS V                                         
     BLOCK CONTAINS 0 RECORDS.                                   
 01  JRNL-OUT-REC         PIC X(421).                           
*****************************************************************
 WORKING-STORAGE SECTION.                                       
*****************************************************************
 01  EOF-SW            PIC X             VALUE 'N'.             
     88 EOF                              VALUE 'Y'.             
*----------------------------------------------------------------
*                 COUNTERS                                       
*----------------------------------------------------------------
 01  RECIN-CTR               PIC S9(16) COMP-3 VALUE ZEROS.     
 01  RECOUT-CTR              PIC S9(16) COMP-3 VALUE ZEROS.     
*---------------------------------------------------------------*
* INPUT JOURNAL FILE                                            *
*---------------------------------------------------------------*
 COPY coopybook.                                                 
*                                                               
 PROCEDURE DIVISION.                                             
 MAINLINE SECTION.                                               
     PERFORM 0100-INITIALIZE       THRU 0100-EXIT.               
     PERFORM 0200-READ-JRNLIN      THRU 0200-EXIT.               
     PERFORM 0300-PROCESS-SEC-REC  THRU 0300-EXIT               
                   UNTIL EOF.                                   

     OPEN INPUT  JRNL-IN.                                       
     PERFORM 0200-READ-JRNLIN      THRU 0200-EXIT.               
     PERFORM 0400-PROCESS-ALL-REC  THRU 0400-EXIT               
                   UNTIL EOF.                                   

     PERFORM 9999-WRAP-UP THRU 9999-EXIT.                       

     DISPLAY ' RECORD INPUT  ' RECIN-CTR
     DISPLAY ' RECORD OUTPUT ' RECOUT-CTR

     STOP RUN.                                                   
                                                                 
 0100-INITIALIZE.                                               

      INITIALIZE DETAIL-STOCK-REC-BOOKKEEPING

      OPEN INPUT  JRNL-IN                                       
      OPEN OUTPUT JRNL-OUT-FILE.                                 
                                                                 
 0100-EXIT.                                                     
     EXIT.                                                       
 0200-READ-JRNLIN.                                               
       READ JRNL-IN       INTO DETAIL-STOCK-REC-BOOKKEEPING     
          AT END SET EOF       TO TRUE                           
            IF RECIN-CTR = 0
              DISPLAY '***********************************'
              DISPLAY '***     A T T E N T I O N !     ***'
              DISPLAY '***     INPUT FILE IS EMPTY     ***'
              DISPLAY '***********************************'
              GO TO 0200-EXIT
            END-IF
          NOT AT END
          ADD 1 TO RECIN-CTR                                     
       END-READ.

 0200-EXIT.                                                     
     EXIT.                                                       

 0300-PROCESS-SEC-REC.                                           
     IF NOT EOF
      IF D-SECURITY-NO NOT = '000000000'
         CONTINUE
      ELSE
         WRITE JRNL-OUT-REC FROM DETAIL-STOCK-REC-BOOKKEEPING   
         ADD 1 TO RECOUT-CTR
         MOVE 'N'             TO  EOF-SW
      END-IF
     END-IF

     IF EOF
         CLOSE JRNL-IN                                           
         GO TO 0300-EXIT
     END-IF

     IF NOT EOF
       PERFORM 0200-READ-JRNLIN  THRU 0200-EXIT                 
     END-IF.

 0300-EXIT.                                                     
     EXIT.                                                       
*                                                               
 0400-PROCESS-ALL-REC.                                           
     IF NOT EOF
      IF D-SECURITY-NO > '000000000'
         WRITE JRNL-OUT-REC FROM DETAIL-STOCK-REC-BOOKKEEPING   
         ADD 1 TO RECOUT-CTR
      ELSE
        CONTINUE
      END-IF
     END-IF

     IF NOT EOF
       PERFORM 0200-READ-JRNLIN  THRU 0200-EXIT                 
     END-IF.


 0400-EXIT.                                                     
     EXIT.                                                       
*
 9999-WRAP-UP.                                                   

     CLOSE JRNL-IN                                               
           JRNL-OUT-FILE.                                       

 9999-EXIT.                                                     
     EXIT.                                                       

#2:  Author: kolusuLocation: San Jose PostPosted: Fri Mar 23, 2007 8:44 am
    —
ldushkin,


If you hit the EOF file you never excuete the process paragraph and your file is never closed. The reason it worked with 2 different programs is that OS closed the file upon the successful completion of the pgm. Also your pgm would fail for EMPTY file also

Kolusu

#3:  Author: ldushkin PostPosted: Fri Mar 23, 2007 4:39 pm
    —
Thank you Kolusu,
What should I do to close input file.

#4:  Author: jyoungLocation: Flint, MI PostPosted: Mon Mar 26, 2007 7:46 am
    —
If you are trying to place the last record at the beginning of the file could you not sort the file in ascending order on D-SECURITY-NO? This might be easeir than writing a program to do it.



MVSFORUMS.com -> Application Programming


output generated using printer-friendly topic mod. All times are GMT - 5 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group