PDA

View Full Version : Generelle frage zu *INUX



Seiten : [1] 2

MGJ79
10-07-17, 14:06
Hallo Zusammen,

Kann mir wer sagen wann der *INU[1-8] schalter wieder "resettet" wird?

Folgender Programmstapel

CL
> RPGLE 1 (Controller)
> RPGLE 2 (Programm) setzt *INU8 bzw. prüft ob er gesetzt ist..

Das o.g. CL ist ein LOOP bis 18:00 Uhr und Ruft in Regelmäßigen abständen über den Controller das RPGLE 2er Programm auf.

Eine bestimmte Bedingung soll aber nur 1x am Tag ausgeführt werden und setzt für den JOB den *INU8 = *ON
Jetzt kommt es aber vor, dass der Jobschalte auf *OFF zurückgestellt worden ist.
(Ich fasse den *INU8 er aber in keinem anderen Teil des Programms an..)

Ich bin mir aber sicher dass das RPGLE 2 Programm aber nur über das o.g. CL Programm aufgerufen worden ist...

Frage:
Kann ich für solch eine Aufgabenstellung überhaupt die *INUx Schalter verwenden?
Eine DTAARA würde natürlich auch gehen aber für sowas wäre doch der "UPSI" Schalter doch ideal, oder ?

Fuerchau
10-07-17, 14:16
Sich auf solche Schalter zu verlassen ist nicht ganz trivial.
Per CHGJOB kann man im CLP die Schalter ebenso verändern.
Wenn du also per *INUn dein Programm von extern unbedingt steuern musst, so merke dir die Werte direkt nach dem Aufruf in weiteren Variablen, da sie ggf. in untergeordneten CALL's verändert werden können.
Besser ist es, auf diese alten Hüte (/36, /38) zu verzichten und vernünftige Parameter oder Parameterdateien/Tabellen zu verwenden, die dann entsprechend zu setzen und zu konfigurieren sind.

RobertMack
10-07-17, 14:17
CHGJOB SWS(11111111)
MyCmd = 'CHGJOB SWS(' + '11111111' + ')';

Hätte ich mir ja denken können, dass Baldur schneller ist ;-)

MGJ79
10-07-17, 14:45
Uiii das ging ja schnell,

@Robert
=> OK das ist eine interessante Variante gleich den JoB zu ändern...
hätte gedacht dass mit einem
*INU8 = *ON das ganze "nach oben" also meinem Job gereicht wird..

Ich ändere ja nur an einer Stelle den JOB indem ich den Schalter auf *ON stelle, also nicht von außerhalb (CHGJOB...). Aber in diesem Fall ist es relativ handlich während der Laufzeit auf das Programm Einfluß nehmen zu können ohne groß an Tabelle wurtscheln zu müssen.

Aber danke soweit für die Hilfe...Lösung schreibe ich...

RobertMack
10-07-17, 15:35
...hat man im letzten Jahrtausend benutzt um Batch-Verarbeitungen zu steuern, d.h. das/die CLs haben die Schalter gesetzt und RPG Programme "nur" reagiert (z.B. Status oder Herkunft eines Calls)

Fuerchau
10-07-17, 15:47
Wobei ich nicht sicher bin, ob das interne Setzen des *INUx auch tatsächlich Auswirkungen auf die Job-Schalter hat.

RobertMack
10-07-17, 15:49
Hat es nicht, daher die Ausführung per QCMDEXC...

RobertMack
10-07-17, 15:54
...falls es sein muss, ist es wie Du zuvor beschrieben hast: bei Programmstart gesamte Schalterleiste merken, einzelne Position ändern und ganze Leiste als CHGJOB absetzen.

Fuerchau
10-07-17, 15:56
Habe ich ja glatt überlesen:
"Aber in diesem Fall ist es relativ handlich während der Laufzeit auf das Programm Einfluß nehmen zu können ohne groß an Tabelle wurtscheln zu müssen."

Nun, das sollte man nie mit irgendwelchen *INxx-Schaltern machen sondern mit Variablen, die dann einen entsprechenden Wert bekommen.
*INUx-Schalter haben nur vor dem Aufruf eines Programmes ggf. Wirkung, innerhalb eines Programmes macht man sowas nicht (mehr).

Ich kann mich gar nicht erinnern, sowas überhaupt schon mal verwendet zu haben.

RobertMack
10-07-17, 16:06
...das war schon praktisch, seinerzeit. Zum Beispiel Druckprogramm aufrufen: Mit/ohne Summen, mit/ohne Posten, Varianten im Gruppenwechsel, uvm. (riecht jetzt noch nach dem RPG-Zyklus, dem das mal entsprungen ist ;-)