In diesem Abschnitt finden Sie Codierbeispiele für folgende KDCS-Aufrufe:
MGET
MPUT
DPUT
MCOM mit DPUT im Auftrags-Komplex
APRO mit MPUT bei verteilter Verarbeitung
Da die übrigen KDCS-Aufrufe auf analoge Weise codiert werden, wird an dieser Stelle auf eine explizite Darstellung verzichtet.
Beim KDCS-Aufruf bezeichnet KCPAC die Adresse des KDCS-Parameterbereichs und NB die Adresse des Nachrichtenbereichs; es wird angenommen, dass das COPY-Element KCOPC (Konstanten für die Operationscodes) verwendet wird.
MGET-Aufruf
Eine unformatierte Dialog-Nachricht von genau 80 Bytes Länge soll empfangen werden. Wurden weniger als 80 Zeichen eingelesen, soll eine erneute Eingabe angefordert werden.
... MOVE LOW-VALUE TO KCPAC. MOVE MGET TO KCOP. MOVE 80 TO KCLA. MOVE SPACES TO KCMF. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MGET-RETURN-CODE. 1) IF KCRLM NOT = KCLA THEN PERFORM WIEDERHOLUNG. 2)
1) Wurden mehr als 80 Zeichen eingelesen, wird eine Fehlerbehandlung durchgeführt.
2) In der Routine WIEDERHOLUNG wird eine Aufforderung zur Eingabe-Wiederholung an das Terminal gesendet.
In einem laufenden Vorgang kann eine Eingabe kommen, die aus einer Kurznachricht, erzeugt mit der Funktionstaste F2, sowie aus Daten von 10 Zeichen besteht. Sie soll eine Sonderfunktion auslösen. Der Taste F2 wurde beim Generieren der Returncode 21Z zugewiesen.
... MOVE LOW-VALUE TO KCPAC. MOVE MGET TO KCOP. ... CALL "KDCS" USING KCPAC, NB. IF KCRCCC = "21Z" 1) THEN PERFORM MGET-2. ... MGET-2. 2) MOVE LOW-VALUE TO KCPAC. MOVE MGET TO KCOP. MOVE 10 TO KCLA. MOVE SPACES TO KCMF. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MGET-RETURN-CODE.
1) Eine Sonderfunktion wird abgefragt.
2) Für die 10 Zeichen ist ein weiterer MGET erforderlich.
BS2000-Systeme:
Das Format "BILD15" wurde von einem Terminal angefordert. Die Länge der ungeschützten Daten beträgt 500 Zeichen in verschiedenen Formatfeldern. Dieses Format soll im Programm empfangen werden.... MOVE LOW-VALUE TO KCPAC. MOVE MGET TO KCOP. MOVE 500 TO KCLA. MOVE "*BILD15 " TO KCMF. CALL "KDCS" USING KCPAC, IBILD15. IF KCRCCC = "05Z" GO TO FORMAT-FEHLER. 1) IF KCRCCC NOT = ZERO GO TO MGET-RETURN-CODE. ...
1) In der Routine ’FORMAT-FEHLER’ muss das Format nochmals ausgegeben werden, um mit dem richtigen Format weiterarbeiten zu können.
MPUT-Aufruf
Eine unformatierte Nachricht von 80 Bytes soll an das Terminal gesendet werden.
... MOVE LOW-VALUE TO KCPAC. MOVE MPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 80 TO KCLM. MOVE SPACES TO KCRN. MOVE SPACES TO KCMF. MOVE ZERO TO KCDF. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MPUT-RETURN-CODE.
BS2000-Systeme:
Das Format "BILD15" wurde von einem Terminal angefordert. Die Länge der ungeschützten Daten beträgt 500 Zeichen in verschiedenen Formatfeldern. Dieses Format soll im Programm empfangen werden.... MOVE LOW-VALUE TO KCPAC. MOVE MGET TO KCOP. MOVE 500 TO KCLA. MOVE "*BILD15 " TO KCMF. CALL "KDCS" USING KCPAC, IBILD15. IF KCRCCC = "05Z" GO TO FORMAT-FEHLER. 1) IF KCRCCC NOT = ZERO GO TO MGET-RETURN-CODE. ...
1) In der Routine ’FORMAT-FEHLER’ muss das Format nochmals ausgegeben werden, um mit dem richtigen Format weiterarbeiten zu können.
BS2000-Systeme:
Eine formatierte Nachricht von 500 Bytes soll an das Terminal geschickt werden. Der Name des *Formats ist "BILD15". Der Bildschirm soll vorher gelöscht werden.... MOVE LOW-VALUE TO KCPAC. MOVE MPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 500 TO KCLM. MOVE SPACES TO KCRN. MOVE "*BILD15" TO KCMF. MOVE KCREPL TO KCDF. 1) CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MPUT-RETURN-CODE.
1) REPLACE wird bei Formatwechsel standardmäßig ausgeführt. Die Ausgabe erfolgt, um Fehler wegen undefinierter Feldinhalte auszuschließen.
BS2000-Systeme:
In einem *Format "BILD10", das laut letzter Eingabe am Terminal noch vorhanden ist, sollen als Antwort alle ungeschützten Felder gelöscht werden.... MOVE LOW-VALUE TO KCPAC. MOVE MPUT TO KCOP. MOVE "NE" TO KCOM. MOVE ZEROES TO KCLM. MOVE SPACES TO KCRN. MOVE "*BILD10" TO KCMF. MOVE KCERAS TO KCDF. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MPUT-RETURN-CODE.
DPUT-Aufruf
Ein Asynchron-Auftrag mit einer Nachricht von 11 Zeichen soll am 11.11. (= 315. Tag im Jahr) um 11.11 Uhr an ein Teilprogramm gegeben werden (absolute Zeitangabe). Der TAC lautet "ALAAF".
... MOVE LOW-VALUE TO KCPAC. MOVE DPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 11 TO KCLM. MOVE "ALAAF" TO KCRN. MOVE ZERO TO KCDF. MOVE SPACES TO KCMF. MOVE "A" TO KCMOD. MOVE "315" TO KCTAG. MOVE "11" TO KCSTD. MOVE "11" TO KCMIN. MOVE "00" TO KCSEK. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE.
Eine Asynchron-Nachricht von 80 Zeichen soll nach 1 Stunde an das Terminal ’DSS1’ ausgegeben werden (relative Zeitangabe). Dabei soll die Bildschirmfunktion ’akustischer Alarm’ (BEL) ausgelöst werden.
... MOVE LOW-VALUE TO KCPAC. MOVE DPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 80 TO KCLM. MOVE "DSS1 " TO KCRN. MOVE SPACES TO KCMF. MOVE KCALARM TO KCDF. MOVE "R" TO KCMOD. MOVE "000" TO KCTAG. MOVE "01" TO KCSTD. MOVE "00" TO KCMIN. MOVE "00" TO KCSEK. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE.
Auftrags-Komplex: MCOM- und DPUT-Aufruf
Eine formatierte Asynchron-Nachricht (200 Byte) soll am selben Tag um 18.00 Uhr auf dem Drucker PRINTER2 ausgedruckt werden. Die Quittung vom Drucker wird per Programm behandelt.
Bei positiver Quittung erhält ein Asynchron-Programm mit dem TAC PRINTPOS einen Quittungsauftrag mit einer Nachricht in der Länge von 20 Byte, bei negativer Quittung wird ein Asynchron-Programm mit dem TAC PRINTNEG gestartet (ohne Nachricht). Zur negativen Quittung wird eine Benutzerinformation in der Länge von 80 Byte protokolliert. Diese kann mit DADM UI gelesen werden, sobald der Quittungsauftrag zum Hauptauftrag wird. Quittungsaufträge können nicht über eine Auftrags-ID angesprochen werden.
Der Auftrags-Komplex wird durch zwei MCOM-Aufrufe eingerahmt; dabei werden die Ziele von Druckauftrag (=Basisauftrag) und Quittungsaufträgen im Aufruf MCOM BC festgelegt; die Komplexidentifikation lautet "*PRICOMP".
... COMPLEX-BEGIN. MOVE LOW-VALUE TO KCPAC. MOVE MCOM TO KCOP. MOVE BC TO KCOM. MOVE "PRINTER2" TO KCRN. MOVE "PRINTPOS" TO KCPOS. MOVE "PRINTNEG" TO KCNEG. MOVE "*PRICOMP" TO KCCOMID. CALL "KDCS" USING KCPAC. IF KCRCCC NOT = ZERO THEN PERFORM MCOM-RETURN-CODE. DPUT-NE. MOVE DPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 200 TO KCLM. MOVE "*PRICOMP" TO KCRN. MOVE "*FORM1" TO KCMF. *** nur auf BS2000-Systemen) MOVE ZERO TO KCDF. MOVE "A" TO KCMOD. MOVE KCTJHVG TO KCTAG. MOVE "18" TO KCSTD. MOVE "00" TO KCMIN. MOVE "00" TO KCSEK. CALL "KDCS" USING KCPAC, NB1. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE. DPUT-PLUS-T. *************************************************************** * Acknowledgement job in positive case *************************************************************** MOVE LOW-VALUE TO KCPAC. MOVE DPUT TO KCOP. MOVE "+T" TO KCOM. MOVE 20 TO KCLM. MOVE "*PRICOMP" TO KCRN. MOVE SPACES TO KCMF. MOVE ZERO TO KCDF. CALL "KDCS" USING KCPAC, NB2. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE. DPUT-USER-INFO. *************************************************************** * User-Information for negative case *************************************************************** MOVE LOW-VALUE TO KCPAC. MOVE DPUT TO KCOP. MOVE "-I" TO KCOM. MOVE 80 TO KCLM. MOVE "*PRICOMP" TO KCRN. MOVE SPACES TO KCMF. MOVE ZERO TO KCDF. CALL "KDCS" USING KCPAC, NB3. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE. DPUT-MINUS-T. *************************************************************** * Acknowledgement job in negative case *************************************************************** MOVE LOW-VALUE TO KCPAC. MOVE DPUT TO KCOP. MOVE "-T" TO KCOM. MOVE ZERO TO KCLM. MOVE "*PRICOMP" TO KCRN. MOVE SPACES TO KCMF. MOVE ZERO TO KCDF. CALL "KDCS" USING KCPAC, NB4. IF KCRCCC NOT = ZERO THEN PERFORM DPUT-RETURN-CODE. COMPLEX-END. MOVE LOW-VALUE TO KCPAC. MOVE MCOM TO KCOP. MOVE EC TO KCOM. MOVE "*PRICOMP" TO KCCOMID. CALL "KDCS" USING KCPAC. IF KCRCCC NOT = ZERO THEN PERFORM MCOM-RETURN-CODE. ...
Beispiel für verteilte Verarbeitung: APRO-Aufruf mit anschließendem MPUT
Vom Auftraggeber-Vorgang aus soll der Dialog-Vorgang mit dem Transaktionscode LTAC1 der Anwendung PARTNER1 adressiert werden (zweistufige Adressierung). Dabei soll dem Auftragnehmer-Vorgang die Vorgangs-Identifikation >VGID1 zugeordnet werden. Anschließend wird eine MPUT-Nachricht mit Länge 100 im Zeilenmodus an die Partner-Anwendung geschickt.
... MOVE LOW-VALUE TO KCPAC. MOVE APRO TO KCOP. MOVE "DM" TO KCOM. MOVE ZERO TO KCLM. MOVE "LTAC1 " TO KCRN. MOVE "PARTNER1" TO KCPA. MOVE ">VGID1 " TO KCPI. CALL "KDCS" USING KCPAC. IF KCRCCC NOT = ZERO THEN PERFORM APRO-RETURN-CODE. ... MOVE LOW-VALUE TO KCPAC. MOVE MPUT TO KCOP. MOVE "NE" TO KCOM. MOVE 100 TO KCLM. MOVE ">VGID1" TO KCRN. MOVE SPACES TO KCMF. MOVE ZEROES TO KCDF. CALL "KDCS" USING KCPAC, NB. IF KCRCCC NOT = ZERO THEN PERFORM MPUT-RETURN-CODE.