Comment : Référence : |
Qu'elle soit lancée au sein d'une requête ou après l'exécution de la requête, la commande HOLD peut créer une source de données FOCUS et un fichier principal correspondant à partir des données extraites dans la requête de rapport. Cette fonction vous permet de créer :
Conseil : si votre environnement prend en charge SCAN, FSCAN, MODIFY ou Maintain, et que vous créez un fichier HOLD au format FOCUS, vous pouvez mettre à jour le fichier HOLD, ainsi que l'utiliser pour faire un rapport. Pour plus de détails, reportez-vous au document traitant ces fonctions.
Remarque : si vous conservez un fichier au format FOCUS, cela peut provoquer l'avertissement (FOC441) Ce fichier existe déjà. En créant un nouveau fichier, vous remplacez le fichier existant. Le lancement de la commande SET WARNING=OFF supprime ce message.
Dans une requête de rapport, utilisez
ON TABLE HOLD [AS filename] FORMAT FOCUS [INDEX field1 field2 ...]
où :
Ce nom peut compter jusqu'à 64 caractères.
Remarque : si vous utilisez un nom qui comprend plus de huit caractères sur OS/390, un nom de membre à huit caractères est généré tel que décrit dans Description de données en langage WebFOCUS . Pour associer le nom long au nom membre, l'attribut $ VIRT est généré sur la première ligne du fichier principal. Le fichier HOLD résultant est un fichier de données temporaire. Pour attribuer le nom de fichier principal long à un fichier de données permanent, lancez la commande DYNAM ALLOCATE avec l'option LONGNAME avant la requête HOLD. « ddname » dans la commande doit faire référence à un membre existant de MASTER PDS.
Notez que lorsque vous utilisez ce format depuis Hot Screen, vous ne pouvez pas lancer d'autre commande HOLD pendant la même session Hot Screen.
Le fichier HOLD est alloué dynamiquement s'il n'est pas actuellement alloué dans z/OS. Cela veut dire que le système peut supprimer le fichier à la fin de la session, même si vous ne l'avez pas fait. Puisque les fichiers HOLD sont normalement supprimés, il s'agit de la valeur par défaut désirée. Toutefois, si vous souhaitez enregistrer le fichier maître, allouez-le à ddname HOLDMAST en tant que jeu de données permanent. L'allocation peut avoir lieu dans la CLIST FOCUS standard. Par exemple :
ALLOC F(HOLDMAST) DA('qualif.HOLDMAST') SHR REUSE
Notez que l'utilitaire ddname HOLDMAST ne doit pas faire référence au même PDS auquel les noms MASTER et FOCEXEC font référence.
La structure de la source de données FOCUS varie en fonction de la requête de rapport. Pour ce faire, il faut passer par les étapes suivantes :
Pour contrôler la propagation des attributs ACCEPT et TITLE au fichier principal associé au fichier HOLD, utilisez la commande SET HOLDATTR. Pour contrôler l'attribut FIELDNAME dans le fichier principal du fichier HOLD, utilisez la commande SET ASNAMES. Pour en savoir plus au sujet du contrôle des attributs TITLE, ACCEPT et FIELDNAME dans un fichier maître HOLD, consultez Contrôle d'attributs dans les fichiers Master HOLD.
L'exemple ci-après crée un sous-ensemble de la source de données CAR.
TABLE FILE CAR SUM SALES BY COUNTRY BY CAR BY MODEL ON TABLE HOLD AS X1 FORMAT FOCUS END
Cette requête crée une source de données FOCUS à segment unique avec un type de segment de S3 (car il a trois champs BY) appelé X1.
La requête crée le fichier principal X1 :
FILE=X1, SUFFIX=FOC SEGMENT=SEG01 ,SEGTYPE=S03 FIELDNAME=COUNTRY ,ALIAS=E01 ,USAGE=A10 ,$ FIELDNAME=CAR ,ALIAS=E02 ,USAGE=A16 ,$ FIELDNAME=MODEL ,ALIAS=E03 ,USAGE=A24 ,$ FIELDNAME=SALES ,ALIAS=E04 ,USAGE=I6 ,$
Cet exemple crée une source de données FOCUS à segment unique avec un type de segment de S4 (car il se compose de trois champs BY et du champ FOCLIST FIELD).
TABLE FILE CAR PRINT SALES BY COUNTRY BY CAR BY MODEL ON TABLE HOLD AS X2 FORMAT FOCUS INDEX MODEL END
Le fichier principal créé par cette requête est :
FILE=X2, SUFFIX=FOC SEGMENT=SEG01, SEGTYPE=S04 FIELDNAME=COUNTRY ,ALIAS=E01 ,USAGE=A10 ,$ FIELDNAME=CAR ,ALIAS=E02 ,USAGE=A16 ,$ FIELDNAME=MODEL ,ALIAS=E03 ,USAGE=A24 ,FIELDTYPE=I,$ FIELDNAME=FOCLIST ,ALIAS=E04 ,USAGE=I5 ,$ FIELDNAME=SALES ,ALIAS=E05 ,USAGE=I6 ,$
La requête suivante comprend deux commandes SUM. La première, SUM SALES BY COUNTRY, crée un segment avec comme clé COUNTRY et comme champ de données les valeurs sommées de SALES. La deuxième, SUM SALES BY COUNTRY BY CAR BY MODEL, crée un segmet descendant, avec comme clés CAR et MODEL et comme champ non-clé SALES.
Le champ COUNTRY ne fait pas partie de la clé du deuxième segment. COUNTRY est une clé dans le chemin vers le deuxième segment. Toute répétition de cette valeur est superflue.
TABLE FILE CAR SUM SALES BY COUNTRY SUM SALES BY COUNTRY BY CAR BY MODEL ON TABLE HOLD AS X3 FORMAT FOCUS END
Cela crée une source de données FOCUS à deux segments.
Le fichier principal pour cette source de données FOCUS nouvellement créée est :
FILE=X3, SUFFIX=FOC SEGMENT=SEG01, SEGTYPE=S01 FIELDNAME=COUNTRY ,ALIAS=E01 ,USAGE=A10 ,$ FIELDNAME=SALES ,ALIAS=E02 ,USAGE=I6 ,$ SEGMENT=SEG02, SEGTYPE=S02,PARENT=SEG01 FIELDNAME=CAR ,ALIAS=E03 ,USAGE=A16 ,$ FIELDNAME=MODEL ,ALIAS=E04 ,USAGE=A24 ,$ FIELDNAME=SALES ,ALIAS=E05 ,USAGE=I6 ,$
Dans cet exemple, chaque commande d'affichage crée un segment.
La clé du segment racine est le champ BY, COUNTRY, et les clés aux segments descendants sont les nouveaux champs BY. Le dernier segment utilise le champ FOCLIST interne comme partie de la clé, car la commande d'affichage est PRINT.
TABLE FILE CAR SUM SALES BY COUNTRY BY CAR SUM SALES BY COUNTRY BY CAR BY MODEL PRINT SALES BY COUNTRY BY CAR BY MODEL BY BODY ON TABLE HOLD AS X4 FORMAT FOCUS INDEX COUNTRY MODEL END
Le fichier principal est :
FILE=X4, SUFFIX=FOC SEGMENT=SEG01, SEGTYPE =S02 FIELDNAME=COUNTRY ,ALIAS=E01 ,USAGE=A10 ,FIELDTYPE=I,$ FIELDNAME=CAR ,ALIAS=E02 ,USAGE=A16 ,$ FIELDNAME=SALES ,ALIAS=E03 ,USAGE=I6 ,$ SEGMENT=SEG02, SEGTYPE =S01 ,PARENT=SEG01 FIELDNAME=MODEL ,ALIAS=E04 ,USAGE=A24 ,FIELDTYPE=I,$ FIELDNAME=SALES ,ALIAS=E05 ,USAGE=I6 ,$ SEGMENT=SEG03, SEGTYPE =S02 ,PARENT=SEG02 FIELDNAME=BODYTYPE ,ALIAS=E06 ,USAGE=A12 ,$ FIELDNAME=FOCLIST ,ALIAS=E07 ,USAGE=I5 ,$ FIELDNAME=SALES ,ALIAS=E08 ,USAGE=I6 ,$
WebFOCUS |