Portal | Manuals | References | Downloads | Info | Programs | JCLs | Mainframe wiki | Quick Ref
IBM Mainframe Computers Forums Index
 
Register
 
IBM Mainframe Computers Forums Index Mainframe: Search IBM Mainframe Forum: FAQ Memberlist Profile Log in to check your private messages Log in
 
PL/I read error for HFS files

 
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & Assembler
View previous topic :: :: View next topic  
Author Message
Joe Kirsch

New User


Joined: 27 Sep 2018
Posts: 4
Location: USA

PostPosted: Fri Sep 28, 2018 9:13 pm    Post subject: PL/I read error for HFS files
Reply with quote

We have a project to move data sets off of mainframe storage to NAS cloud storage on a Linux box and then we will access the data sets via NFS mounted file systems. This part is not a problem. The records are 112 bytes in length and all of them have an x’15’ at the end of them indicating a line feed character. The problem is the PL/I program that reads the NFS mounted HFS file is done with a READ FILE(somedd) SET($ptr) statement. It does not treat the records, 112 bytes in length, as individual records. It seems to return a block that is roughly 4K in size and each subsequent read returns the same first record 36 times.
If we change the read statement to READ FILE(somedd) INTO(some_area) it works great. Has anyone run into this issue using SET or am I missing something very simple. Any help would be appreciated. Thanks in advance.
Back to top
View user's profile Send private message

sergeyken

Active User


Joined: 29 Apr 2008
Posts: 388
Location: Maryland

PostPosted: Sat Sep 29, 2018 9:08 pm    Post subject:
Reply with quote

1) Reading records in PL/I is fully based on underlaying zOS I/O instruments, also known as MVS I/O Macros. Splitting input data by records depends exclusively on parameters RECFM, and LRECL/BLKSIZE; it has nothing to do with any "linefeed characters" used in other systems.
2) The way of splitting input data by records cannot depend in any manner on PL/I READ statement options INTO(area)/SET(pointer), which in turn is implemented via zOS macro DCB parameter MACRF.

You need to present the exact part of code, and exact characteristics of all involved datasets, JCL statements, and PL/I statements. Theoretical discussions usually do not help in such cases.
Back to top
View user's profile Send private message
Joe Kirsch

New User


Joined: 27 Sep 2018
Posts: 4
Location: USA

PostPosted: Tue Oct 02, 2018 12:35 am    Post subject:
Reply with quote

Here is the JCL that created a 100 record, 50 bytes in length, z/FS file. This was created in a z/OS 1.13 HFS system. I am guessing it is a BUG in PL/I, V3R9, but can't tell for sure. If someone can try it on their system and let me know if it works that wold be great. Just looking for an answer as to why it does not work for me. We don't want to compile programs just to get this to work.
Code:
//*********************************************************************
//STEP01 EXEC PGM=IKJEFT01
//*********************************************************************
//INMVS    DD DSN=SYJEK.TESTFILE,DISP=SHR
//OUTHFS   DD FILEDATA=TEXT,
//            PATH='/u/syncsort/syncsort/sshfsj6/testfile',
//            PATHMODE=(SIRWXU,SIRGRP,SIXGRP,SIWOTH,SIXOTH),
//            PATHOPTS=(ORDWR,OCREAT)
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
OCOPY INDD(INMVS) OUTDD(OUTHFS) TEXT PATHOPTS(USE)

Here are the first 22 records of the HFS file.

Code:
 BROWSE    /u/syncsort/syncsort/sshfsj6/testfile      Line 00000000 Col 001 050
 Command ===>                                                  Scroll ===> CSR
********************************* Top of Data **********************************
00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100
00002AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00200
00003AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00300
00004AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00400
00005AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00500
00006AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00600
00007AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00700
00008AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00800
00009AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00900
00010AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01000
00011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01100
00012AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01200
00013AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01300
00014AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01400
00015AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01500
00016AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01600
00017AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01700
00018AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01800
00019AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01900
00020AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02000
00021AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02100
00022AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02200

Here is the code that reads the file with SET pointer.
Code:
READHFS:PROC OPTIONS(MAIN) REORDER;
        DCL INNFILE  FILE RECORD INPUT;
        DCL SYSPRINT FILE PRINT EXTERNAL;
        DCL NO                    CHAR(01)  INIT('0');
        DCL YES                   CHAR(01)  INIT('1');
        DCL INN_FILE              CHAR(50)  INIT(' ') BASED($INN);
        DCL WORK_FLD1             CHAR(50)  INIT(' ') BASED($INN);
        DCL WORK_FLD2             CHAR(50)  INIT(' ');
        DCL EOF_INNFILE           CHAR(01)  INIT('0');
        DCL INNFILE_CNT           FIXED BIN(31) INIT(0);
        DCL $INN                  POINTER;
        ON ENDFILE(INNFILE) EOF_INNFILE = YES;
        OPEN  FILE(INNFILE),FILE(SYSPRINT);
        READ  FILE(INNFILE) SET($INN);
        DO WHILE(EOF_INNFILE = NO);
          WORK_FLD2 = WORK_FLD1;
          INNFILE_CNT = INNFILE_CNT + 1;
          PUT SKIP FILE(SYSPRINT) DATA(WORK_FLD2);
          READ  FILE(INNFILE) SET($INN);
        END;
        PUT SKIP FILE(SYSPRINT) EDIT
            ('NUMBER OF INNFILE RECORDS READ = ')         (A(33))
            (INNFILE_CNT)                                 (F(07));
