Bonjour,
J'aimerai s'avoir s'il est possible d'ajouter le nom du user dans la commande WORKOUTQ ou s'il existe une commande similaire.
Merci d'avance pour votre aide
Bonjour,
J'aimerai s'avoir s'il est possible d'ajouter le nom du user dans la commande WORKOUTQ ou s'il existe une commande similaire.
Merci d'avance pour votre aide
On ne peut pas indiquer le nom du user sur la commande WRKOUTQ, mais la commande WRKSPLF peut éventuellement faire l'affaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part WRKSPLF SELECT(UserName *OUTQ)
Merci ca marche parfaitement
Une autre petite question j'aimerai faire un move du fichier spool vers une librairie existe t-il une commande pour cela
J'ai regarde au niveau du wrksplf il y a bien l'option change mais je ne sais pas si je peux utiliser cette option pour le move?
Un fichier spool n'est pas un un objet au sens OS/400 du terme. Il ne peut donc être déplacé que vers une autre OUTQ.
Il est cependant possible de copier un spool vers un fichier PF par la commande CPYSPLF
Bonjour.
On peut aussi le pomper dans un membre de fichier source. "F15" : sous SEU.
Bonjour
Aurais-tu un exemple de parametrage pour le pomper
Une autre question sur l'outq
J'auria besoin de mettre en hold une outq par rapport au critère suivant
WRKOUTQ OUTQ(P81*) est-il possible d'associer dans la commande l'option 3hold aurais-tu un exemple de la commande avec le hold
Merci
Bonjour.
Si tu ne veux pas utiliser CPYSPLF pour copier ton spool dans fichier BD et que tu veux par contre le copier dans un membre source (membre de fichier source), c'est en fonction de tes besoins en fait, alors :
- tu te mets sous SEU, soit STRSEU ou STRPDM opt 1/2/3, tu crées un membre (de type texte si tu veux), une fois sous SEU dans ton membre source, tu fais F15, tu mets 2 (spool), tu mets le curseur sur le nom du spool et tu fais F4. Dans la liste affichée tu sélectionnes le spool qui t'intéresse et tu confirmes.
Ca dépend de ce que tu vas en faire : fichier de données ou fichier source.
C'est HLDOUTQ que tu peux utiliser.Une autre question sur l'outq
J'auria besoin de mettre en hold une outq par rapport au critère suivant
WRKOUTQ OUTQ(P81*) est-il possible d'associer dans la commande l'option 3hold aurais-tu un exemple de la commande avec le hold
Merci
Fais un GO CMDOUTQ et tu verras les commandes que tu peux utiliser sur les outq.
Tu veux dire mettre en "Hold" toutes les OUTQs dont le nom commence par "P81" ? Si oui, il n'y a pas de commande toute faite, mais, tu peuxEnvoyé par stephbret56
Oui toutes les outq qui commencent par P81 c'est bien ca
Aurais-tu un exemple avec le QUSLOBJ je dois pratiquer comment je suis en V5R4
Pour info je débute sur l'AS400 je viens du monde UNIX
Merci encore pour ton aide
Un truc rapide et simple pour faire ça :
En ligne de commande :
Puis un petit CL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DSPOBJD OBJ(P81*) OBJTYPE(*OUTQ) OUTPUT(*OUTFILE) OUTFILE(MABIB/MONFICHIER)
Tout ça est parémtrable avec un peu de recherche , par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 PGM DCLF FILE(MABIB/MONFICHIER) RCVF LECT: RCVF MONMSG MSGID(CPF0864) EXEC(GOTO CMDLBL(FIN)) HLDOUTQ OUTQ(&ODOBNM) GOTO CMDLBL(LECT) FIN: ENDPGM
La commande DSPOBJD insérée dans le CL avec le préfixe des imprimantes à Holder.
Possibilité de Holder ou de libérer les imprimantes
etc etc...
Avec l'API QUSLOBJ, voilà ce que ça donne :
Programme HLDOUTQS
On appelle ce programme avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 PGM PARM(&OUTQ) DCL VAR(&OUTQ) TYPE(*CHAR) LEN(10) DCL VAR(&USRSPC) TYPE(*CHAR) LEN(20) + VALUE('OUTQLIST QTEMP') DCL VAR(&OBJLIB) TYPE(*CHAR) LEN(20) DCL VAR(&OBJTYPE) TYPE(*CHAR) LEN(10) DCL VAR(&POS) TYPE(*CHAR) LEN(4) DCL VAR(&LEN) TYPE(*CHAR) LEN(4) DCL VAR(&TEMP) TYPE(*CHAR) LEN(4) DCL VAR(&OFFSET) TYPE(*DEC) LEN(10 0) DCL VAR(&COUNT) TYPE(*DEC) LEN(10 0) DCL VAR(&SIZE) TYPE(*DEC) LEN(10 0) DCL VAR(&ENTRY) TYPE(*CHAR) LEN(30) DCL VAR(&X) TYPE(*DEC) LEN(10 0) DCL VAR(&OBJNAMUSED) TYPE(*CHAR) LEN(10) DCL VAR(&OBJLIBUSED) TYPE(*CHAR) LEN(10) DCL VAR(&OBJTYPUSED) TYPE(*CHAR) LEN(10) CHGVAR VAR(%SST(&OBJLIB 1 10)) VALUE(&OUTQ) CHGVAR VAR(%SST(&OBJLIB 11 10)) VALUE('*ALL') CHGVAR VAR(&OBJTYPE) VALUE('*OUTQ') CALL QUSDLTUS (&USRSPC X'0000000800000000') CALL QUSCRTUS (&USRSPC OUTQLIST X'00010000' X'00' *ALL OUTQLIST) CALL QUSLOBJ (&USRSPC OBJL0100 &OBJLIB &OBJTYPE) /* Offset to Liste Data Section */ CHGVAR VAR(%BIN(&POS)) VALUE(125) CHGVAR VAR(%BIN(&LEN)) VALUE(4) CALL QUSRTVUS (&USRSPC &POS &LEN &TEMP) CHGVAR VAR(&OFFSET) VALUE(%BIN(&TEMP)) /* Number of List Entries */ CHGVAR VAR(%BIN(&POS)) VALUE(133) CALL QUSRTVUS (&USRSPC &POS &LEN &TEMP) CHGVAR VAR(&COUNT) VALUE(%BIN(&TEMP)) /* Size of Each Entry */ CHGVAR VAR(%BIN(&POS)) VALUE(137) CALL QUSRTVUS (&USRSPC &POS &LEN &TEMP) CHGVAR VAR(&SIZE) VALUE(%BIN(&TEMP)) /* Length of Format OBJL0100 List Data Section */ CHGVAR VAR(%BIN(&LEN)) VALUE(30) CHGVAR VAR(&X) VALUE(1) LOOP: IF (&X *LE &COUNT) DO CHGVAR VAR(%BIN(&POS)) VALUE(1 + &OFFSET + ((&X-1) * &SIZE)) CALL QUSRTVUS (&USRSPC &POS &LEN &ENTRY) CHGVAR VAR(&OBJNAMUSED) VALUE(%SST(&ENTRY 1 10)) CHGVAR VAR(&OBJLIBUSED) VALUE(%SST(&ENTRY 11 10)) CHGVAR VAR(&OBJTYPUSED) VALUE(%SST(&ENTRY 21 10)) HLDOUTQ OUTQ(&OBJLIBUSED/&OBJNAMUSED) CHGVAR VAR(&X) VALUE(&X + 1) GOTO LOOP ENDDO CALL QUSDLTUS (&USRSPC X'0000000000000000') ENDPGM
pour holder les OUTQs dont le nom générique commence par "P81" dans cet exemple. On peut aussi en faire une commande "maison".
Code : Sélectionner tout - Visualiser dans une fenêtre à part CALL HLDOUTQS 'P81*'
Au prix de quelques lègères modifs, ce programme pourrait être facilement adapté pour lister les objets présents sur la machine avec un type d'objet autre que "*OUTQ" et en prenant les actions requises sur les objets sélectionnés.
Liste des types d'objet possibles ici.
Employer les APIs au lieu de commandes est sans commune mesure en matière de temps de traitement car rien n'est écrit dans la BDD, tout se passe en mémoire et les perfs sont alors incomparables.
Mais, d'un autre côté, les commandes telles que celles qu'on voit dans la méthode utilisée par Simka100 répondent bien à un besoin urgent et sont rapidement mises au point.
Juste une petite remarque sur la commande CPYSPLF
Cette commande fonctionne bien quand on a des spools standard type SCS.
Dans le cas de spools IPDS, AFPDS, voir USERASCII, attention à la perte des attributs. Le résultat d'impression après un CPYSPLF est parfois très inatendu par rapport à l'impression d'origine.
Pour garder tous les attributs d'un spool, il est peut-être préférable d'utiliser les API IBM.
Slt Gege91
Aurais-tu 1 ptit exemple a me montrer STP
Bonne journée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager