L A N G A G E D E C O N T R O L E ------------------------------------------------ - C'est grâce au langage de contrôle que l'on accéde au système. - Utilité du langage de contrôle. 1 - Exécution d'une commande. 2 - Exécution d'un ensemble de commandes. 3 - Sous la forme d'un programme, il permet - de contrôler une application. - d'exécuter une fonction uniquement disponible en LC. - Ses commandes simples permettent d'accéder à toutes les fonctions systèmes. - Ses commandes sont pré-traduites en langage machine directement exécutable |
===> - possibilité d'exécuter des traitements arithmétiques et logiques sur des variables. - il est possible de communiquer avec l'utilisateur par fichier écran. - possibilité d'accéder à la messagerie du système. (fichiers messages, files d'attente et variables de communication) - L'ensemble ainsi compilé sera appelé par une commande CALL - Il est possible d'accéder aux fichiers base de données. (physique ou logique) - par un accès séquentiel uniquement S Y N T A X E - 1 commande = 1 verbe + mot clé associé à des paramètres. - Le séparateur de base est « blanc ». - Le séparateur de groupe est « ( ) ». - Le "/" permet : - de qualifier un objet. |
- Le verbe correspond toujours à 3 lettres du verbe anglais caractérisant l'action à effectuer associée à l'objet sur lequel porte celle-ci. Exemple : Création d'un fichier physique. CReaTe Physical File. ===> CRTPF - Le 1° paramètre est toujours l'objet sur lequel doit se faire l'action. Exemple : Création du fichier physique TOTO. CRTPF FILE(TOTO) - Exécution en interprétif. - Les commandes sont traduites en langage machine au fur et à mesure - 2 méthodes peuvent être utilisées. - A partir d'une session interactive. Directement. Exemple : CRTLIB LIB(TOTO) PUBAUT(*ALL) ou par l'intermédiaire de l'INVITE (voir ce cours) CRTLIB (puis F4) |
- Exécution à partir d'un support informatique (disquette, fichier base de données) Exemple : // JOB ( Si le support est la base de données ( on utilisera SEU pour cataloguer les ( commandes en utilisant le type CL. ) // ENDJOB - Exécution sous forme de programme compilé. (LA PLUS SIMPLE ET LA PLUS COMPLETE) - Les commandes sont cataloguées dans un membre d'un fichier source (QCLSRC) par l'intermédiaire de SEU.type CLP) - Les commandes sont ensuite compilées par la commande de création d'un programme CL. (CRTCLPGM)) - L'ensemble de ces commandes compilées peuvent être exécutées par la commande CALL. |
P R O G R A M M E - Débute par la commande PGM. Si un paramètre est reçu par le programme, il s'associe à cette commande. - Se termine par ENDPGM. - Structure à respecter. PGM **** * DCLF ECRAN DECLARATIVES * DCL &NOCLI *CHAR 6 * DCL &NOART *DEC (6 0) **** **** * SNDRCVF RCDFMT(ECRAN1) COMMANDES * IF (&OPTION = 2) CALL PROGA exécutABLES * IF (&OPTION = 3) CALL PROGB **** ENDPGM |
V A R I A B L E S - Commence toujours par &. - Doivent être déclarées et définies. - soit dans le programme. - 3 Types : Alphanumériques ------> *CHAR Taille maximum : 2000 Numériques -----------> *DEC 15 dont 9 Logique (indicateur) -> *LGL 1 - soit dans le fichier utilisé par le programme. Le nom utilisé dans le programme sera le nom défini dans le fichier précédé de "&". - Peuvent être utilisées comme paramètres pour pratiquement tous les mots clés des commandes utilisées en LC. Exemple : CRTPF FILE(&LIB/&TOTO) |
O P E R A T I O N S - Arithmétiques Addition + Soustraction - Multiplication * Division / Exemple : A = A x 2 S'écrit en Langage de contrôle CHGVAR &A (&A * 2) Utilisation possible dans une expression de comparaison. IF (&B = (&A + 2)) GOTO FIN - Logiques et de débranchement - IF COND(condition) THEN(action) * Une seule action possible (avec cette syntaxe) * Les conditions peuvent être reliées par la relation « ET » ( *AND ) ou « OU » ( *OR ). |
- ELSE CMD(action) * Doit toujours être associé à un IF mais n'est pas obligatoire. - GOTO CMDLBL(étiquette) * Envoie vers une étiquette qui peut être placée devant n'importe quelle commande. G R O U P E D E C O M M A N D E S - Pour pouvoir exécuter plusieurs commandes conditionnées (par un IF ou un ELSE,) utilisation de DO et ENDDO Schéma d'utilisation IF COND(condition) THEN(DO) ( ) Exécution si la condition est vraie ( ENDDO ( ) Suite du traitement. ) Utilisation possible de ELSE. |
E N T R E E S / S O R T I E S - Tout fichier utilisé pour recevoir des informations dans un programme, doit être déclaré. * DCLF FILE(fichier) RCDFMT(format1 format2 ...) - Utilisation : * Fichier écran : RCVF -----> Lecture SNDF -----> Ecriture SNDRCVF --> Ecriture/Lecture Le 1° paramètre de chacune de ces commandes est l'unité d'affichage à utiliser. Par défaut elle est définie au niveau du fichier écran. CRTDSPF FILE(fichier) DEV(*REQUESTER) Pour la lecture d'un fichier BD en sequentiel prévoir le message CPF0864 |
L O C A L D A T A A R E A - Liée à un JOB (travail). objet *LDA - Taille : 1024 octets. - Accés par les commandes : * CHGDTAARA * RTVDTAARA * DSPDTAARA Exemples : - Modification : Valeur avant exécution : MODIF CHGDTAARA DTAARA(*LDA (5 8)) VALUE('FICATION') Valeur après exécution : MODIFICATION - Lecture et chargement dans une zone de travail : RTVDTAARA DTAARA(*LDA) RTNVAR(&ZONE) - Utilisation dans un programme : IF COND(%SST(*LDA (10 7)) *EQ 'FACTURE') THEN(GOTO B) il n'est pas nécessaire de lire la LDA avant. |
C H A I N E D E C A R A C T E R E - Concaténation. *CAT Juxtaposition de 2 chaines de caractères, *BCAT avec un blanc de séparation, *TCAT sans blanc de séparation. Exemple avec *CAT : PGM DCL &A *CHAR 4 'BON' DCL &B *CHAR 12 'REMPLACEMENT' DCL &C *CHAR 16 CHGVAR &C (&A *CAT &B) ENDPGM BON REMPLACEMENT ---> &C Exemple avec *BCAT : PGM et *TCAT DCL &NOM *CHAR 10 'CLIENT ' SNDBRKMSG ('Fichier' *BCAT &NOM *TCAT + 'détruit') ENDPGM |
- Extraction. %SUBSTRING <===> %SST Syntaxe : %SUBSTRING(variable position-de-départ nombre-de-caractères) Exemple : PGM DCL &A *CHAR 4 'BON ' DCL &B *CHAR 9 'REMPLACEMENT' DCL &C *CHAR 13 CHGVAR &C (&A *CAT %SST(&B 4 9)) ENDPGM Après exécution, &C a la valeur 'BON PLACEMENT' RECUPERATION DE VARIABLES systèmeS ET DES ATTRIBUTS DE TRAVAUX - Valeurs systèmes. RTVSYSVAL On peut obtenir : L'heure système QTIME - QHOUR - QMINUTE - QSECOND La date système QDATE - QDAY - QMONTH - QYEAR La liste des bibliothèques systèmes QSYSLIBL La liste des bibliothèques utilisateurs QUSRLIBL Etc... |
Exemple : RTVSYSVAL SYSVAL(QTIME) RTNVAR(&HEURE) * 1 seule variable par commande. * La zone recevant la valeur doit être définie. - Attributs de travaux. RTVJOBA On peut obtenir : Le nom du travail Le profil utilisateur associé La date du travail Les switches pour le travail Etc... Exemple : RTVJOBA JOB(&TRAVAIL) USER(&UTIL) DATE(&DATETRAV) SWS(&SWITCH) |
MODIFICATION DES CARACTERISTIQUES DU TRAVAIL OU DES VALEURS système - Soit en programme, soit en interprétif. - Accessibles aux seuls utilisateurs autorisés. - Caractéristiques du travail. CHGJOB - Valeur système. CHGSYSVAL G E S T I O N D E S M E S S A G E S - Affichage du contenu d'une file d'attente. DSPMSG MSGQ(*WRKSTN) - Envoi d'un message. SNDMSG MSGQ(file-d'attente) MSG(texte-du-message) SNDPGMMSG - Réception d'un message. RCVMSG - RMVMSG - SNDRPY - Interception de messages.MONMSG |
Quand le système ne peut exécuter correctement une commande, il envoi au travail demandeur un message de type *ESCAPE(arret) Ces messages provoquent un arret du travail demandeur, s'ils ne sont pas interceptés par celui-ci. Pour intercepter ce type de message utilisez la commande MONMSG. - 1 message particulier. Exemple : MONMSG MSGID(CPF9801) EXEC(DO) - 1 groupe de messages. Exemple : MONMSG MSGID(CPF9800) EXEC(DO) - Tous les messages. Exemple : MONMSG MSGID(CPF0000) EXEC(DO) - Emplacement de la commande dans le programme. * En tete de programme. (avant toute commande exécutable) Permet d'intercépter le ou les messages, quelle que soit la commande qui a provoqué cet envoi. Si le paramètre EXEC est précisé, il ne doit être associé qu'à GOTO. |
* Derriere une commande Permet d'intercépter le ou les messages produits par cette commande. Si le paramètre EXEC est précisé, il peut être associé à n'importe quelle commande. E N C H A I N E M E N T - Appel de programme. CALL - TFRCTL * CALL PGM(nom-du-programme) Le programme appelé s'exécute. A la fin de celui-ci, retour à l'instruction derrière le CALL du programme appe * TFRCTL PGM(nom-du-programme) Le programme appelé s'exécute. A la fin de celui-ci, retour à l'instruction derrière le dernier CALL exécuté. |
* Appel de programme avec envoi de paramètre(s). CALL PGM(nom-du-programme) PARM(variables-ou-constantes) TFRCTL PGM(nom-du-programme) PARM(variables-ou-constantes) - Reception des paramètres. PGM PARM(variables) Les variables doivent être déclarées. - Fin de programme. RETURN Retour immédiat à l'instruction suivant le CALL dans le programme appelant. et bien sur SIGNOFF Fin immédiate du Job. |