Création de commandes (pgm associés)

BoTTom |    Changer de couleur
 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)


|    Changer de couleur
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       */
 /*                                                              */


|    Changer de couleur
 
 /* 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)
 /*                                                              */


|    Changer de couleur
 /* 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 1 à 2 en binaire nombre de paramètres de retours    */              CHGVAR     VAR(&BIN) VALUE(%BIN(2))              CHGVAR     VAR(%SST(&PARM2 1 2)) VALUE(&BIN)
 /* conversion longueur du paramètre en binaire                  */              CHGVAR     VAR(&BIN) VALUE(%BIN(10))            

|    Changer de couleur
 /* 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                    */
             CHGVAR     VAR(%SST(&PARM2  3  2)) VALUE(&BIN)              CHGVAR     VAR(%SST(&PARM2  5 10)) VALUE('VAL - 1')              CHGVAR     VAR(%SST(&PARM2 15  2)) VALUE(&BIN)              CHGVAR     VAR(%SST(&PARM2 17 10)) VALUE('VAL - 2')              ENDDO  /*--------------------------------------------------------------*/  /*                                                              */  /* 2ème cas pos 21 = C demande d'un texte                        */  /*                                                              */  /*--------------------------------------------------------------*/              IF         COND(%SST(&PARM1 21 1) *EQ 'C') THEN(DO)              CHGVAR     VAR(&PARM2) VALUE('ENTREZ UN NOM VALIDE ...')              ENDDO ENDPGM        


|    Changer de couleur
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é                  */
/*    Nom de la bibliothèque si fichier non trouvé dans la liste    */              PARM       KWD(BIB) TYPE(*CHAR) LEN(10) DFT(*LIBL) +                           SPCVAL((*LIBL) (*CURLIB)) PMTCTL(EXI) +                           PROMPT('Précisez la bibliothèque') /*    contrôle de la valeur retournée (* si inexistant)             */  EXI:        PMTCTL     CTL(FIC) COND((*EQ *))


|    Changer de couleur
 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)


|    Changer de couleur
 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
 


|    Changer de couleur
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.')


|    Changer de couleur
 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
CHGVAR     VAR(&LIB) VALUE(%SST(&FULLOBJ 11 10)) CHGVAR     VAR(&OBJ) VALUE(%SST(&FULLOBJ 01 10)) CHKOBJ     OBJ(&LIB/&OBJ) OBJTYPE(&OBJTYPE) MONMSG     MSGID(CPF9800) EXEC(DO)   SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG)                         +   MSGDTA('Objet' *bcat &obj *bcat                                 +          'inexistant dans la bibliothèque' *bcat &lib)            +   MSGTYPE(*ESCAPE) ENDDO CHGOBJOWN  OBJ(&LIB/&OBJ) OBJTYPE(&OBJTYPE) +              NEWOWN(&NEWOWN) ENDPGM


|    Changer de couleur
 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                                           */
 /*        1   A   02   LONGUEUR A TRANSMETTRE EN BINAIRE        */  /*     02+1   A   N    VARIABLE A TRANSMETTRE                   */  /*                     NOMPARM(&VAR)                            */  /*  NOM DU PARAMETRE -----^      ^-- VALEUR DU PARAMETRE        */
  CHGVAR     VAR(%SST(&RESTE  01 02))  VALUE(&BIN)   CHGVAR     VAR(%SST(&RESTE  03 07))  VALUE('NEWOWN(')   CHGVAR     VAR(%SST(&RESTE  11 10))  VALUE(&OWN)   CHGVAR     VAR(%SST(&RESTE  20 01))  VALUE(')') ENDPGM




©AF400