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 aller Aufrufe verzichtet.
Beim KDCS-Aufruf bezeichnet &pa die Adresse des KDCS-Parameterbereichs und &ma die Adresse des Nachrichtenbereichs.
MGET-Aufruf
Eine unformatierte Dialog-Nachricht von 80 Bytes Länge soll empfangen werden. Wurde sie irrtümlicherweise kürzer gesendet, soll eine erneute Eingabe angefordert werden.
KDCS_MGET (&ma,80,KDCS_SPACES); if (KCRCC != 0) mget_error(); if ( pa.kcla > ca->ca_return.kcrlm) r_mput ();
In der Routine r_mput () wird mit MPUT 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.
KDCS_MGET (&ma,input_lth,dev.features); if (KCRCC == 21 ) { /* Return-Code for F2 */ KDCS_MGET (&ma,10,KDCS_SPACES); if (KCRCC != 0 ) mget_error(); }
BS2000-Systeme:
Das Format "FORM15" 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. FORM15 wurde im Programm alsstd_mask
deklariert.KDCS_MGET (&ma.std_mask,500,"*FORM15 "); if (KCRCC == 5) /* Invalid Format-ID */ format_error(); if (KCRCC != 0) mget_error();
In der Routine format_error 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.
KDCS_MPUTNE (&ma,80,KDCS_SPACES,KDCS_SPACES,KCNODF); if (KCRCC != 0 ) mput_error();
BS2000-Systeme:
Die letzte Nachricht in einem Vorgang soll an ein Terminal im Format-Modus geschickt werden. Der Name des *Formats ist "FORM15". Der Bildschirm soll vorher gelöscht werden.KDCS_MPUTNE (&ma,500,KDCS_SPACES,"*FORM15 ",KCREPL); if (KCRCC != 0 ) mput_error();
REPLACE wird bei Formatwechsel standardmäßig ausgeführt. Die Ausgabe erfolgt, um Fehler wegen undefinierter Feldinhalte auszuschließen.
BS2000-Systeme:
In einem *Format "FORM10", das laut letzter Eingabe am Terminal noch vorhanden ist, sollen als Antwort alle ungeschützten Felder gelöscht werden.KDCS_MPUTNE (&ma,0,KDCS_SPACES,"*FORM10 ",KCERAS); if (KCRCC != 0 ) mput_error();
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".
KDCS_DPUTNE (&ma,11,"ALAAF ",KDCS_SPACES,0,'A',315,11,11,0); if (KCRCC != 0 ) /* A = absolute time */ dput_error();
BS2000-Systeme:
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.KDCS_DPUTNE (&ma,80,"DSS1 ",KDCS_SPACES,KCALARM,'R',0,1,0,0); if (KCRCC != 0 ) /* R = relative time */ dput_error();
Auftrags-Komplex: MCOM- und DPUT-Aufruf
Eine formatierte Asynchron-Nachricht (200 Byte) soll am selben Tag um 18.00 Uhr an den Drucker PRINTER2 gesendet 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.
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".
/* Begin of the complex */ KDCS_MCOMBC ("PRINTER2","PRINTPOS","PRINTNEG","*PRICOMP"); if (KCRCC != 0 ) mcom_error(); /* DPUT-message for printer */ KDCS_DPUTNE (&ma1,200,"*PRICOMP","*FORM1 ",KCNODF,'A', ca->ca_head->kccv_doy,18,0,0); if (KCRCC != 0 ) dput_error(); /* acknowledgement job in positive case */ KDCS_DPUTPT (&ma2,20,"*PRICOMP"); if (KCRCC != 0 ) dput_error(); /* User-information in negative case */ KDCS_DPUTMI (&ma3,80,"*PRICOMP"); if (KCRCC != 0 ) dput_error(); /* acknowledgement job in negative case */ KDCS_DPUTMT (&ma2,0,"*PRICOMP"); if (KCRCC != 0 ) dput_error(); /* End of complex */ KDCS_MCOMEC ("*PRICOMP"); if (KCRCC != 0 ) mcom_error();
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.
KDCS_APRODM ("LTAC1 ","PARTNER1",">VGID1 "); if (KCRCC != 0 ) apro_error(); ... KDCS_MPUTNE (&ma,100,">VGID1 ",KDCS_SPACES,KCNODF); if (KCRCC != 0 ) mput_error();