Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Jobvariablen

Jobvariablen sind als eigenes Softwareprodukt erhältlich. Ähnlich wie Auftrags- und Benutzerschalter dienen auch sie dem Informationsaustausch

  • zwischen Anwenderprogrammen und dem Betriebssystem oder

  • zwischen verschiedenen Anwenderprogrammen.

Jobvariablen bieten jedoch gegenüber den Schaltern zusätzliche Möglichkeiten:

  • Sie können beim Aufruf eines Programms als überwachende Jobvariablen vereinbart werden. Als solche werden sie vom Programm automatisch mit Zustands- und Rückkehrcodes versorgt, die über Programmzustand und Beendigungsverhalten sowie über mögliche Ablauffehler informieren.

  • Sie können auf Betriebssystem- oder Programm-Ebene mit Datensätzen bis zu 256 Byte (bei überwachenden Jobvariablen: 128 Byte) Länge versorgt werden. Dadurch lassen sie beim Informationsaustausch eine stärkere Differenzierung zu als Auftrags- oder Benutzerschalter, die nur zwischen den Zuständen ON und OFF wechseln können.

  • Sie können - anders als Auftrags- oder Benutzerschalter - auch von Aufträgen verändert werden, die unter verschiedenen Benutzerkennungen ablaufen.

Bevor ein COBOL-Programm auf eine Jobvariable zugreifen kann, muss sie ihm - ähnlich wie eine Datei - über einen Linknamen zugewiesen werden. Bei Jobvariablen dient dazu das Kommando SET-JV-LINK. Sein Format ist in den Handbüchern [3] und [7] beschrieben, ein Beispiel dazu enthält der folgende Abschnitt. Der Linkname, der dabei im Kommando anzugeben ist, ergibt sich aus den Vereinbarungen im COBOL-Programm (siehe unten).

