Comment :
Référence : |
Les fichiers HOLD structurés facilitent la migration de sources de données et de rapports entre environnements d'exploitation.
D'autres formats HOLD capturent les données à partir de sources originales et peuvent conserver certains éléments structurels implicites de la requête elle même. Toutefois, ils ne propagent pas la plupart des informations sur les sources de données originales accédées et leurs inter-relations avec le fichier maître ou la source de données HOLD. Toutefois, les fichiers HOLD structurés, extraient les données vers un structure qui reproduit les sources de données originales. Les requêtes suivantes faites en fonction du fichier HOLD peuvent utiliser ces relations de données conservées pour recréer les mêmes types de relations dans d'autres environnements ou dans d'autres types de sources de données.
Un fichier HOLD structuré peut être créé au format ALPHA, BINARY ou FOCUS :
Dans tous les cas, le fichier HOLD contient toutes les instances de segments originales requises pour fournir le rapport complet en fonction de la requête TABLE elle-même. Indépendamment de la commande d'affichage utilisée dans la requête originale (PRINT, LIST, SUM, COUNT), le fichier HOLD structuré est créé comme si la commande est PRINT. L'agrégation est ignorée.
Le fichier HOLD contient soit tous les champs de la structure identifiée par la requête qui servent à satisfaire la requête ou tous les champs d'affichage et les champs BY. Le fichier ne contient pas les champs DEFINE qui ne sont pas spécifiquement référencés dans la requête. Elle contient tous les champs nécessaires à l'évaluation de tout champ DEFINE référencé dans la requête.
Les fichiers HOLD structurés sont pris en charge uniquement pour les commandes TABLE et TABLEF. Ils peuvent être créés là où un fichier HOLD est pris en charge. Vous devez activer les fichier HOLD structurés dans une requête spécifique en lançant la commande ON TABLE SET EXTRACT dans la requête avant de créer le fichier HOLD structuré.
ON TABLE SET EXTRACT {ON|*|OFF}
où :
Avant d'émettre la commande HOLD, activez les fichiers HOLD structurés pour la requête en lançant la commande ON TABLE SET EXTRACT décrite dans Activer des fichiers HOLD structurés pour une requête. Puis émettez la commande HOLD pour créer le fichier HOLD structuré :
[ON TABLE] {HOLD|PCHOLD} [AS name] FORMAT {ALPHA|BINARY|FOCUS}
où :
Remarque : vous pouvez lancer la commande SET pour définir le format HOLD par défaut à ALPHA ou BINARY :
SET HOLDFORMAT=ALPHA SET HOLDFORMAT=BINARY
Pour spécifier des options de création de l'extraction, telles que l'exclusion des champs spécifiques, utilisez l'option * de la commande SET EXTRACT :
ON TABLE SET EXTRACT * EXCLUDE = (fieldname1, fieldname2, fieldname3 , ..., fieldnamen),$ FIELDS={ALL|EXPLICIT},$ ENDEXTRACT ON TABLE HOLD AS name FORMAT {ALPHA|BINARY|FOCUS}
où :
TABLE FILE EMPLOYEE PRINT LAST_NAME FIRST_NAME JOBCODE ED_HRS BY DEPARTMENT BY HIGHEST SALARY ON TABLE SET EXTRACT ON ON TABLE HOLD FORMAT ALPHA END
La requête génère le fichier maître HOLD suivant :
FILENAME=HOLD , SUFFIX=FIX , $ SEGMENT=EMPINFO, SEGTYPE=S0, $ FIELDNAME=RECTYPE, ALIAS=R, USAGE=A3, ACTUAL=A3, $ FIELDNAME=LAST_NAME, ALIAS='LN', USAGE=A15, ACTUAL=A15, $ FIELDNAME=FIRST_NAME, ALIAS='FN', USAGE=A10, ACTUAL=A10, $ FIELDNAME=DEPARTMENT, ALIAS='DPT', USAGE=A10, ACTUAL=A10, $ FIELDNAME=ED_HRS, ALIAS='OJT', USAGE=F6.2, ACTUAL=A06, $ SEGMENT=PAYINFO, SEGTYPE=S0, PARENT=EMPINFO, $ FIELDNAME=RECTYPE, ALIAS=1, USAGE=A3, ACTUAL=A3, $ FIELDNAME=SALARY, ALIAS='SAL', USAGE=D12.2M, ACTUAL=A12, $ FIELDNAME=JOBCODE, ALIAS='JBC', USAGE=A3, ACTUAL=A03, $
Notez que le champ RECTYPE généré pour les fichiers HOLD structurés ALPHA ou BINARY. Chaque enregistrement dans le fichier HOLD commence par RECTYPE pour indiquer le segment auquel il appartient dans la structure originale. Le segment racine contient RECTYPE-R. Les RECTYPE des autres segments sont des numéros séquentiels attribués de haut en bas, de gauche à droite.
Voici les premiers enregistrements dans le fichier HOLD :
R STEVENS ALFRED PRODUCTION 25.00 1 11000.00A07 1 10000.00A07 R SMITH MARY MIS 36.00 1 13200.00B14 R JONES DIANE MIS 50.00 1 18480.00B03 1 17750.00B02 R SMITH RICHARD PRODUCTION 10.00 1 9500.00A01 1 9050.00B01
TABLE FILE EMPLOYEE PRINT LAST_NAME FIRST_NAME JOBCODE ED_HRS BY DEPARTMENT BY HIGHEST SALARY ON TABLE SET EXTRACT ON ON TABLE HOLD FORMAT FOCUS END
La requête génère le fichier maître HOLD suivant :
FILENAME=HOLD , SUFFIX=FOC , $ SEGMENT=EMPINFO, SEGTYPE=S0, $ FIELDNAME=LAST_NAME, ALIAS='LN', USAGE=A15, $ FIELDNAME=FIRST_NAME, ALIAS='FN', USAGE=A10, $ FIELDNAME=DEPARTMENT, ALIAS='DPT', USAGE=A10, $ FIELDNAME=ED_HRS, ALIAS='OJT', USAGE=F6.2, $ SEGMENT=PAYINFO, SEGTYPE=S0, PARENT=EMPINFO, $ FIELDNAME=SALARY, ALIAS='SAL', USAGE=D12.2M, $ FIELDNAME=JOBCODE, ALIAS='JBC', USAGE=A3, $
La requête suivante reconstitue la source de données FOCUS d'origine du fichier HOLD structuré créé dans Créer un fichier HOLD structuré au format ALPHA :
TABLE FILE HOLD PRINT LAST_NAME FIRST_NAME JOBCODE ED_HRS BY DEPARTMENT BY HIGHEST SALARY ON TABLE SET EXTRACT ON ON TABLE HOLD AS RECONST FORMAT FOCUS END
La requête génère le fichier maître suivant :
FILENAME=RECONST , SUFFIX=FOC , $ SEGMENT=EMPINFO, SEGTYPE=S0, $ FIELDNAME=LAST_NAME, ALIAS='LN', USAGE=A15, $ FIELDNAME=FIRST_NAME, ALIAS='FN', USAGE=A10, $ FIELDNAME=DEPARTMENT, ALIAS='DPT', USAGE=A10, FIELDNAME=ED_HRS, ALIAS='OJT', USAGE=F6.2, $ SEGMENT=PAYINFO, SEGTYPE=S0, PARENT=EMPINFO, $ FIELDNAME=SALARY, ALIAS='SAL', USAGE=D12.2M, $ FIELDNAME=JOBCODE, ALIAS='JBC', USAGE=A3, $
La requête suivante imprime la sortie de rapport :
TABLE FILE RECONST PRINT LAST_NAME FIRST_NAME JOBCODE ED_HRS BY DEPARTMENT BY HIGHEST SALARY END
La sortie est :
DEPARTMENT SALARY LAST_NAME FIRST_NAME JOBCODE ED_HRS ---------- ------ --------- ---------- ------- ------ MIS $27,062.00 CROSS BARBARA A17 45.00 $25,775.00 CROSS BARBARA A16 45.00 $21,780.00 BLACKWOOD ROSEMARIE B04 75.00 $18,480.00 JONES DIANE B03 50.00 MCCOY JOHN B02 .00 $17,750.00 JONES DIANE B02 50.00 $13,200.00 SMITH MARY B14 36.00 $9,000.00 GREENSPAN MARY A07 25.00 $8,650.00 GREENSPAN MARY B01 25.00 PRODUCTION $29,700.00 BANNING JOHN A17 .00 $26,862.00 IRVING JOAN A15 30.00 $24,420.00 IRVING JOAN A14 30.00 $21,120.00 ROMANS ANTHONY B04 5.00 $16,100.00 MCKNIGHT ROGER B02 50.00 $15,000.00 MCKNIGHT ROGER B02 50.00 $11,000.00 STEVENS ALFRED A07 25.00 $10,000.00 STEVENS ALFRED A07 25.00 $9,500.00 SMITH RICHARD A01 10.00 $9,050.00 SMITH RICHARD B01 10.00
Cette requête exclut le champ SALARY utilisé pour le enchaînement.
TABLE FILE EMPLOYEE PRINT LAST_NAME FIRST_NAME JOBCODE ED_HRS BY DEPARTMENT BY HIGHEST SALARY ON TABLE SET EXTRACT * EXCLUDE=(SALARY),$ ENDEXTRACT ON TABLE HOLD FORMAT FOCUS END
La requête génère le fichier maître HOLD suivant :
FILENAME=HOLD , SUFFIX=FOC , $ SEGMENT=EMPINFO, SEGTYPE=S0, $ FIELDNAME=LAST_NAME, ALIAS='LN', USAGE=A15, $ FIELDNAME=FIRST_NAME, ALIAS='FN', USAGE=A10, $ FIELDNAME=DEPARTMENT, ALIAS='DPT', USAGE=A10, $ FIELDNAME=ED_HRS, ALIAS='OJT', USAGE=F6.2, $ SEGMENT=PAYINFO, SEGTYPE=S0, PARENT=EMPINFO, $ FIELDNAME=JOBCODE, ALIAS='JBC', USAGE=A3, $
Les fichiers HOLD structurés contiennent toutes les instances de segments originales requises pour compléter la requête TABLE ou TABLEF. Indépendamment de la commande d'affichage utilisée dans la requête originale (PRINT, LIST, SUM, ou COUNT), le fichier HOLD structuré est créé comme si la commande est PRINT.
Spécifiquement, le fichier d'extraction contient les éléments suivants :
Notez que les champs référencés plusieurs fois dans une requête sont inclus une seule fois dans le fichier HOLD.
Remarque : si un membre du groupe est expressément exclu (EXCLUDE) ou non référencé, son groupe (GROUP) n'est pas ajouté au fichier maître extrait (ceci s'applique aux groupes imbriqués et qui se chevauchent). Si un GROUP et ses éléments sont nommés dans une requête, le GROUP n'est pas ajouté en tant que champ réel dans le fichier HOLD d'extraction.
Notes structurelles
Notes d'optimisation SQL
Notes BY/ACROSS/FOR
Notes de mise en forme
DEFINE FILE CAR COUNTRY/A25=COUNTRY; END
Notes DBA
Reconstituer les fichiers d'extraction
WebFOCUS |