Affichage données par défaut dans une Commande AS400

RPG (3 et 4, free), CL, SQL, etc...
Répondre
ppailley
Messages : 4
Enregistré le : mar. 12 mars 2013, 17:30:50
Contact :

Affichage données par défaut dans une Commande AS400

Message par ppailley »

Bonjour,

Je cherche à afficher une valeur stockée dans une dataara (lib et nom d'une jobd) dans une commande.

Dtaara : exemple
Valeur
Position *...+....1....+....2....+....3....+....4....+....5
0 'NOMJOBD LIBJOBD '
50 ' '

et à l'appel de la commande, la zone jobd et librairie se remplissent automatiquement :
Job Description . . . . . . . . NOMJOBD Nom
Librairie Jobd . . . . . . . . LIBJOBD Nom, *LIBL

Auriez vous une solution ou une piste de recherche que je n'aurai pas vu ?
(et surtout, après pas mal de recherches sur le Net) ....

Merci.

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Prompt Override Program

Message par cmasse »

Je pense qu'il faut utiliser la notion de Prompt Overide Program (paramètre PMTOVRPGM sur la cde CRTCMD)

Ce pgm est appelé lors de l'invite et est chargé de fournir les val. par dft.

les paramètres KEYPARM(*yes) sont affichés dans un premier temps (s'il y en a), les autres après l'appel au Prompt Overide Program.

Exemple :

Code : Tout sélectionner

/*------------------------------------------------------------------*/
/*                                                                  */
/*  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.')
source du Prompt Overide Program

Code : Tout sélectionner

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 12    LONGUEUR A PASSEE */
  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
Christian Massé (Volubis.fr)

ppailley
Messages : 4
Enregistré le : mar. 12 mars 2013, 17:30:50
Contact :

(sans texte)

Message par ppailley »

Merci bcp. Je teste et vous renverrai le résultat.

ppailley
Messages : 4
Enregistré le : mar. 12 mars 2013, 17:30:50
Contact :

(sans texte)

Message par ppailley »

J'ai un problème de retour de paramètre car on ne peut renvoyer une valeur que sur 1 seul Qualificatif.

Rappel : Parm JOBD avec 2 qualificatifs

Code : Tout sélectionner

             PARM       KWD(JOBD) TYPE(Q1) MIN(1) PROMPT('Job +   
                          Description')                           
 Q1:         QUAL       TYPE(*NAME) LEN(10)                       
             QUAL       TYPE(*NAME) LEN(10) DFT(*LIBL) +          
                          SPCVAL((*LIBL)) PROMPT('Bibliothèque')  

En debug,
Ma valeur de &RESTE : je concatène JOBD+LIB

Code : Tout sélectionner

 *...+....1....+....2....+....3..
'JOBD(JOBDTSTMVXLIBJOBD       ' 
j'ai le msg suivant :
CPD0074 La valeur 'JOBDTSTMVX' de JOBD comporte plus de 10 caractères.
Voyez vous une astuce pour un POP sur un Paramètre à 2 qualificatifs ?

Ou biensur :
La solution basique consiste à transformer le parm JOBD avec 2 qualificatif en 2 Parm distincts : JOBD et LIBJOBD.
Mais c'est moins joli :(

ppailley
Messages : 4
Enregistré le : mar. 12 mars 2013, 17:30:50
Contact :

(sans texte)

Message par ppailley »

Pb solutionné en concaténant les deux paramétres remplis dans la variable RESTE.

Voir exemple sous doc IBM.
http://publib.boulder.ibm.com/infocente ... mst250.htm
Pierre Pailley

Répondre