Den Zugriff auf Jobvariablen unterstützt COBOL2000 durch folgende Sprachmittel (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]):

  • Die Vereinbarung von Linknamen und programminternen Merknamen für Jobvariablen im SPECIAL-NAMES-Paragrafen der ENVIRONMENT DIVISION:
    Über die Linknamen können Jobvariablen zugewiesen werden, über die Merknamen können sich die Anweisungen der PROCEDURE DIVISON auf sie beziehen (siehe unten). Link- und Merknamen für Jobvariablen lassen sich mit Angaben nach folgendem Format vereinbaren:

    JV-jvlink IS merkname

    jvlinklegt dabei den Linknamen für die Jobvariable fest. Bei der Bildung des Linknamens wird vor jvlink als erstes Zeichen „*“ gesetzt; er ergibt sich damit als *jvlink. Daher darf die Zeichenfolge jvlink höchstens 7 Byte lang sein.
    merknamevereinbart den programminternen Merknamen für die Jobvariable.
  • Die Anweisungen ACCEPT und DISPLAY der PROCEDURE DIVISION:

    • ACCEPT...FROM merkname

      liest den Inhalt der (im SPECIAL-NAMES-Paragrafen) mit merkname verknüpften Jobvariable. Die Daten werden dabei linksbündig in der Länge des Empfangsfeldes der ACCEPT-Anweisung übertragen: Ist das Feld länger als 256 Byte, wird es am rechten Ende mit Leerzeichen aufgefüllt; ist es kürzer, wird der Inhalt der Jobvariable bei der Übertragung rechts auf die Feldlänge abgeschnitten.

    • DISPLAY...UPON merkname

      schreibt in die (im SPECIAL-NAMES-Paragrafen) mit merkname verknüpfte Jobvariable.
      Die Daten werden dabei in der Länge der Sendefelder bzw. Literale der DISPLAY-Anweisung übertragen, falls die maximale Datensatzlänge von 256 Byte (bei überwachenden Jobvariablen: 128 Byte) nicht überschritten wird. Ist die Gesamtzahl der zu übertragenden Zeichen größer als die maximale Datensatzlänge, wird der Satz bei der Übertragung auf die maximale Länge abgeschnitten.
      Bei der Übertragung in eine überwachende Jobvariable ist zu beachten, dass deren erste 128 Bytes vom System gegen Schreibzugriffe geschützt werden. Es wird daher nur der Teil des Datensatzes, der mit der Position 129 beginnt, ab Position 129 in die Jobvariable geschrieben.

    Läuft ein COBOL-Programm mit Anweisungen für Jobvariablen in einer BS2000-Installation ab, die Jobvariablen nicht unterstützt, werden diese Anweisungen nicht ausgeführt. Nach einer ACCEPT-Anweisung enthält das Empfangsfeld die Zeichen „/*“ ab Spalte 1. Der erste Zugriffsversuch auf eine Jobvariable veranlasst die Ausgabe der Meldung COB9120 nach SYSOUT. Ein fehlerhafter Zugriff auf eine Jobvariable in einer BS2000-Installation, die Jobvariablen unterstützt, führt zur Ausgabe der Meldung COB9197 nach SYSOUT (siehe Tabelle10 in Abschnitt „Programmbeendigung").

Beispiel 8-4

Kommunikation über Jobvariable

Im folgenden Auftrag wird die Jobvariable KONTROLLE.ABLAUF sowohl von einem COBOL-Programm als auch auf Kommandoebene verwendet. Abhängig vom Inhalt der Jobvariable kann das Programm unterschiedliche Verarbeitungszweige durchlaufen und ggf. den Inhalt der Jobvariable aktualisieren. Auch ein anderer Auftrag - selbst unter einer anderen Benutzerkennung - kann auf diese Jobvariable zugreifen, falls sie mit dem Kommando CREATE-JV ...,USER-ACCESS=ALL-USERS katalogisiert wurde.

/SET-JV-LINK LINK-NAME=UPDATE,JV-NAME=CONTROL.RUN —————————————— (1)
/START-PROGRAM PROG.WORK-1

Programmausschnitt:
...
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
    TERMINAL IS T
    JV-UPDATE IS FIELDJV. ———————————————————————————————————— (2)
     ...
DATA DIVISION.
WORKING-STORAGE SECTION.
01  DATE-TODAY      PIC X(6). ———————————————————————————————— (3)
01  CONTENTS-JV. ————————————————————————————————————————————— (4)
  05  DATE-UPDATE   PIC X(6).
  05  FILLER        PIC X(20).
  05  NUM-UPDATE    PIC 9(4).
     ...
PROCEDURE DIVISION.
    ACCEPT CONTENTS-JV FROM FELDJV. —————————————————————————— (5)
    ACCEPT DATE-TODAY FROM DATE.
    IF DATE-UPDATE NOT EQUAL DATE-TODAY —————————————————————— (6)
      PERFORM WORK
        ELSE PERFORM ALREADY-UPDATED.
     ... 
WORK.
     ...
    MOVE DATE-TODAY TO AKT-DAT.                                (7)
    ADD 1 TO NUM-UPDATE.                                        |
    DISPLAY CONTENTS-JV UPON FIELDJV.                          (7)
     ...
ALREADY-UPDATED.
    DISPLAY "END OF UPDATE"
      UPON T.
     ...

/SHOW-JV JV-NAME(CONTROL.RUN) —————————————————————————————————— (8)
%930629 UPDATE NR. 1679

(1)

Die Jobvariable KONTROLLE.ABLAUF wird dem nachfolgend aufgerufenen COBOL-Programm PROG.ARBEIT-1 über den Linknamen *AKTUELL zugewiesen.

(2)

Im SPECIAL-NAMES-Paragrafen von PROG.ARBEIT-1 werden für die Jobvariable der Linkname *AKTUELL und der (programminterne) Merkname FELDJV vereinbart.

(3)

TAGDAT wird als Empfangsfeld für das Tagesdatum reserviert.

(4) Das Empfangsfeld für den Inhalt der Jobvariable wird vereinbart. Es enthält Teilfelder für die Aufnahme des letzten Aktualisierungsdatums (AKT-DAT) und eines Aktualisierungszählers (AKT-NUM).

(5)

ACCEPT überträgt den Inhalt der Jobvariable FELDJV nach INHALT-JV.

(6)Abhängig davon, ob das Aktualisierungsdatum (AKT-DAT) der Jobvariable mit dem Tagesdatum (TAGDAT) übereinstimmt, werden im Programm verschiedene Verarbeitungsprozeduren durchlaufen.

(7)

Am Ende der Verarbeitung werden die Felder AKT-DAT und AKT-NUM aktualisiert und mit DISPLAY INHALT-JV... in die Jobvariable zurückgeschrieben.

(8)

Auf Betriebssystem-Ebene wird die Jobvariable gelesen: Sie enthält Datum und Nummer der letzten Aktualisierung.