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.
Affichage données par défaut dans une Commande AS400
-
- Site Admin
- Messages : 813
- Enregistré le : mer. 14 févr. 2007, 18:00:03
- Localisation : Nantes
- Contact :
Prompt Override Program
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 :
source du Prompt Overide Program
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.')
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)
(sans texte)
Merci bcp. Je teste et vous renverrai le résultat.
(sans texte)
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
En debug,
Ma valeur de &RESTE : je concatène JOBD+LIB
j'ai le msg suivant :
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
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 '
Voyez vous une astuce pour un POP sur un Paramètre à 2 qualificatifs ?CPD0074 La valeur 'JOBDTSTMVX' de JOBD comporte plus de 10 caractères.
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)
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
Voir exemple sous doc IBM.
http://publib.boulder.ibm.com/infocente ... mst250.htm
Pierre Pailley