S=400; /*******************************************************************/ /* */ /* SENDE */ /* -------- */ /* */ /* Funktion : */ /* */ /* Task zur Produktion eines Auftrags an EMPF. */ /* */ /* Dient als Demo fuer GETCE / PUTCE */ /* */ /* */ /* Laden : LOAD F0:O/CBUS/SENDE */ /* */ /* Datum : 15.01.1989 */ /* */ /*******************************************************************/ MODULE SENDE; /*NP*/ SYSTEM; /*********************************************/ /* SYSTEM Teil */ /*********************************************/ USER: A1; /* verbindung zum .... */ /*********************************************/ /* SPC von Dationen */ /*********************************************/ PROBLEM; SPC USER DATION INOUT ALPHIC CONTROL(ALL); /* Systemkonsole */ /*NP*/ /*********************************************/ /* externe Proceduren */ /*********************************************/ /*************************************************************/ /* Daten senden */ /*************************************************************/ /* */ /* ANZ : 1 Laenge ist 0 */ /* 2 LND ist groesser als groesste LND */ /* 3 fuer Sohn kein Platz */ /* */ /*************************************************************/ SPC PUTCE ENTRY ( DUR , /* Auftrag nach n sec .. */ FIXED IDENT, /* Datenfeld */ FIXED , /* Auftragslaenge in Byte */ FIXED , /* ..an Programm xx (LND) */ FIXED IDENT /* Anzeigen */ ) GLOBAL; /*NP*/ /*********************************************************/ /* Modul-Globale Sysmbole */ /*********************************************************/ DCL LNDEMP INV FIXED INIT (20); /* Nummer des Empfaengers */ /*********************************************************/ /* TASK - SENDE */ /*********************************************************/ SENDE: TASK PRIO 80; /*********************************************/ /* interne Deklaratioen */ /*********************************************/ DCL VERZOEGERUNG DUR; /* Auftragsverzoegerung */ DCL LAENGE FIXED; /* Laenge des Auftrags */ DCL ANZ FIXED; /* Anzeigen */ DCL DATEN STRUCT (/ /* zu uebergebene Daten */ LAENGE FIXED, NUTZ CHAR(12) /* Nutzdaten */ /); /*NP*/ /*********************************************/ /* Initalisierung */ /*********************************************/ ANZ := 0; /* Anzeigen loeschen */ /*NP*/ /*********************************************************/ /* */ /* Bearbeitungsteil */ /* ------------------ */ /*********************************************************/ LAENGE := 14; /* Gesammtlaenge der Daten */ DATEN.LAENGE := 12; /* Laenge der Nutzdaten */ DATEN.NUTZ := 'Kent send me'; /* zu uebergebende Daten */ VERZOEGERUNG := 0.0 SEC; /* Verzoegerungszeit */ CALL PUTCE ( /* Auftrag an EMPF */ VERZOEGERUNG , /* Verzoegerungszeit */ DATEN.LAENGE , /* Adresse des Datenpuffers */ LAENGE , /* Auftragsgesammtlaenge */ LNDEMP , /* Nummer des Empfaengers (LND) */ ANZ /* Anzeigen */ ); IF ANZ NE 0 THEN /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ PUT 'SENDE : Fehler PUTCE : ',ANZ TO USER BY SKIP,(2)LIST,SKIP; ELSE /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ PUT 'SENDE : Auftrag abgegeben' TO USER BY SKIP,LIST,SKIP; FIN; /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ PUT 'SENDE : Ende ' TO USER BY SKIP,LIST,SKIP; END; /* ......of Task */ MODEND; /* Modulende */