fr en

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ésignationType de
champ
LongueurNombre de
décimales
LST_CELTTYElement 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 FmtGRAPHIC 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) CHARACTER8
LST_TTIME Hour (Fmt HHMMSS) CHARACTER6
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 NameGRAPHIC 10
LST_JZSEL1Selection Field 1 (Name)GRAPHIC 10
LST_JZSEL2Selection Field 2 (Name)GRAPHIC 30
LST_JZSEL3Selection Field 3 (Name)VARGRAPHIC50
LST_JZSEL4Selection Field 4 (Name)VARGRAPHIC50
LST_NZSEL5Selection Field 5 (Num.)DECIMAL 15
LST_NZSEL6Selection Field 6 (Num.)DECIMAL 15
LST_CZSEL7Selection Field 7 (Text)GRAPHIC 10
LST_CZSEL8Selection Field 8 (Text)VARGRAPHIC100
LST_CZSEL9Selection Field 9 (Text)VARGRAPHIC1000
LST_CSST Sub-System GRAPHIC 10
LST_CFNC Function GRAPHIC 10
LST_CSFN Sub-Function GRAPHIC 10
LST_CIMPATImposed object attributes cVARGRAPHIC50
LST_JFLD Field Name GRAPHIC 30
LST_NQUAL Field Qualif. # INTEGER 9
LST_CISDTCDTC Object (0/1) GRAPHIC 1
LST_CALS Alias Name VARGRAPHIC256
LST_CIOBJXIFS Object Extended Name (LVARGRAPHIC255
LST_CIOBJUIFS Object Extended Name (UVARGRAPHIC255
LST_CIDIRXIFS Directory Extended NameVARGRAPHIC512
LST_CIDIRUIFS Directory Extended NameVARGRAPHIC512
LST_CDIDIXIFS Dest. Dir. Extended NamVARGRAPHIC512
LST_CDIDIUIFS Dest. Dir. Extended NamVARGRAPHIC512
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 recorTIMESTAMP266
LST_JCRTUSCurrent user creation of reGRAPHIC 10
LST_JCRTPGProgram creation of record GRAPHIC 10
LST_JCJNAMJob name creation of recordGRAPHIC 10
LST_JCJUSRUser job creation of recordGRAPHIC 10
LST_JCJNBRJob nbr creation of record GRAPHIC 6
LST_TUPDT Date/Time update of record TIMESTAMP266
LST_JUPDUSCurrent user update of recoGRAPHIC 10
LST_JUPDPGProgram update of record GRAPHIC 10
LST_JUJNAMJob name update of record GRAPHIC 10
LST_JUJUSRUser job update of recordGRAPHIC10
LST_JUJNBRJob nbr update of record GRAPHIC6

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.

VariableTypeLongueurDescription
&LALIAS*CHAR256Alias (nom fonctionnel DTC, ...)
&LAPP*CHAR10Application
&LATR *CHAR10Attribut (ou type de fichier pour les zones)
&LCPLTYPE*CHAR7Type de compilation
&LCRTLIB*NAME 10Bibliothèque objet généré
&LDATE*DATE10Date sous le format du travail (*JOB)
&LDATEYMD*CHAR8Date sous la forme YYYYMMDD
&LDSTDIR*CHAR512Répertoire IFS de destination (minuscule pour présentation)
&LDSTLIB *NAME 10Bibliothèque de destination
&LENV*CHAR10Environnement
&LFIELD*NAME 30Nom complet de zone
&LFNC *CHAR10Fonction
&LIFSDIR *CHAR512Répertoire IFS (minuscule pour présentation)
&LIFSOBJ *CHAR755Objet IFS complet (minuscule pour présentation) Path Name
complet entre apostrophes s'il s'agit d'un Objet IFS.
&LIFSOBJ2*CHAR255Objet IFS (minuscule pour présentation)
&LLIB *NAME 10Bibliothèque
&LLOCAL *CHAR4Type de bibliothèque/localisation (*L01, L02, ...)
&LLSTTYPE*CHAR1Type de liste (M/O/I/F)
&LOBJ *NAME 10Nom d'élément (objet/zone)
&LOBJSFT*CHAR32Nomenclature (Sous-système/Fonction/Sous-Fonction)
&LORDNBR*DEC3Numéro d'ordre
&LQUAL *DEC9Numéro de qualif de zone
&LSELFLD1*NAME 10Zone de sélection 1
&LSELFLD2*NAME 30Zone de sélection 2
&LSELFLD3*NAME 50Zone de sélection 3
&LSELFLD4*NAME 50Zone de sélection 4
&LSELFLD5*DEC15Zone de sélection 5
&LSELFLD6*DEC15Zone de sélection 6
&LSELFLD7*CHAR10Zone de sélection 7
&LSELFLD8*CHAR100Zone de sélection 8
&LSELFLD9*CHAR1000Zone de sélection 9
&LSFNC *CHAR10Sous-Fonction
&LSRCFILE *NAME 10Fichier source (conteneur)
&LSST*CHAR10Sous-système
&LSTATUS*CHAR1Status (A/ /H/X)
&LTEXT *CHAR50Texte
&LTIME*TIME6Heure (HHMMSS)
&LTYPE*CHAR10Type d'élément (objet/zone
&LVERS*CHAR8Version

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.
1) Création de la liste de toutes les applications Arcad :
ACRTAPPLST TOLIST(QTEMP/LSTAPPLI)
 
2) Affichage de la liste générée :
AEDTLST LIST(QTEMP/LSTAPPLI)


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