Création de commande / pgm associés 1/ CHOICEPGM pgm d'affichage de la liste des valeurs possibles /*------------------------------------------------------------------*/ /* */ /* Essai de pgm avec programme de choix paramètre CHOICE(*PGM) */ /* et CHOICEPGM(Bib/Nompgm) */ /* */ /*------------------------------------------------------------------*/ /* */ CMD PROMPT('Essai CHOICEPGM') /* Nom de fichier */ PARM KWD(FILE) TYPE(*CHAR) LEN(10) MIN(1) + CHOICE(*PGM) CHOICEPGM(*LIBL/A002P1) + PROMPT('Nom du fichier') CPP PGM PARM(&FIC) /* AFFICHAGE D'UN FICHIER PGM CPP */ DCL &FIC *CHAR 10 /* NOM DU FICHIER */ DSPPFM FILE(&FIC) |
MONMSG MSGID(CPF0000) EXEC(DO) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) + MSGDTA('Fichier' *bcat &fic *bcat + 'inexistant') MSGTYPE(*ESCAPE) ENDDO ENDPGM CHOICEPGM /*--------------------------------------------------------------*/ /* PGM POUR CHOIX PAR LISTE */ /*--------------------------------------------------------------*/ PGM PARM(&PARM1 &PARM2) DCL VAR(&PARM1) TYPE(*CHAR) LEN(21) DCL VAR(&PARM2) TYPE(*CHAR) LEN(2000) /* */ /* PARM1 : PREMIER PARAMETRE */ /* 1 A 10 NOM DE COMMANDE */ /* 11 A 20 NOM DU PARAMETRE DE LA COMMANDE */ /* 21 A 21 TYPE (P) LISTE DE VALEURS ? */ /* (C) TEXTE D'INVITE F11 */ /* */ |
/* PARM2 : DEUXIEME PARAMETRE */ /* ------>si liste */ /* 1 A 2 NOMBRE DE PARAMETRES TRANSMIS EN BINAIRE */ /* 3 A 4 TAILLE DE LA PREMIERE VALEUR EN BINAIRE */ /* 5 A N PREMIERE VALEUR */ /* N+1 A N+2 TAILLE DE LA DEUXIEME VALEUR EN BINAIRE */ /* N+3 A M DEUXIEME VALEUR */ /* ETC... 2000 */ /* */ /* ------>si texte */ /* 1 A 30 TEXTE A AFFICHER */ /* 31 A 2000 INUTILISER */ /* */ /****************************************************************/ /* */ /* Déclaration des zones de travail */ /* */ DCL VAR(&BIN) TYPE(*CHAR) LEN(2) DCL VAR(&DEC) TYPE(*DEC) LEN(5 0) DCL VAR(&SIGN) TYPE(*CHAR) LEN(1) /* */ |
/* Initialisation de la zone paramètre à retourner */ /* attention elle peut contenir n'importe quoi a l'arrivée */ /* */ CHGVAR VAR(&PARM2) VALUE(' ') /* */ /* Test de la demande P = liste de paramètres */ /* */ IF COND(%SST(&PARM1 21 1) *EQ 'P') THEN(DO) /*--------------------------------------------------------------*/ /* */ /* 1er cas pos 21 = P demande d'une liste de valeurs */ /* */ /*--------------------------------------------------------------*/ /* */ /* Formatage de la variable à retourner */ |
/* Position 3 à 4 en binaire longueur de la première valeur */ /* Position 5 à 11 premiére Valeur à afficher */ /* Position 12 à 16 en binaire longueur de la deuxième valeur */ /* Position 17 à 11 Deuxième Valeur à afficher */ |
2/ PMTCTLPGM pgm de contrôle d'apparition d'un paramètre /*------------------------------------------------------------------*/ /* */ /* Essai de pgm avec programme de contrôle d'affichage paramètre */ /* PMTCTLPGM(Bib/Nompgm) */ /* */ /*------------------------------------------------------------------*/ /* */ CMD PROMPT('Essai PMTCTLPGM') /* Nom du fichier */ PARM KWD(FIC) TYPE(*CHAR) LEN(10) MIN(1) + PMTCTLPGM(CTL001) PROMPT('Nom du fichier') /* Paramétre a afficher si contrôle non vérifié */ |
CPP PGM PARM(&FIC &BIB) /* AFFICHAGE D'UN FICHIER PGM CPP A002 */ DCL &FIC *CHAR 10 /* NOM DU FICHIER */ DCL &BIB *CHAR 10 /* NOM DE LA BIBLIOTHEQUE */ DSPPFM &BIB/&FIC MONMSG MSGID(CPF0000) EXEC(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) + MSGDTA('Fichier' *bcat &fic *bcat + 'inexistant dans la bibliothèque' *bcat &bib) + MSGTYPE(*ESCAPE) ENDDO ENDPGM PMTCTLPGM /*--------------------------------------------------------------*/ /* PGM POUR contrôle D'AFFICHAGE */ /*--------------------------------------------------------------*/ PGM PARM(&PARM1 &PARM2 &PARM3) DCL VAR(&PARM1) TYPE(*CHAR) LEN(20) DCL VAR(&PARM2) TYPE(*CHAR) LEN(10) |
DCL VAR(&PARM3) TYPE(*CHAR) LEN(32) /* */ /* PARM1 : PARAMETRE 1 */ /* 1 A 10 NOM DE COMMANDE */ /* 11 A 20 NOM DU PARAMETRE */ /* */ /* PARM2 : PARAMETRE 2 */ /* 1 A N VALEUR DU PARAMETRE PASSE */ /* */ /* PARM3 : PARAMETRE */ /* 1 A 32 CODE RETOUR */ /* */ /*--------------------------------------------------------------*/ /* */ /* contrôle de l'existence si erreur valeur de retours à * */ /* */ CHKOBJ OBJ(&PARM2) OBJTYPE(*FILE) MONMSG MSGID(CPF0000) EXEC(DO) CHGVAR VAR(&PARM3) VALUE('*') ENDDO ENDPGM |
3/ POP/PROMPT OVERIDE PGM pgm de substitution d'invite /*---------------------------------------------------------------*/ /* */ /* Essai de pgm avec programme d'Overide */ /* Les paramètres affichés avant l'overide = KEYPARM(*yes) */ /* (à compiler avec le paramètre PMTOVRPGM(bib/pgmovr).) */ /*---------------------------------------------------------------*/ /* */ CMD PROMPT('Modification du prop. d''un obj') /* Bibliothèque/OBJET */ PARM KWD(OBJ) TYPE(QUAL1) KEYPARM(*YES) MIN(1) + PROMPT('OBJET') QUAL1: QUAL TYPE(*NAME) LEN(10) QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) + SPCVAL((*LIBL) (*CURLIB)) + PROMPT('Bibliothèque') /* TYPE */ PARM KWD(TYPE) TYPE(*CHAR) LEN(10) MIN(1) + KEYPARM(*YES) PROMPT('TYPE') /* PROPRIETAIRE */ PARM KWD(NEWOWN) TYPE(*NAME) LEN(10) MIN(1) + PROMPT('NOUVEAU PROP.') |
CPP PGM PARM(&FULLOBJ &OBJTYPE &NEWOWN) /* DECLARATION DES PARAMETRES RECUS */ DCL &FULLOBJ *CHAR 20 DCL &OBJTYPE *CHAR 10 DCL &RESTE *CHAR 20 DCL &NEWOWN *CHAR 10 /* DECLARATION DES ZONES DE TRAVAIL*/ DCL &OBJ *CHAR 10 DCL &LIB *CHAR 10 |
POP PGM PARM(&CMD &FULLOBJ &OBJTYPE &RESTE) /* DECLARATION DES PARAMETRES RECUS */ DCL &CMD *CHAR 10 /* NOM DE LA COMMANDE */ DCL &FULLOBJ *CHAR 20 /* NOM QUALIFIE OBJET */ DCL &OBJTYPE *CHAR 10 /* TYPE DE L'OBJET */ DCL &RESTE *CHAR 20 /* VARIABLE DE RETOURS */ /* DECLARATION DES ZONES DE TRAVAIL */ DCL &BIN *CHAR 02 X'0014' /* ZONE BIN, LONGUEUR A PASSER */ DCL &OBJ *CHAR 10 /* OBJET */ DCL &LIB *CHAR 10 /* BIBLIOTHEQUE */ DCL &OWN *CHAR 10 /* PROPRIETAIRE ACTUEL */ CHGVAR VAR(&LIB) VALUE(%SST(&FULLOBJ 11 10)) CHGVAR VAR(&OBJ) VALUE(%SST(&FULLOBJ 01 10)) RTVOBJD OBJ(&LIB/&OBJ) OBJTYPE(&OBJTYPE) OWNER(&OWN) MONMSG MSGID(CPF0000) EXEC(DO) CHGVAR &OWN 'ERREUR' ENDDO /* FORMATAGE DU RESTE */ |