SQL : récupérer le nom d'un PF

Si vous créez une table SQL, vous n'êtes plus obligé de vous limiter à 10 caractères mais le système maintient le lien pour pouvoir utiliser un pf sous 10 caractères.

Voici un petit exemple qui permet de retrouver le nom PF à partir du nom de table en utilisant l'API QDBRTVSN

PGM PARM(&PFLONG &LIB &PFCOURT) /*-----------------------------------*/
/*                                                                   */
/* RETROUVER LE NOM DU PF EN AYANT LE NOM DE LA TABLE SQL            */
/*                                                                   */
/*                                                                   */
/*-------------------------------------------------------------------*/
DCL        VAR(&PFLONG) TYPE(*CHAR) LEN(138) +                        
                          VALUE(TABLES_DES_CLIENTS)                   
DCL        VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE(RECUP)                 
DCL        VAR(&PFCOURT) TYPE(*CHAR) LEN(10)                          
DCL        VAR(&RETOUR) TYPE(*CHAR) LEN(20)                           
DCL        VAR(&NOMLEN) TYPE(*INT) LEN(4 )                            
DCL        VAR(&ERREUR) TYPE(*CHAR) LEN(28)                           
DCL        VAR(&I) TYPE(*DEC) LEN(3) VALUE(1)                         
/* CALCUL DE LA TAILLE DU NOM LONG */                                 
BOUCLE:   

      IF COND(%SST(&PFLONG &I 1) = ' ') THEN(DO)                 
          CHGVAR &NOMLEN (&I -1)                                 
      ENDDO                                                      
      ELSE DO                                                    
          CHGVAR &I (&I +1)                                      
      GOTO BOUCLE                                                
      ENDDO                                                      
/* APPEL DE L'API                  */                            
      CALL       PGM(QDBRTVSN) PARM(&RETOUR &PFLONG &NOMLEN &LIB +

                          &ERREUR)                    
      IF         COND(%SST(&ERREUR 9 7) = ' ') THEN(DO)
          CHGVAR &PFCOURT   (%SST(&RETOUR 1 10))      
      ENDDO                                           
      ELSE DO                                         
          CHGVAR &PFCOURT   ('*ERROR')                
      ENDDO                                           
ENDPGM