Maintien de la sortie de rapport au format FOCUS

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.


Haut de page

x
Syntaxe : Créer des fichiers HOLD au format FOCUS

Dans une requête de rapport, utilisez

ON TABLE HOLD [AS filename] FORMAT FOCUS [INDEX field1 field2 ...]

où :

AS filename
Spécifie un nom pour le fichier HOLD. Si vous ne spécifiez pas un nom de fichier, HOLD devient le nom par défaut. Comme chaque commande HOLD subséquente écrase le fichier HOLD précédant, il est recommandé de coder un nom de fichier distinct dans chaque requête afin de diriger les données extraites vers un autre fichier, empêchant ainsi l'écrasement du fichier par la prochaine commande HOLD.

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.

INDEX field1...
Vous permet d'indexer les champs FOCUS. Tous les champs spécifiés après INDEX sont spécifiés comme FIELDTYPE=I dans le fichier principal. Un maximum de quatre commandes peuvent être indexés.

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.


Haut de page

x
Référence : Notes du système d'exploitation pour les fichiers HOLD au format FOCUS

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.


Haut de page

x
Référence : Contrôler la structure du fichier FOCUS

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.



Exemple : Création d'un fichier HOLD au format FOCUS

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    ,$


Exemple : Utilisation de PRINT en créant une source de données FOCUS avec un champ FOCLIST

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    ,$


Exemple : Création d'une source de données FOCUS à deux segments

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     ,$


Exemple : Création d'une source de données FOCUS à trois segments

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