× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.