CHKPCK : Valider un champ condensé

Comment :

Langages disponibles : reporting, Maintain

La fonction CHKPCK valide les données dans un champ décrit comme format condensé (si disponible sur votre plate-forme). La fonction empêche une exemption de données de se produire lors d'une lecture de requête de champ qui devrait contenir un nombre condensé valide mais ne l'est pas.

Pour utiliser CHKPCK :

  1. Assurez-vous que le fichier maître (attribut USAGE et ACTUAL) définissent le champ comme étant alphanumérique et non pas condensé. Il ne modifie pas les données de champ, qui demeurent condensées, mais il active la requête pour lire les données sans une exception de données.
  2. Appelez CHKPCK pour examiner le champ. La fonction renvoie le résultat d'un champ défini comme étant condensé. Si la valeur qu'elle examine est un nombre condensé valide, la fonction renvoie cette valeur; si la valeur n'est pas condensée, la fonction renvoie un code d'erreur.

Haut de page

x
Syntaxe : Valider un champ condensé
CHKPCK(length, in_value, error, output)

où :

length

Numérique

Est la longueur du champ condensé. Elle peut être comprise entre 1 et 16 octets.

infield

Alphanumérique

Est le nom du champ condensé ou la valeur devant être vérifié en tant que décimal condensé. La valeur doit être décrite en alphanumériques, pas condensé.

error

Numérique

est le code d'erreur que la fonction renvoie si une valeur n'est pas condensée. Choisissez un code d'erreur en dehors de la plage de données. Le code d'erreur est d'abord tronquée à un nombre entier, puis converti en format condensé. Cependant, il se peut qu'il apparaisse sur un rapport avec une décimale en fonction du format de sortie.

output

Décimal condensé

est le champ qui contient le résultat, ou le format de la valeur de sortie entre guillemets simples.



Exemple : Validation d'une donnée condensée
  1. Préparer une source de données qui inclut des données condensées invalides. L'exemple suivant créé TESTPACK, qui contient le champ PACK_SAL. PACK_SAL est défini en alphanumériques mais en fait, il contient des données condensées. Les données de paquet invalides sont stockées dans AAA.
    DEFINE FILE EMPLOYEE
    PACK_SAL/A8 = IF EMP_ID CONTAINS '123'
          THEN 'AAA' ELSE PCKOUT(CURR_SAL, 8, 'A8');
    END
    TABLE FILE EMPLOYEE
    PRINT DEPARTMENT PACK_SAL BY EMP_ID
    ON TABLE SAVE AS TESTPACK
    END

    La sortie est :

     NUMBER OF RECORDS IN TABLE=       12  LINES=     12 
    ALPHANUMERIC  RECORD NAMED  TESTPACK 
    FIELDNAME                         ALIAS          FORMAT        LENGTH
    EMP_ID                            EID            A9               9 
    DEPARTMENT                        DPT            A10             10 
    PACK_SAL                                         A8               8 
    TOTAL                                                            27
  2. Crée un fichier maître pour la source de données TESTPACK. Définissez le champ PACK_SAL en tant que champs alphanumériques dans les attributs USAGE et ACTUAL.
    FILE  = TESTPACK,  SUFFIX = FIX
    FIELD = EMP_ID    ,ALIAS = EID,USAGE = A9 ,ACTUAL = A9 ,$
    FIELD = DEPARTMENT,ALIAS = DPT,USAGE = A10,ACTUAL = A10,$
    FIELD = PACK_SAL  ,ALIAS = PS ,USAGE = A8 ,ACTUAL = A8 ,$
  3. Créez une requête qui utilise CHKPCK pour valider les valeurs dans le champ PACK_SAL, et stocker le résultat dans le champ GOOD_PACK. Les valeurs qui ne sont pas dans un format condensé renvoie le code d'erreur -999. Les valeurs dans un format condensé apparaît avec exactitude.
    DEFINE FILE TESTPACK
    GOOD_PACK/P8CM = CHKPCK(8, PACK_SAL, -999, GOOD_PACK); 
    END
    TABLE FILE TESTPACK
    PRINT DEPARTMENT GOOD_PACK BY EMP_ID
    END

    La sortie est :

    EMP_ID     DEPARTMENT    GOOD_PACK 
    ------     ----------    --------- 
    071382660  PRODUCTION      $11,000 
    112847612  MIS             $13,200 
    117593129  MIS             $18,480 
    119265415  PRODUCTION       $9,500 
    119329144  PRODUCTION      $29,700 
    123764317  PRODUCTION        -$999 
    126724188  PRODUCTION      $21,120 
    219984371  MIS             $18,480 
    326179357  MIS             $21,780 
    451123478  PRODUCTION        -$999 
    543729165  MIS              $9,000 
    818692173  MIS             $27,062

Information Builders