END READHFS;

Here is the output from the file after the READ SET. As you can see it prints the first record many times before it prints the next record. It looks like it does not point at the next record.
Code:
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
WORK_FLD2='AAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100 00082AAAAAAAAAA';
NUMBER OF INNFILE RECORDS READ =     100

Here is the program that does a READ INTO.
Code:
READHFS:PROC OPTIONS(MAIN) REORDER;
        DCL INNFILE  FILE RECORD INPUT;
        DCL SYSPRINT FILE PRINT EXTERNAL;
        DCL NO                    CHAR(01)  INIT('0');
        DCL YES                   CHAR(01)  INIT('1');
        DCL INN_FILE              CHAR(50)  INIT(' ');
        DCL EOF_INNFILE           CHAR(01)  INIT('0');
        DCL INNFILE_CNT           FIXED BIN(31) INIT(0);
        ON ENDFILE(INNFILE) EOF_INNFILE = YES;
        OPEN  FILE(INNFILE),FILE(SYSPRINT);
        READ  FILE(INNFILE) INTO(INN_FILE);
        DO WHILE(EOF_INNFILE = NO);
          INNFILE_CNT = INNFILE_CNT + 1;
          PUT SKIP FILE(SYSPRINT) DATA(INN_FILE);
          READ  FILE(INNFILE) INTO(INN_FILE);
        END;
        PUT SKIP FILE(SYSPRINT) EDIT
            ('NUMBER OF INNFILE RECORDS READ = ')         (A(33))
            (INNFILE_CNT)                                 (F(07));
END READHFS;

Here is the output from the READ INTO. As you can see it does return the correct results. And yes the X'15' end of line character is required in the TEXT file.
Code:
INN_FILE='00001AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00100';
INN_FILE='00002AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00200';
INN_FILE='00003AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00300';
INN_FILE='00004AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00400';
INN_FILE='00005AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00500';
INN_FILE='00006AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00600';
INN_FILE='00007AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00700';
INN_FILE='00008AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00800';
INN_FILE='00009AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA00900';
INN_FILE='00010AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01000';
INN_FILE='00011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01100';
INN_FILE='00012AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01200';
INN_FILE='00013AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01300';
INN_FILE='00014AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01400';
INN_FILE='00015AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01500';
INN_FILE='00016AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01600';
INN_FILE='00017AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01700';
INN_FILE='00018AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01800';
INN_FILE='00019AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA01900';
INN_FILE='00020AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02000';
INN_FILE='00021AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02100';
INN_FILE='00022AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02200';
INN_FILE='00023AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02300';
INN_FILE='00024AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02400';
INN_FILE='00025AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02500';
INN_FILE='00026AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02600';
INN_FILE='00027AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02700';
INN_FILE='00028AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02800';
INN_FILE='00029AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA02900';
INN_FILE='00030AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03000';
INN_FILE='00031AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03100';
INN_FILE='00032AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03200';
INN_FILE='00033AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03300';
INN_FILE='00034AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03400';
INN_FILE='00035AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03500';
INN_FILE='00036AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03600';
INN_FILE='00037AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03700';
INN_FILE='00038AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03800';
INN_FILE='00039AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03900';
INN_FILE='00040AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04000';
INN_FILE='00041AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04100';
INN_FILE='00042AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04200';
INN_FILE='00043AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04300';
INN_FILE='00044AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04400';
INN_FILE='00045AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04500';
INN_FILE='00046AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04600';
INN_FILE='00047AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04700';
INN_FILE='00048AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04800';
INN_FILE='00049AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA04900';
INN_FILE='00050AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05000';
INN_FILE='00051AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05100';
INN_FILE='00052AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05200';
INN_FILE='00053AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05300';
INN_FILE='00054AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05400';
INN_FILE='00055AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05500';
INN_FILE='00056AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05600';
INN_FILE='00057AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05700';
INN_FILE='00058AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05800';
INN_FILE='00059AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA05900';
INN_FILE='00060AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06000';
INN_FILE='00061AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06100';
INN_FILE='00062AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06200';
INN_FILE='00063AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06300';
INN_FILE='00064AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06400';
INN_FILE='00065AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06500';
INN_FILE='00066AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06600';
INN_FILE='00067AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06700';
INN_FILE='00068AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06800';
INN_FILE='00069AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06900';
INN_FILE='00070AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07000';
INN_FILE='00071AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07100';
INN_FILE='00072AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07200';
INN_FILE='00073AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07300';
INN_FILE='00074AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07400';
INN_FILE='00075AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07500';
INN_FILE='00076AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07600';
INN_FILE='00077AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07700';
INN_FILE='00078AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07800';
INN_FILE='00079AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA07900';
INN_FILE='00080AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08000';
INN_FILE='00081AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08100';
INN_FILE='00082AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08200';
INN_FILE='00083AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08300';
INN_FILE='00084AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08400';
INN_FILE='00085AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08500';
INN_FILE='00086AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08600';
INN_FILE='00087AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08700';
INN_FILE='00088AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08800';
INN_FILE='00089AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA08900';
INN_FILE='00090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09000';
INN_FILE='00091AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09100';
INN_FILE='00092AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09200';
INN_FILE='00093AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09300';
INN_FILE='00094AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09400';
INN_FILE='00095AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09500';
INN_FILE='00096AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09600';
INN_FILE='00097AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09700';
INN_FILE='00098AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09800';
INN_FILE='00099AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA09900';
INN_FILE='00100AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA10000';
NUMBER OF INNFILE RECORDS READ =     100

