naveen_mehatak@hotmail.co wrote: |
yes bill
i close , free then reopen it. but when i open it as open output => file status 96 open extend => file status 35 ![]() |
Quote: |
The text field length was taken care of.so that was not the problem |
Quote: |
so because i want these files in the next step. my question was when CBLQDA=ON is set the file disp is set to (new ,delete,delete) so will i have the file after the program ends. |
Code: |
IDENTIFICATION DIVISION. PROGRAM-ID. PDSREAD. ****************************************************************** ** ** ** PROGRAM TITLE: PDSREAD ** ** ** ** PROGRAM PURPOSE: THIS COBOL PROGRAM IS A TEST PROGRAM THAT ** ** READS THE DIRECTORY MEMBERS OF A PDS DATASET AND THEN ** ** FOR EACH MEMBER DYNAMICALLY ALLOCATES A FILE TO BE OPENED ** ** AND READ TO DISPLAY THE PDS CONTENTS TO SYSOUT. ** ** ** ** INPUT FILES: PDS-DATASET SYS010 ** ** IN-PDS INFILE (DYNAMICALLY ASSIGNED) ** ** ** ** OUTPUT FILES: SYSOUT ** ** ** ** LINKAGE PARMS: NONE ** ** ** ** ** ****************************************************************** ** MODIFICATION LOG: ** ****************************************************************** ** ANALYST DATE CHANGE DESCRIPTION ** ** ------- ------ ----------------------------------------------** ** EBAKKE 071608 ORIGINAL CREATION ** ****************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-370. OBJECT-COMPUTER. IBM-370. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT PDS-DATASET ASSIGN TO UT-S-PDS. SELECT IN-PDS ASSIGN TO INFILE. DATA DIVISION. FILE SECTION. FD PDS-DATASET. 01 PDS-DIRECTORY. 05 USED-BYTES PIC S9(4) COMP. 05 REST-OF-RECORD PIC X(254). FD IN-PDS RECORDING MODE IS F BLOCK CONTAINS 0 RECORDS RECORD CONTAINS 80 CHARACTERS LABEL RECORDS ARE STANDARD. 01 IN-REC PIC X(080). WORKING-STORAGE SECTION. * CONSTANTS 77 BPXWDYN PIC X(08) VALUE 'BPXWDYN'. 77 CLEANUP PIC S9(9) COMP SYNC VALUE 1. * DIRECTORY ENTRY LAYOUT 01 DIRECTORY-ENTRY. 05 MEMBER-NAME PIC X(8). 05 FILLER PIC X(3). 05 WS-INDC PIC X. * PDS ALLOCATION STRING 01 PDS-STRING. 05 PDS-LENGTH PIC S9(4) COMP VALUE 100. 05 PDS-TEXT PIC X(100). * WORK FIELD FOR PARSING THRU DIRECTORY RECORDS 01 WG-WORK-FIELD. 05 WG-WORK-FIELD-NUMERIC PIC S9(4) COMP. * GENERAL WORKING STORAGE VARIABLES 01 WG-GENERAL-WORKAREA. 05 WG-IX-1 PIC S9(4) COMP. 05 WG-TRASH PIC S9(4) COMP. 05 WG-HALF-WORDS PIC S9(4) COMP. 05 WG-ABEND-CODE PIC S9(9) COMP. * 88-LEVEL SWITCHES 01 WS-SWITCHES. 05 END-OF-DIRECTORY-SW PIC X VALUE 'N'. 88 EOF-DIRECTORY VALUE 'Y'. 05 END-OF-MEMBER-SW PIC X VALUE 'N'. 88 EOF-MEMBER VALUE 'Y'. LINKAGE SECTION. 01 LINK-PARM. 05 PARM-LENGTH PIC S9(4) COMP. 05 PARM-TEXT PIC X(44). PROCEDURE DIVISION USING LINK-PARM. DISPLAY ' '. DISPLAY 'PROCESSING PDS FILE ' PARM-TEXT. PERFORM 0100-INITIALIZATION. PERFORM 0200-PROCESS-LOOP UNTIL EOF-DIRECTORY. PERFORM 0300-FINALIZATION. STOP RUN. ****************************************************************** * 0100-INITIALIZATION * ****************************************************************** 0100-INITIALIZATION. * CHECK INPUT PARM FOR DATA THAT IS UP TO MAX DSN SIZE OF 44 BYTES IF PARM-LENGTH < 1 OR PARM-LENGTH > 44 DISPLAY 'INVALID INPUT PARM LENGTH' PARM-LENGTH MOVE 1 TO WG-ABEND-CODE PERFORM 9999-ABEND END-IF. * OPEN INPUT PDS DATASET OPEN INPUT PDS-DATASET. * DO PRIMING READ OF PDS DATASET PERFORM 8000-READ-DIRECTORY. ****************************************************************** * 0200-PROCESS-LOOP * ****************************************************************** 0200-PROCESS-LOOP. * PROCESS EACH DIRECTORY ENTRY LISTING THE MEMBERS NAME AND * CONTENTS TO SYSOUT MOVE 1 TO WG-IX-1. PERFORM UNTIL USED-BYTES - WG-IX-1 < 11 OR REST-OF-RECORD (WG-IX-1:1) = HIGH-VALUES MOVE REST-OF-RECORD (WG-IX-1:12) TO DIRECTORY-ENTRY PERFORM 1000-PROCESS-MEMBER INITIALIZE WG-WORK-FIELD MOVE WS-INDC TO WG-WORK-FIELD (2:1) DIVIDE WG-WORK-FIELD-NUMERIC BY 32 GIVING WG-TRASH REMAINDER WG-HALF-WORDS COMPUTE WG-IX-1 = WG-IX-1 + 12 + WG-HALF-WORDS * 2 END-PERFORM. * READ NEXT DIRECTORY RECORD IF NOT DONE YET IF REST-OF-RECORD (WG-IX-1:1) = HIGH-VALUES SET EOF-DIRECTORY TO TRUE ELSE PERFORM 8000-READ-DIRECTORY END-IF. ****************************************************************** * 0300-FINALIZATION * ****************************************************************** 0300-FINALIZATION. * CLOSE PDS DATASET USED FOR ACCESSING DIRECTORY RECORDS. CLOSE PDS-DATASET. ****************************************************************** * 1000-PROCESS-MEMBER * ****************************************************************** 1000-PROCESS-MEMBER. * DISPLAY MEMBER NAME TO SYSOUT DISPLAY '** PROCESSING MEMBER ''' MEMBER-NAME ''' **'. * INITIALIZE STUFF FORE EACH DIRECTORY MEMBER MOVE SPACES TO PDS-TEXT, END-OF-MEMBER-SW. * STRING TOGETHER THE PDS ALLOCATION STRING WITH MEMBER NAME STRING 'ALLOC DD(INFILE) DSN(''' DELIMITED BY SIZE PARM-TEXT (1:PARM-LENGTH) DELIMITED BY SIZE '(' DELIMITED BY SIZE MEMBER-NAME DELIMITED BY ' ' ')'') SHR REUSE' DELIMITED BY SIZE INTO PDS-TEXT. * DYNAMICALLY ALLOCATE PDS DATASET WITH MEMBER AS IN-PDS FILE CALL BPXWDYN USING PDS-STRING. * CHECK RETURN CODE AND ABEND IF CAN'T ALLOCATE DATASET IF RETURN-CODE = 0 CONTINUE ELSE DISPLAY 'ALLOC FAILED, RETURN-CODE WAS ' RETURN-CODE MOVE 2 TO WG-ABEND-CODE PERFORM 9999-ABEND END-IF. * OPEN IN-PDS FILE TO START READING MEMBER RECORDS OPEN INPUT IN-PDS. * DISPLAY EACH MEMBER RECORD UNTIL THE END IS REACHED DISPLAY ' MEMBER RECORDS ARE: '. PERFORM 8100-READ-MEMBER UNTIL EOF-MEMBER. DISPLAY ' '. * CLOSE DYNAMICALLY ALLOCATED IN-PDS FILE CLOSE IN-PDS. ****************************************************************** * 8000-READ-DIRECTORY * ****************************************************************** 8000-READ-DIRECTORY. READ PDS-DATASET AT END SET EOF-DIRECTORY TO TRUE. ****************************************************************** * 8100-READ-MEMBER. * ****************************************************************** 8100-READ-MEMBER. READ IN-PDS AT END SET EOF-MEMBER TO TRUE NOT AT END DISPLAY IN-REC. ****************************************************************** * 9999-ABEND. * ****************************************************************** 9999-ABEND. CALL 'CEE3ABD' USING WG-ABEND-CODE, CLEANUP. |
Code: |
//JS001 EXEC PGM=IKJEFT1B,REGION=0M //STEPLIB DD DSN={your.loadlib},DISP=SHR //PDS DD DSN={your.pds.dataset},DISP=SHR,RECFM=U,LRECL=256 //SYSOUT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(DSN) RUN PROGRAM(PDSREAD) PARM('{your pds dataset}') END //* END OF JCL |
output generated using printer-friendly topic mod. All times are GMT - 5 Hours