Présentation des listes ARCAD
Objectif
ARCAD SKIPPER met à disposition des utilisateurs une gestion de liste très puissante.
Les listes ARCAD peuvent être utilisées dans ARCAD mais aussi en dehors d’ARCAD. Elles permettent des lister différents éléments (objets/sources/bibliothèques ou autre). Elles sont stockées sous forme de table pouvant être utilisées par des programmes ou par SQL.
Ces listes peuvent être filtrées, comparées, fusionnées.
Il est possible d’extraire une nouvelle liste à partir d’une liste existante et de critères de sélection.
Et surtout : il est possible d’exécuter une action spécifique sur chaque élément d’une liste.
La majorité des macro-commandes ARCAD reposent sur les listes ARCAD.
Voici une rapide présentation des fonctionnalités les plus courantes offertes par la gestion des listes ARCAD.
Qu'est ce qu'une liste ARCAD ?
Une liste ARCAD est une table au format fixe.
Le format d’une liste ARCAD reste toujours identique, même si les informations portées par les listes peuvent changer d’une liste à une autre, la structure de la table Liste reste toujours la même.
Exemple : Le format de la liste des VERSIONS et le même que celui de la liste des OBJETS ou de toute autre liste.
Ainsi en fonction des données portées par la liste la colonne LST_JOBJ pourra contenir :
- Une bibliothèque
- Un objet
- Un membre source
- Une version
- Une application
- ou autre
Format d'une liste ARCAD
Nom du champ | Désignation | Type de champ | Longueur | Nombre de décimales | ||||
---|---|---|---|---|---|---|---|---|
LST_CELTTY | Element Type (M/O/F/I) | GRAPHIC | 1 | |||||
LST_JOBJ | Object/Member/Field | GRAPHIC | 10 | |||||
LST_JLIB | Library/Field Format | GRAPHIC | 10 | |||||
LST_CCPLT | Compil Type or Propag Fmt | GRAPHIC | 7 | |||||
LST_CTYPE | Object/Member/Field Type | GRAPHIC | 10 | |||||
LST_CATR | Object Attribute | GRAPHIC | 10 | |||||
LST_JSRCF | Source File/Field File | GRAPHIC | 10 | |||||
LST_JXLIB | Creation Library | GRAPHIC | 10 | |||||
LST_NORD | Order Number | DECIMAL | 3 | |||||
LST_CSTS | Status | GRAPHIC | 1 | |||||
LST_CTXT | Text | GRAPHIC | 50 | |||||
LST_TDATE | Date (Fmt YYYYMMDD) | CHARACTER | 8 | |||||
LST_TTIME | Hour (Fmt HHMMSS) | CHARACTER | 6 | |||||
LST_CAPP | Application | GRAPHIC | 10 | |||||
LST_CENV | Environment | GRAPHIC | 10 | |||||
LST_CVER | Version | GRAPHIC | 8 | |||||
LST_CLCL | Library Location Type | GRAPHIC | 4 | |||||
LST_JDLIB | Destination Library Name | GRAPHIC | 10 | |||||
LST_JZSEL1 | Selection Field 1 (Name) | GRAPHIC | 10 | |||||
LST_JZSEL2 | Selection Field 2 (Name) | GRAPHIC | 30 | |||||
LST_JZSEL3 | Selection Field 3 (Name) | VARGRAPHIC | 50 | |||||
LST_JZSEL4 | Selection Field 4 (Name) | VARGRAPHIC | 50 | |||||
LST_NZSEL5 | Selection Field 5 (Num.) | DECIMAL | 15 | |||||
LST_NZSEL6 | Selection Field 6 (Num.) | DECIMAL | 15 | |||||
LST_CZSEL7 | Selection Field 7 (Text) | GRAPHIC | 10 | |||||
LST_CZSEL8 | Selection Field 8 (Text) | VARGRAPHIC | 100 | |||||
LST_CZSEL9 | Selection Field 9 (Text) | VARGRAPHIC | 1000 | |||||
LST_CSST | Sub-System | GRAPHIC | 10 | |||||
LST_CFNC | Function | GRAPHIC | 10 | |||||
LST_CSFN | Sub-Function | GRAPHIC | 10 | |||||
LST_CIMPAT | Imposed object attributes c | VARGRAPHIC | 50 | |||||
LST_JFLD | Field Name | GRAPHIC | 30 | |||||
LST_NQUAL | Field Qualif. # | INTEGER | 9 | |||||
LST_CISDTC | DTC Object (0/1) | GRAPHIC | 1 | |||||
LST_CALS | Alias Name | VARGRAPHIC | 256 | |||||
LST_CIOBJX | IFS Object Extended Name (L | VARGRAPHIC | 255 | |||||
LST_CIOBJU | IFS Object Extended Name (U | VARGRAPHIC | 255 | |||||
LST_CIDIRX | IFS Directory Extended Name | VARGRAPHIC | 512 | |||||
LST_CIDIRU | IFS Directory Extended Name | VARGRAPHIC | 512 | |||||
LST_CDIDIX | IFS Dest. Dir. Extended Nam | VARGRAPHIC | 512 | |||||
LST_CDIDIU | IFS Dest. Dir. Extended Nam | VARGRAPHIC | 512 | |||||
LST_NRRN | Record number | INTEGER | 9 | |||||
LST_CFLG1 | Internal flag 1 | GRAPHIC | 3 | |||||
LST_CFLG2 | Internal flag 2 | GRAPHIC | 3 | |||||
LST_CFLG3 | Internal flag 3 | GRAPHIC | 10 | |||||
LST_CFLG4 | Internal flag 4 | GRAPHIC | 10 | |||||
LST_TCRTT | Date/Time creation of recor | TIMESTAMP | 26 | 6 | ||||
LST_JCRTUS | Current user creation of re | GRAPHIC | 10 | |||||
LST_JCRTPG | Program creation of record | GRAPHIC | 10 | |||||
LST_JCJNAM | Job name creation of record | GRAPHIC | 10 | |||||
LST_JCJUSR | User job creation of record | GRAPHIC | 10 | |||||
LST_JCJNBR | Job nbr creation of record | GRAPHIC | 6 | |||||
LST_TUPDT | Date/Time update of record | TIMESTAMP | 26 | 6 | ||||
LST_JUPDUS | Current user update of reco | GRAPHIC | 10 | |||||
LST_JUPDPG | Program update of record | GRAPHIC | 10 | |||||
LST_JUJNAM | Job name update of record | GRAPHIC | 10 | |||||
LST_JUJUSR | User job update of record | GRAPHIC | 10 | |||||
LST_JUJNBR | Job nbr update of record | GRAPHIC | 6 |
Commandes de génération de liste
ARCAD possède différentes commandes permettant la création et l’initialisation de listes ARCAD.
L’invite par F4 et l’aide par F1 sont disponibles sur toutes ces commandes.
- ACRTLST : Création d’une liste vide (cette liste devra être remplie par la suite).
Exemple :
ACRTLST LIST(QTEMP/MA_LISTE) REPLACE(*YES) TEXT(‘Titre de MA_LISTE‘)
- ACRTAPPLST : Création d’une liste des applications ARCAD.
Cette liste contiendra toutes les applications déclarées sous ARCAD.
Exemple :
ACRTAPPLST TOLIST(QTEMP/MES_APPLI) OPTION(*REPLACE) - ACRTENLST : Création d’une liste des environnements d’une application ARCAD.
Exemple :
ACRTENVLST APP(MON_APPLICATION_ARCAD) TOLIST(QTEMP/MES_ENV) - ACRTOBJLST : Création d’une liste des objets d’une bibliothèque ou d’une version.
Exemple 1 : Liste des objets d’une bibliothèque donnée
ACRTOBJLST LIB(MA_BIBLIOTHEQUE) TOLIST(MES_OBJETS) TEXT(‘Liste des objets‘)Exemple 2 : Liste des objets d’une version donnée
ACRTOBJLST LIB(*ENV) ENV(mon_application_arcad mon_environnement_arcad ma_version) TOLIST(MES_OBJETS) TEXT(‘Liste des objets‘) - ACRTMBRLST : Création d’une liste de membres (exemple membres sources)
Exemple : pour la liste des sources de QRPGLESRC de MA_BIBLIOTHEQUE
ACRTMBRLST LIB(MA_BIBLIOTHEQUE) SRCFILE(QRPGLESRC) TOLIST(QTEMP/LSTMBR) - ACRTVRLLST : Création d’une liste des bibliothèques de versions d’une application Arcad.
Exemple :
ACRTVRLLST APP(MON_APPLICATION_ARCAD) FROMVERS(*MIN) TOLIST(QTEMP/LSTVERS) - ACRTVERLST : Création des listes de contrôles d’une version (ce sont les listes créées lorsque l’on lance un contrôle de version)
- LSTSRC : Liste des sources ajoutés ou modifiés
- LSTRCPL : Liste des objets recompilés
- LSTCHGOBJ : Liste des objets sans sources ajoutés ou modifiés
- LSTOBJ : Liste de objets ajoutés ou recompilés
- LSTRMV : Liste des composants supprimés
- LSTRMVOBJ : Liste des objets supprimés
- LSTVERCPL : Liste des recompilations dans autres versions
Il existe d’autres commandes de création/initialisation de liste telles que :
ACRTFLDLST, ACRTLIBLST, ACRTLKVLST, ACRTIFSLST, ACRTILELST, ACRTOBVLST, ACRTREFLST…
Gestion des listes ARCAD
La commande AWRKLST permet d’accéder à la gestion des listes ARCAD.
A partir de cette option il est possible de :
- Afficher une liste
- Modifier une liste
- Supprimer une liste
- Copier une liste
- Extraire des éléments d’une liste
- Fusionner une liste avec une autre
- Exécuter une commande sur chaque élément d’une liste
- Comparer 2 listes
- …
Exemple: Pour gérer toutes les listes de la bibliothèque MA_BIBLIOTHEQUE
AWRKLST LIST(MA_BIBLIOTHEQUE/*ALL)
Commandes d'opérations sur une liste
Ces commandes sont accessibles via la commande AWRKLST mais peuvent également être lancées indépendamment (dans des macro-commandes ARCAD par exemple).
- AEXCLST : permet d’exécuter une commande sur chaque élément d’une liste.
Cette commande est très pratique pour déclencher des traitements à partir d’une liste.
Elle est souvent utilisée dans les macro-commandes ARCAD. - AEXTLST : permet d’extraire d’une liste les éléments présents dans une autre liste ou répondant à des critères de sélection.
- AUPDLST : permet de supprimer les doublons présents dans une liste.
- ACMPLST : permet de comparer 2 listes (avec possibilité de générer une liste des éléments communs ou une listes des éléments non trouvés)
- ACHKLST : permet de tester l’existence d’une liste.
- AMRGLST : permet de fusionner 2 listes.
- AINZLST : permet de réinitialiser une liste.
- …
Commandes d'opérations sur les éléments d'une liste
- AADDLSTE : permet d’ajouter un élément à une liste.
- ACHGLSTE : permet de modifier un élément d’une liste.
- ARMVLSTE : permet de supprimer un élément d’une liste.
- AHLDLSTE : permet de suspendre un élément d’une liste pour qu’il ne soit pas pris en compte lorsque l’on lance des traitement sur les éléments d’une liste via AEXCLST.
- ARLSLSTE : permet de libérer un élément d’une liste qui aurait été suspendu au préalable par AHLDLSTE.
- ACHKLSTE : permet de tester l’existence d’un élément d’une liste.
- …
Variables prédéfinies des listes ARCAD
Les commandes sur les listes Arcad et les commandes sur les éléments des listes Arcad peuvent nécessiter l’utilisation de variables lorsque l’on souhaite les utiliser de façons dynamiques.
Certaines de ces variables correspondent aux champs de la liste utilisée.
Pour trouver la liste de ces variables, il faut saisir la commande AEXCLST puis faire F4 puis faire F1 en ne positionnant le curseur sur aucune des zones saisissables : l’aide de la commande AEXCLST s’affiche. Faire F22 pour afficher l’aide en pleine page puis paginer jusqu’à l’affichage des variables utilisables.
J’en profite pour remercier Christophe SEPCHAT pour cette astuce !
A noter : ces variables commencent toutes par un « $ » lorsqu’elles utilisées directement dans une commandes, et par « % » lorsqu’elles sont utilisées dans des macro-commandes.
Variable | Type | Longueur | Description |
---|---|---|---|
&LALIAS | *CHAR | 256 | Alias (nom fonctionnel DTC, ...) |
&LAPP | *CHAR | 10 | Application |
&LATR | *CHAR | 10 | Attribut (ou type de fichier pour les zones) |
&LCPLTYPE | *CHAR | 7 | Type de compilation |
&LCRTLIB | *NAME | 10 | Bibliothèque objet généré |
&LDATE | *DATE | 10 | Date sous le format du travail (*JOB) |
&LDATEYMD | *CHAR | 8 | Date sous la forme YYYYMMDD |
&LDSTDIR | *CHAR | 512 | Répertoire IFS de destination (minuscule pour présentation) |
&LDSTLIB | *NAME | 10 | Bibliothèque de destination |
&LENV | *CHAR | 10 | Environnement |
&LFIELD | *NAME | 30 | Nom complet de zone |
&LFNC | *CHAR | 10 | Fonction |
&LIFSDIR | *CHAR | 512 | Répertoire IFS (minuscule pour présentation) |
&LIFSOBJ | *CHAR | 755 | Objet IFS complet (minuscule pour présentation) Path Name complet entre apostrophes s'il s'agit d'un Objet IFS. |
&LIFSOBJ2 | *CHAR | 255 | Objet IFS (minuscule pour présentation) |
&LLIB | *NAME | 10 | Bibliothèque |
&LLOCAL | *CHAR | 4 | Type de bibliothèque/localisation (*L01, L02, ...) |
&LLSTTYPE | *CHAR | 1 | Type de liste (M/O/I/F) |
&LOBJ | *NAME | 10 | Nom d'élément (objet/zone) |
&LOBJSFT | *CHAR | 32 | Nomenclature (Sous-système/Fonction/Sous-Fonction) |
&LORDNBR | *DEC | 3 | Numéro d'ordre |
&LQUAL | *DEC | 9 | Numéro de qualif de zone |
&LSELFLD1 | *NAME | 10 | Zone de sélection 1 |
&LSELFLD2 | *NAME | 30 | Zone de sélection 2 |
&LSELFLD3 | *NAME | 50 | Zone de sélection 3 |
&LSELFLD4 | *NAME | 50 | Zone de sélection 4 |
&LSELFLD5 | *DEC | 15 | Zone de sélection 5 |
&LSELFLD6 | *DEC | 15 | Zone de sélection 6 |
&LSELFLD7 | *CHAR | 10 | Zone de sélection 7 |
&LSELFLD8 | *CHAR | 100 | Zone de sélection 8 |
&LSELFLD9 | *CHAR | 1000 | Zone de sélection 9 |
&LSFNC | *CHAR | 10 | Sous-Fonction |
&LSRCFILE | *NAME | 10 | Fichier source (conteneur) |
&LSST | *CHAR | 10 | Sous-système |
&LSTATUS | *CHAR | 1 | Status (A/ /H/X) |
<EXT | *CHAR | 50 | Texte |
<IME | *TIME | 6 | Heure (HHMMSS) |
<YPE | *CHAR | 10 | Type d'élément (objet/zone |
&LVERS | *CHAR | 8 | Version |
Exemple d'utilisation
Voici un exemple d’utilisation d’une liste Arcad :
- Création de la liste des applications ARCAD.
- Affichage de la liste générée.
- Modification de la variable d’application INTRMT_UPDSITINF pour chacune des applications de la liste.
3) Changer la valeur de la variable INTRMT_UPDSITINF de toutes les applications de la liste avec la commande AEXCLST et ACHGAPPVAR
Avant modification :
AWRKAPPVAR VAR(INTRMT_UPDSITINF)
Toutes les lignes sont à *NO.

Modification avec la commande ACHGAPPVAR exécutée sur chaque élément de la liste via AEXCLST
AEXCLST LIST(QTEMP/LSTAPPLI) CMD(ACHGAPPVAR ENVTYPE(*ENV) ENV($LAPP *NONE *NONE)
GRPVAR(ARCAD_STANDARD) GRPVAL(CHANGER) VAR(INTRMT_UPDSITINF) VALUE(*YES))
$LAPP variable de liste récupérant l’application de chaque élément de la liste.
Après modification :
Toutes les lignes ont été passées à *YES.

6) Suppression de la liste utilisée :
ADLTLST LIST(QTEMP/LSTAPPLI)