Comment : Référence : |
Les fichiers HOLD remplissent des valeurs de données nombre entier binaire et décimal condensé jusqu'à une frontière de mot entier. Par exemple, un champ nombre entier à trois chiffres (I3), est stocké comme quatre octets dans un fichier HOLD. Afin que les programmes de troisième génération, tels que COBOL, puissent lire les fichiers HOLD d'une manière précise, il peut vous être nécessaire de sauvegarder les champs dans un fichier HOLD sans remplissage.
Pour supprimer le remplissage de champs dans le fichier HOLD, vous devez reformater les champs dans la requête afin de remplacer les formats ACTUAL par défaut qui correspondent aux formats USAGE dans le fichier maître :
SET HOLDLIST = PRINTONLY TABLE FILE filename display_command fieldname/[In|Pn.d] . . ON TABLE HOLD AS name FORMAT INTERNAL END
où :
Vous noterez que la précision double de point flottant (D) et la précision unique de point flottant (F) ne sont pas changées par HOLD FORMAT INTERNAL.
Pour voir une illustration, consultez Création d'un fichier HOLD avec HOLD FORMAT INTERNAL.
La syntaxe est :
bytes = INT (n/2) + 1
où :
Pour éviter des résultats incorrects, assurez-vous que le format que vous spécifiez est assez grand pour tenir les valeurs de données.
Dans cet exemple, les valeurs ACTUAL de RETAIL_COST, DEALER_COST et SEATS sont toutes remplies jusqu'à un mot entier. Des champs alphanumériques occupent aussi des mots entiers.
TABLE FILE CAR PRINT CAR COUNTRY RETAIL_COST DEALER_COST SEATS ON TABLE HOLD AS DJG END
La requête crée le fichier maître suivant :
FILE=DJG, SUFFIX=FIX SEGMENT=DJG, SEGTYPE=S0 FIELDNAME=CAR ,ALIAS=E01 ,USAGE=A16 ,ACTUAL=A16 ,$ FIELDNAME=COUNTRY ,ALIAS=E02 ,USAGE=A10 ,ACTUAL=A12 ,$ FIELDNAME=RETAIL_COST ,ALIAS=E03 ,USAGE=D7 ,ACTUAL=D08 ,$ FIELDNAME=DEALER_COST ,ALIAS=E04 ,USAGE=D7 ,ACTUAL=D08 ,$ FIELDNAME=SEATS ,ALIAS=E05 ,USAGE=I3 ,ACTUAL=I04 ,$
Dans cet exemple, DEALER_COST et RETAIL_COST sont définis dans le fichier Master comme champs D, mais la requête annule RETAIL_COST comme champ I2 et DEALER_COST comme champ P3.
SET HOLDLIST=PRINTONLY TABLE FILE CAR PRINT CAR COUNTRY RETAIL_COST/I2 DEALER_COST/P3 SEATS/I1 ON TABLE HOLD AS HINT3 FORMAT INTERNAL END
Cela a pour résultat le fichier maître suivant :
FILE=HINT3, SUFFIX=FIX SEGMENT=HINT3, SEGTYPE=S0 FIELDNAME=CAR ,ALIAS=E01 ,USAGE=A16 ,ACTUAL=A16 ,$ FIELDNAME=COUNTRY ,ALIAS=E02 ,USAGE=A10 ,ACTUAL=A10 ,$ FIELDNAME=RETAIL_COST ,ALIAS=E03 ,USAGE=I6 ,ACTUAL=I02 ,$ FIELDNAME=DEALER_COST ,ALIAS=E04 ,USAGE=P4 ,ACTUAL=P02 ,$ FIELDNAME=SEATS ,ALIAS=E05 ,USAGE=I4 ,ACTUAL=I01 ,$
Les formats ACTUAL des champs annulés sont I2, P2 et I1. L'ACTUAL de DEALER_COST est P2 parce que P3, l'annulation de format, signifie trois chiffres d'affichage pouvant être stockés dans deux chiffres réels. Vous noterez que le champ alphanumérique n'est pas rempli.
WebFOCUS |