Découvrir les commandes de AS400
3 - Découvrir les commandes
Présentation
Les commandes de l’OS400 peuvent être comparées en quelques sortes aux commandes que l’on trouve dans les fichiers batch de windows. Ces commandes sont le langage de programmation de l’OS. Ces commandes sont utilisables en ligne de commande mais elles peuvent aussi être mise dans des programmes qui seront compilés. Le langage est appelé CL = control langage. Un programme CL compilé sera un objet de type *PGM ayant comme attribut CLP
Les commandes sont construites (le plus généralement) sous la forme de 3 groupes de 3 lettres
- Un verbe abrégé en un groupe de 2 ou 3 lettres
- Un sujet abrégé en un groupe de 2 ou 3 lettres
- Un complément facultatif, toujours abrégé en un groupe de 2 ou 3 lettres
Voici quelques exemples de verbes :
- WRK : WORK pour gérer (ou travailler avec)
- CHG : CHANGE
- DLT : DELETE
- DSP : DISPLAY
- STR : START
- ADD :
- CPY : COPY
Voici quelques objets pèle mêle :
- OBJ : pour objet
- JOB
- SPL : spoule
- LIB : library
- LIC : licence
- MSG : message
- LCK : lock
- DEV : device
Voici quelques contre exemples à la règle des 3 lettres :
- F : pour file
- PF : pour physical file
- PFM : pour physical file member
- FFD : pour file field description
- HOST
- SCDE : pour schedule
- OUTQ : pour file d’attente en sortie
Chaque commande possède ses propres paramètres qu’il faut renseigner pour que la commande s’exécute correctement.
Par exemple la commande pour gérer (ou travailler avec …) les objets est la commande : _ _ _ _ _ _
- GEROBJ ??
- OBJMANAGE ??
- MANOBJ ??
- WRKOBJ ??
- WRKTHING ??
Pour chaque commande (sauf si vous connaissez la syntaxe par cœur) vous devez faire WRKOBJ + F4 :
Le prompt apparait avec les paramètres obligatoires en blanc et les valeurs par défaut. Sur les lignes terminées .... vous pouvez à nouveau faire F4 pour avoir toutes les valeurs.
F4 est disponible pour chaque zone pour obtenir la liste des valeurs possibles
Vous renseignez les paramètres avec les valeurs qui vous conviennent et vous faites Entrée.
Aide
Pour toutes les commandes de l’OS400 après avoir fait F4 vous pouvez positionner le curseur sur le titre de l’écran :
Si vous faites F1 (par défaut c’est la touche Aide) vous obtenez une aide en français qui vous explique la commande, sa fonction et ses paramètres.
F1 sur une zone de paramètre vous donnera de l’aide sur l’utilisation de la zone.
Remarque : une grande partie de l’aide est en français mais pas forcément pour les commandes les plus rares.
Il existe plus de 2000 commandes standard sur un IBM i, sachant que cela va dépendre de la version de l’OS et qu’il est possible de créer en plus autant de commandes que l’on veut... Pas facile de s’y retrouver.
L’OS400 vous propose une fonction de recherche contextuelle de commandes.
Par exemple : vous recherchez les commandes qui utilisent le verbe DSP, vous pouvez accéder à la liste de ces commandes par :
GO CMDDSP : la liste exhaustive de ces commandes apparait et vous pouvez accéder à chaque commande.
Essayez GO CMDJOB
Essayez aussi GO MAJOR
Touche Attn
Un petit détour vers la touche Echap qui historiquement s’appelait touche Attention ou ATTN (comme attention) sur les claviers IBM. Contrairement à Windows cette touche ne casse pas un travail mais elle a plusieurs fonctions possibles. Par défaut elle affiche un écran de service mais on peut demander à cette touche d’être inactive ou lui attribuer un programme spécifique.
Pour modifier la valeur de l’affectation de la touche Echap c’est la commande SETATNPGM : ce qui signifie ??
Une fonction plus intéressante est celle de session alternée.
Si vous faites Shift + Echap + 1 vous voyez apparaitre en bas de l’écran :
Les autres fonctions de cette combinaison de touches sont visibles si vous faites shift + Echap + Entrée
+ 2 : interromps une tâche en cours (cf echap) = Commande ENDRQS
+3 : Affiche les infos du travail = Commande DSPJOB
+4 : Affiche les messages = Commande DSPMSG
+5 : Envoie un message = Commande SNDMSG
+6 : Affiche les messages systèmes
+7 : Affichage de l’utilisateur du poste = Commande DSPWSUSR
+80 : déconnecte le job (toujours actif) = Commande DSCJOB
+90 : fin de session = commande SIGNOFF
Exercice :
- Créez vos bibliothèques avec comme convention :« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « SRCP»
« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « PGMP»
« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « FICP»
« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « SRCT»
« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « PGMT»
« W » + 1 lettre Initiale prénom + 3 premières lettres nom + « FICT»
- Ajoutez vos noms et prénom dans la description de la bib
Les bib en P pour vos objets en « production »
Les bib en T pour vos objets en test
Les bib SRC contiendront les sources
Les bib PGM contiendront les sources
Les bib SRC contiendront les sources
- Créez dans chacune de vos bibliothèques de types SRC trois fichiers source de 112 caractères de long :
QRPGSRC : contiendra les sources programmes
QDDSSRC : contiendra les sources fichiers
QCLSRC : contiendra les sources CL
- Quelle est la commande pour gérer les travaux actifs du système ? wrkactjob
- Quelle est la commande pour afficher le contenu de votre bib SRCP ?
- Quelle est la commande pour imprimer le contenu de votre bib SRCP ?
- Quelle est la commande pour gérer vos spoules ?
Spoule : Nom commun. (Anglicisme informatique) Programme chargé d'acheminer le spoule dans l'imprimante via un tampon appelé file d'impression.
*.LIBL *.PGM *.CURLIB ce sont des variables systèmes.
F4 pour avoir toutes les valeurs de la commande,
F3 pour terminer un programme
F12 pour revenir en arrière
F9 Refaire la commande précédente
GO CMDDSP : Afficher la liste des commandes
GO CMDJOB commande travail
clicher verbe transitif TECHNIQUE
Fabriquer une empreinte pour la reproduction de.
GO CMDDSP : la liste exhaustive de ces commandes apparaît et vous pouvez accéder à chaque commande.
Essayez GO CMDJOB
Essayez aussi GO MAJOR
4 - Gérer les spoules
Sur un système centralisé multi-utilisateurs, multi-tâches et possédant des dizaines d’imprimantes le tout réparti sur des sites situés en plusieurs endroits la gestions des éditions peut s’avérer un problème complexe … Voir très complexe.
Par exemple un utilisateur du service compta peut être au siège de Grenoble et imprimer une facture sur son imprimante.
En parallèle le service commercial peut utiliser la même imprimante.
Pendant que le comptable de Paris imprime une balance sur son imprimante
Les objets permettant de gérer les spoules et les imprimantes sont donc les suivants :
Le Spoule (SPLF) ; c’est une représentation visible (ou non), plus ou moins complète de ce qui va être imprimé….
Un seul travail peut produire de 0 à n spoules.
La file d’attente en sortie (OUTQ) , c’est une file d’attente (soit FIFO soit numéroté par le système) qui va contenir les spoules de 1 à n utilisateurs.
Envoyer un spoule à une OUTQ ne veut pas dire imprimer un état mais produire un objet spoule qui va être stocké dans cette file…
Une OUTQ peut être reliée à une imprimante physique ou ne pas être reliée.
Si elle est reliée les spoules pourront être imprimés directement sur l’imprimante (ce n’est pas une obligation nous verrons cela plus loin).
Pour imprimer une édition (un spoule) il faut donc …. une imprimante
Une imprimante est un objet de type DEVICE comme tout ce qui se connecte derrière un IBM i (écran, ligne réseau).
Comme toute unité réseau active la device a donc une adresse IP et un nom.
Comme sur un PC la device doit être activée pour être vue par le système.
Nous avons donc d’un côté des OUTQ qui contiennent des spoules prêts à être imprimés et de l’autre des imprimantes (DEV) qui peuvent faire ce job.
Cependant il n’est pas concevable d’avoir autant d’imprimantes que d’utilisateurs il faut donc pouvoir faire un « lien logique » entre ces imprimantes et ces OUTQ.
C’est la notion de writer (WTR) qui sert à cela.
Il faut donc démarrer une imprimante en lui indiquant à quelle OUTQ elle doit être rattachée.
En théorie vous avez des spoules, une OUTQ, une device celle-ci est démarrée tout est donc paré pour que vous puissiez imprimer vos états, vos factures, vos courriers ?
En êtes vous certains ?
Peut-être ….
En effet si vous imprimez une facture celle-ci sera peut-être sur un format de papier différent que celui qui est dans le tiroir de l’imprimante
L’IBM i ne sait pas quel est le papier dans le tiroir….. par contre il sait quel est le type de papier du dernier spoule que vous avez demandé d’imprimer.
Du coup si vous lancez un nouveau spoule sur une imprimante (via un OUTQ et un WTR bien sur)
Si le dernier spoule que vous aviez imprimé sur cette imprimante avait un format de papier différent de celui qu’il voit arriver, l’IBM i va bloquer l’impression et vous envoyer un message :
« Monter papier type XXXXX sur l’imprimante YYY »
Tant que vous n’aurez pas répondu toute la OUTQ (FIFO) sera bloquée …..
Remarques :
1 - la production de spoule peut vite occuper de l’espace disque sachant qu’en plus des éditions que vous produisez le système peut générer des logs en quantités.
Il faut donc régulièrement faire du ménage dans vos éditions.
2 – les spoules ne sont pas sauvegardés (en tout cas pas facilement et pas avec tous leurs attributs) il est donc recommandé de prévoir des procédures de rééditions
Gérer les spoules : prtf
Un spoule est un fichier de type particulier (SPLF) notamment les objets spoules sont stockés dans une seule bibliothèque QSPL
Rappel : Q* signifie que cela appartient au système.
Les spoules sont le résultat d’une impression
Pour produire une édition il faut utiliser un objet de type fichier appelé PRTF pour type de fichier impression.
Certains fichiers sont fournis par le système
Vous avez déjà pu observer QPDSPLIB
Ou QSYSPRT qui sont des objets fichiers de type PRTF fournis en standard par le système.
Exercice : créez un fichier PRTF dans votre bibliothèque portant comme nom W + initiale Prénom + 2 initiales Noms + PRTF
Pensez à bien dérouler la liste des paramètres ….
Largeur enregistrement 132
WRKACTJOB <=> Gestionnaire des tâches de Windows
L’IBM i est un système multi-tâches et multi utilisateurs, donc sur le même principe que pour les éditions les ressources doivent être organisées afin de permettre d’optimiser les performances.
Par défaut la mémoire est organisée en 4 pools :
............................................. - Système (ou *Machine)
............................................ - Socle Commun (ou*Base)
............................................ - Les travaux interactifs (ou *Interact)
............................................ - La gestion des impression (ou*Spool)
On distingue les travaux batch (qui se déroulent en fond de tâche sans verrouillage d’écran) des travaux interactifs qui correspondent à un écran.
Les besoins ne sont pas les même, un travail interactif va consommer peu de ressource (s’il est bien écrit) mais va nécessiter une réponse immédiate
Un travail batch peut consommer beaucoup de ressources (nombreux accès en base de données) mais il n’a pas besoin d’être exécuté immédiatement.
Ainsi la mémoire est-elle partagée en 4 pools.
Mais comme vous vous en doutez ce serait trop simple si cela s’arrêtait ici…
Ces pools de mémoire sont eux-mêmes affectés à des sous-systèmes.
Un sous-système est un objet physique (SBS).Lorsqu’un nouveau travail entre dans le système (se logue, démarre, commence) il porte un drapeau (donnée de routage) qui va permettre au système de l’orienter vers le bon sous-système.
D’où vient l’information de routage ?
Celle-ci est une variable stockée dans un objet de type Description de travail (*JOBD).
Oui mais la JOBD ou est-elle spécifiée ???
C’est simple :
Tout travail qui entre dans le système DOIT être rattaché à une JOBD pour que l’OS sache comment l’exécuter….
La JOBD est donc un élément capital pour déterminer comment le travail va s’exécuter.
En plus des données de routage la JOBD contient quantités d’autres informations comme par exemple la liste des bibliothèques, les files d’attentes de travaux
On trouve par exemple les informations de paramétrage des logs du job.
Celles-ci permettent d’avoir plus ou moins de log suivant le besoin :
Consignation des messages: LOG
Niveau . . . . . . . . . . . . 4 è 4 niveau maximum
Filtre de gravité . . . . . . 00 è toutes les erreurs sont consignées
Texte . . . . . . . . . . . . *NOLIST è peu de détail
Consigner cdes programme CL .*YES : chaque commande CL sera tracée
Comme pour les spoules, les jobs doivent s’exécuter dans une file d’attente de travaux ou JOBQ.
Celle-ci est déterminée par défaut par la JOBD mais elle peut être changée avant démarrage d’un job (c’est le cas assez souvent pour les travaux batch).
Les paramètres des JOBQ sont basiques à la création,
Cependant ….
Il faut ensuite indiquer au système ou attribuer la JOBQ que vous venez de créer.
Pour cela on en revient au sous-système, c’est à ce niveau qu’on va indiquer quelles jobq seront affectées à quels sous-système.
Pour cela voir la commande « Gérer la description d’un sous-système »
Pour afficher la liste des tâches du système (comme le gestionnaire des tâches Windows) il existe une commande :
Gérer les travaux actifs : ___ ___ ___
Attention un bémol sur cette commande elle reste active en mémoire même lorsque vous en êtes sortis, c’est visible car le temps écoulé est incrémenté lorsque vous rappelez la commande
Comprendre les Jobs : exercice
-Citer différentes possibilités pour changer la file d’attente en sortie pour un travail.
-Comment voir les attributs du travail en cours ?
- Comment afficher les travaux soumis ?
-Comment casser un travail batch ?
-Quelle est la différence entre suspendre un travail et l’arrêter ?
-Comment planifier un travail batch pour demain matin 8 heures ?
-Quel outil pour planifier les travaux (planifier = schedule en anglais) ?
-Ajoutez un job planifié qui imprime le contenu de votre bib les dimanches à 7:00
Library in AS400
- When we execute a command or call a program, the AS/400 must know where to find the command or program and the answer is library.
- A Library is a collection of objects.
- QSYS is the only library that contains other library.
- A library contain the object name, type, and the address
- QSYS is the root library where the entire user defined/ system defined library is created.
- System library is the library that contains the objects that was created at the time OS400 was installed.
- System supplied libraries begin with the letter "Q" or "#".
- When you logon the first library to be load is QSYS. The system library is loaded at the first time.
Library list types in AS400
- System library: All IBM supplied library e.g. QSYS, QHLPSYS, QUSRSYS…
- Product Library: Whenever Ibm product is used it is added to the library automatically and is removed itself when the job completes.
- Current Library: Current library is the working library i.e. all the work done by you is stored in current library. If you want that all the things done by you should be stored in your personal library ‘AMINEM’ , then just change the current library as your personal library.
To change current library to your personal library AMINEM: CHGCURLIB AMINEM
- User Library: Non-IBM supplied i.e. created by the user.
Library commands in AS400
I. Display Library List (DSPLIBL)
To display all types of libraries, we can use the command:
In the below snapshot we can see different types of library in the library list
e.g. SYS(system), CUR(current), USR(user) library.
Display Library List
System: SYSTEM09
Type options, press Enter.
5=Display objects in library
ASP
Opt Library Type Device Text
QSYS SYS System Library
QSYS2 SYS System Library for CPIs
QHLPSYS SYS
QUSRSYS SYS System Library for Users
AMINEM CUR
QGPL USR General Purpose Library
QTEMP USR
LOAD USR Future Three - LOAD Procedure & Update
More...
F3=Exit F12=Cancel F17=Top F18=Bottom