Page 1 sur 1
Affichage données par défaut dans une Commande AS400
Posté : lun. 15 avr. 2013, 17:30:59
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.
Prompt Override Program
Posté : mar. 16 avr. 2013, 07:18:26
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
(sans texte)
Posté : mar. 16 avr. 2013, 08:51:58
par ppailley
Merci bcp. Je teste et vous renverrai le résultat.
(sans texte)
Posté : mar. 16 avr. 2013, 10:31:29
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

(sans texte)
Posté : mar. 16 avr. 2013, 14:37:45
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