|
try the QDBRTVFD API to retrieve the key field information. Here's the procedure definition I use: * List Key Fields (QDBRTVFD retrieve file desc)API Procedure DListFileDesc pr ExtPgm('QDBRTVFD') d OutputData 32766a Options(*Varsize) d OutputDataLen 10i 0 Const d CUSPFNameRet 20a D PFRcdFmt 8a Const d CUSPFName 20a Const D RcdFmt 8a Const d OverrideProc 1a Const d System 10a Const d FormatType 10a Const d ErrorCode 32766a options(*varsize) * List File Description Header DS D FDHDS ds D FDHBytesRet 10i 0 D FDHBytesAvail 10i 0 D FDHMaxKeyLen 5i 0 D FDHKeyCount 5i 0 D FDHReserved 10a D FDHFormatCnt 5i 0 D KeyRecFmt 10a D KeyReserve 2a D Key#OfKeys 5i 0 D KeyReserv1 14a D KeyInfoOffset 10i 0 * List Key Information DS D KeyDS ds D KeyIntName 10a D KeyExtName 10a D KeyDtaType 5i 0 D KeyFldLen 5i 0 D Key#OfDigits 5i 0 D KeyDecPos 5i 0 D KeyAttrFlg 1a D KeyAltLen 5i 0 D KeyAltName 30a D KeyReserv3 1a D KeyAttrFlg1 1a D KeyReserv4 1a c CallP(E) ListFileDesc(OutputData: c OutputDataLen: c CUSPFNameRet: c 'FILD0300': C CUSPFName: c RcdFmtName: c OverrideProc: c '*LCL': c '*EXT': c ErrorDS) * If Any Errors Occur or No Key Fields Found, Set Number Of Keys To 0 c If OutputData=*Blanks C OR %Error c OR %len(%Trim(OutputData))=0 c Eval Key#OfKeys=0 c Else c MoveL OutputData FDHDS c EndIf * Process Key Information Stored in the OutputData Variable c Eval StrPos=KeyInfoOffset+1 c Do Key#OfKeys c Eval KeyDS=%Subst(OutputData:StrPos: c +%Size(KeyDS)) Anyway you should be able to adapt this code for your pgm.... Thanks, Tommy Holden -----Original Message----- From: Tony Carolla [mailto:carolla@xxxxxxxxx] Sent: Thursday, September 23, 2004 10:51 AM To: rpg400-l@xxxxxxxxxxxx Subject: Key field info I have written a quick little app to list the fields in a physical file, using the QUSCRTUS, QUSPTRUS, QUSLRCD and QUSLFLD APIs. The fields are placed in a subfile, and listed for the user. It's basically like DSPFFD, without all the extra 'stuff' that I don't usually need to see at a glance. Neato. I would like to also indicate which fields are key fields, and what order these key fields are in. I can't see which API would help me with this detail. I don't see any option on the QUSLFLD API to show this, nor on the QUSLRCD API. Also, I don't see a way of knowing how many fields are returned from the QUSLFLD API. I currently have a DS based on a POINTER to the user space, and I increment the pointer after each field retrieval to the subfile. I test the first character of the field name for containing an alpha character, and if it does not, I assume I have reached the end of the loop. Kind of messy, but it works. Is there a better way? TIA Tony Carolla, Programmer/Analyst MedAmerica Billing Services, Inc. -- "Enter any 11-digit prime number to continue..." -- 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.