This is the JCL that was used to run the above programs.
Code:
//*********************************************************************
//STEP02 EXEC PGM=READHFS
//*********************************************************************
//STEPLIB  DD DSN=SYJEK.LOADLIB,DISP=SHR
//         DD DSN=SYS2.CEE.SCEERUN,DISP=SHR
//         DD DSN=SYS2.CEE.SCEERUN2,DISP=SHR
//*********************************************************************
//SYSOUT   DD SYSOUT=*
//CEEDUMP  DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//INNFILE  DD FILEDATA=TEXT,
//            PATH='//u/syncsort/syncsort/sshfsj6/testfile',
//            DSNTYPE=HFS,
//            PATHOPTS=(ORDONLY) ,
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8410
Location: Dubuque, Iowa, USA

PostPosted: Tue Oct 02, 2018 1:30 am    Post subject:
Reply with quote

Looking at the Enterprise PL/I Programming Guide manual at https://www.ibm.com/support/knowledgecenter/en/SSY2V3_5.1.0/com.ibm.ent.pl1.zos.doc/pg.pdf on page 263 (Table 18 Statements and options allowed for creating and accessing consecutive data sets), declaring a file as SEQUENTIAL INPUT does not allow for the SET option. If you use SEQUENTIAL INPUT BUFFERED you can use the SET option but not for just SEQUENTIAL INPUT.
Back to top
View user's profile Send private message
prino

Senior Member


Joined: 07 Feb 2009
Posts: 1121
Location: Vilnius, Lithuania

PostPosted: Tue Oct 02, 2018 1:40 am    Post subject:
Reply with quote

Joe Kirsch wrote:
Here is the JCL that created a 100 record, 50 bytes in length, z/FS file. This was created in a z/OS 1.13 HFS system. I am guessing it is a BUG in PL/I, V3R9, but can't tell for sure.


Enterprise PL/I V3.9 is no longer supported, and if your problem was really caused by a bug in the compiler, it would have been found, and corrected, years ago!
Back to top
View user's profile Send private message
Joe Kirsch

New User


Joined: 27 Sep 2018
Posts: 4
Location: USA

PostPosted: Tue Oct 02, 2018 8:13 pm    Post subject:
Reply with quote

I guess I am not very sharp because I don't understand the responses. So far you have told me that the version is not supported and that if it’s not SEQUENTIAL INPUT BUFFERED it will not work and so on. I have used SEQUENTIAL INPUT BUFFERED and that does not work either. Guess what, IBM only finds bugs that people discover by running code. If you tell me that IBM would have known about and fixed this years ago I would agree except if no one is doing what I am doing they would not know about it. The read set returns records just not correctly so can anyone tell me what is wrong in the code. Please don’t come back with answers that make no sense. A simple explanation would be great why move mode works and locate mode does not work with HFS files…..Thanks in advance.
Back to top
View user's profile Send private message
Joe Kirsch

New User


Joined: 27 Sep 2018
Posts: 4
Location: USA

PostPosted: Tue Oct 02, 2018 9:27 pm    Post subject:
Reply with quote

Another tid-bit of information......I took the same code and compiled it using PL/I 2.3, I know it is old, and guess what......it works like a charm. I will say that IBM has an error in one of their LE modules for PL/I. Maybe someone can tell me if there are any APAR's that may fit the description of my error....Thanks....
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic    IBMMAINFRAMES.com Support Forums -> PL/I & Assembler All times are GMT + 6 Hours
Page 1 of 1

 

Search our Forum:

Similar Topics
Topic Author Forum Replies Posted
No new posts Storing SORTOF files in a PDS ajithajt SYNCSORT 3 Thu Dec 06, 2018 12:27 pm
No new posts PLI Run JCL error with 806 shrivatsa PL/I & Assembler 6 Wed Dec 05, 2018 12:23 pm
No new posts Error reading file in REXX module ashek15 CLIST & REXX 3 Wed Oct 24, 2018 4:50 am
No new posts Anyone know how to copy Unix files? John Poulakos JCL & VSAM 7 Wed Oct 10, 2018 12:57 am
No new posts Error in IEBGENER supriyo kumar JCL & VSAM 1 Thu Sep 27, 2018 10:22 pm

Facebook
Back to Top
 
Job Vacancies | Forum Rules | Bookmarks | Subscriptions | FAQ | Polls | Contact Us