Bernd Thank you for providing another approach to read and process the file. I have a few questions to confirm my understanding: Q1: File Section Definition:
cobol Copy code FILE SECTION. FD INPUT-FILE. 01 INPUT-RECORD PIC X(80). Is it correct ? Q2: Do hexadecimal lengths require special handling? Q3: How do we identify which parts of the 80-column data represent the length and which parts represent the content, given that the length is a hexadecimal number? Thank you for your assistance! Best regards, Jason Cai On Fri, 14 Jun 2024 13:13:08 +0200, Bernd Oppolzer <bernd.oppol...@t-online.de> wrote: >Sorry, Typo ... should read: ... and Y is the maximum length plus 2 ... > > >Am 14.06.2024 um 13:09 schrieb Bernd Oppolzer: >> Hi Martin and Jason, >> >> I agree with Martin that the length / data elements must be processed >> one at a time. >> Some additional remarks: >> >> - the length field must have attribute S9(4) comp, because it is a >> binary length field >> >> - I would suggest not to use the OCCURS ... DEPENDING clause at all, >> but unstead work with MOVE with positions, >> like this: MOVE SOURCE (X:Y) TO TEMP-WORK ... where X is the position >> in the source string where the length >> field of the actual element starts and X is the maximum length plus 2. >> Then you can process the content, >> using TEMP-WORK, by examining the length field at the start of >> TEMP-WORK, and then increment X by the >> length field plus 2 >> >> - is the length of the original source string fixed of variable? >> Doesn't really matter; when looping over this >> string, you have to take care to finish processing when the value of X >> reaches the end of the string. >> >> @Martin: we didn't talk for a long time; I'm now working for more than >> 4 years with my COBOL/VSE assignment >> and consider myself a COBOL expert :-) but still working with PL/1 and >> ASSEMBLER with the other customer. >> You know them all ... >> >> HTH, kind regards >> >> Bernd >> >> >> Am 14.06.2024 um 11:00 schrieb Martin Trübner: >>> Jason, >>> >>> >>> try it with this (and use correct numbers- your sample had 0 to 3) >>> >>> >>> 05 LL1 PIC 9(2). >>> 05 TT1 OCCURS 0 TO 3 TIMES >>> DEPENDING ON LL1. >>> 05 REMAIN PIC X(4) >>> >>> and in working storage section have this: >>> >>> 01 TEMP-WORK. >>> 05 LL2 PIC 9(2). >>> 05 TT2 OCCURS 0 TO 3 TIMES >>> DEPENDING ON LL2. >>> >>> >>> An extra MOVE before you touch TT2. >>> >>> >>> or multiple repeats of the above >>> >>> >>> >>> Martin >>> >>> >>> >>> On 14.06.24 09:39, Jason Cai wrote: >>>> Subject: Assistance Needed with COBOL File Reading Structure >>>> >>>> Dear [Recipient's Name], >>>> >>>> I hope this message finds you well. >>>> >>>> I am currently working on a COBOL program to read a file with the >>>> following format: length1, content1, length2, content2, and so on. >>>> An example of the data in the file is as follows: >>>> ``` >>>> 00F00C0000FFF00F >>>> 0110140003156011 >>>> ``` >>>> >>>> I intended to use the following copybook to read the data: >>>> ```cobol >>>> 05 LL1 PIC 9(2). >>>> 05 TT1 OCCURS 1 TO 2 TIMES >>>> DEPENDING ON LL1. >>>> 05 LL2 PIC 9(2). >>>> 05 TT2 OCCURS 1 TO 2 TIMES >>>> DEPENDING ON LL2. >>>> ``` >>>> However, I encountered an error: >>>> ``` >>>> IGYGR1137-S "OCCURS DEPENDING ON" object "LL2" was defined in a >>>> variably located area. Execution results are unpredictable. >>>> ``` >>>> >>>> The suggested structure to avoid this error is as follows: >>>> ```cobol >>>> 05 LL1 PIC 9(1). >>>> 05 LL2 PIC 9(1). >>>> 05 TT1 OCCURS 1 TO 2 TIMES >>>> DEPENDING ON LL1. >>>> 10 TT11 PIC X(1). >>>> 05 TT2 OCCURS 1 TO 3 TIMES >>>> DEPENDING ON LL2. >>>> 10 TT21 PIC X(1). >>>> ``` >>>> Unfortunately, this structure does not match the format of the file >>>> I need to read. Could you please advise on how to correctly read a >>>> file with this structure using COBOL? >>>> >>>> Thank you for your any assistance ! >>>> >>>> Best regards, >>>> >>>> Jason Cai >>>> >>>> ---------------------------------------------------------------------- >>>> For IBM-MAIN subscribe / signoff / archive access instructions, >>>> send email tolists...@listserv.ua.edu with the message: INFO IBM-MAIN >>> >>> ---------------------------------------------------------------------- >>> For IBM-MAIN subscribe / signoff / archive access instructions, >>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > >---------------------------------------------------------------------- >For IBM-MAIN subscribe / signoff / archive access instructions, >send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN