|
D INFDS DS D RecLen 10I 0 Overlay(INFDS:125) D szBuffer S 32766A Varying Based(pBuffer) C if RecLen <= %Size(szBuffer)-2 C eval pBuffer = %alloc(RecLen+2) C eval %len(szBuffer) = RecLen C else C** You're hosed! C endif -Bob Cozzi www.RPGxTools.com If everything is under control, you are going too slow. - Mario Andretti -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Shaheen Ahmed Sent: Wednesday, May 11, 2005 2:47 PM To: RPG programming on the AS400 / iSeries Subject: RE: Two Questions. I want to say thank you to all who reply my question. The reason I asked two questions is because we have some old RPG programs where we hard coded the length of the externally defined files in a data structure and then use this data structure to CALL RPG/CL programs. Whenever we add/change fields into these files we have to go to the individual programs (RPG/CL) to change the length of the data structures/Fields. Now I know I can change my RPG programs to get the current record length of the files instead of hard coded length but this can't be done in CL programs. Wouldn't it be a good idea to ask IBM to allow us to use a variable name to define the length of a field or data structur? For example in file information data structure (INFSR) position 125-126 (binary) keeps the record length of a file. (RecLength 125 126B 0) I wish somehow we can use the value of RecLength field to define the length of a field. -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Chaudhary, Sachin (GE Equipment Services, Consultant) Sent: Wednesday, May 11, 2005 1:37 PM To: RPG programming on the AS400 / iSeries Subject: RE: Two Questions. Importance: High Hi Syed, External DS works good for point# 1. There is no direct way in a CL that I know of, but you may use DSPFD ...get the information in an outfile (use INFO TYPE *RCDFMT) , which will return the length of the record format, which you may use in your CL. Sachin -----Original Message----- From: rpg400-l-bounces+sachin.chaudhary=ge.com@xxxxxxxxxxxx [mailto:rpg400-l-bounces+sachin.chaudhary=ge.com@xxxxxxxxxxxx]On Behalf Of Tony Carolla Sent: Wednesday, May 11, 2005 11:51 AM To: RPG programming on the AS400 / iSeries Subject: Re: Two Questions. If you know the record length at compile time, you would simply do what you have already done: D1CustMast DS ExtName(CustMast) OR D1CustMast DS LikeRec(CustMast00) Then create a DS that overlays the above DS: D RecChunk DS Based(pRecord) D Chunk 100A D pRecord S * Inz(%Addr(CustMastDS)) Replace the 100A with the record length... I am sure there's an API to retrieve the record length, and if so, you could create a huge DS based on a pointer, and then point the pointer at a user space, and plunk down the record DS into the data area. Hopefully you would know the rec length at run time. I don't do much in CL anymore, thanks to system() and QCMDEXC, so can't help you on #2. On 5/11/05, Shaheen Ahmed <Syed.Ahmed@xxxxxxxxxxxxxxx> wrote: > > I have two Questions for RPG guru's. > > a) Is it possible in RPG to define a data structure length same as the > record length of an externally define physical file?. > I don't want to include the field names in my data structure. > e.g. (D1CustMast DS ExtName(CustMast) OR D1CustMast DS LikeRec(CustMast00) > ) > > b) Is it possible to define the length of a variable in CLLE same as the > record length of an externally define physical file?. > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list > To post a message email: RPG400-L@xxxxxxxxxxxx > To subscribe, unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives > at http://archive.midrange.com/rpg400-l. > > -- "Enter any 11-digit prime number to continue..." "In Hebrew SQL, how do you use right() and left()?..." - Random Thought -- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l. -- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l. -- This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/rpg400-l or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.