Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Makro OPENFT zum Aufruf eines Benutzer-Kommandos

&pagelevel(3)&pagelevel

[ label ] OPENFT

CMD={ cmd-buff-addr | (r) }

,MSG={ msg-buffer | (r) }

,VERS={ 1 | 2 }

label

Angabe einer symbolischen Adresse für den ersten Befehl der Makroauflösung (optional).

cmd-buff-addr

Adresse einer Verweisliste, die ihrerseits wieder Adressen enthält, die u.a. auf den Kommando-String verweisen. Diese Liste muss auf Ganzwort-Grenze beginnen, der genaue Aufbau ist unten beschrieben.

Anstelle einer symbolischen Adresse kann auch in Klammern die Nummer eines Registers angegeben werden, das diese Adresse enthält. Es dürfen die Register 2 bis 12 verwendet werden.

msg-buffer

Adresse eines Puffers für die Meldungen bzw. für zurückgemeldete Informationen. Dieser Puffer muss auf Ganzwort-Grenze beginnen und beim Aufruf des Makros OPENFT den folgenden Aufbau haben:

-+--+--+--+--+--+--+--+--+--+--+- - - - -+|
  lp  |                           . . . | 
-+--+--+--+--+--+--+--+--+--+--+- - - - -+-

Nach der Ausführung des Makros OPENFT hat dieser Puffer den folgenden Inhalt:

-+--+--+--+--+--+--+- - - -+--+--+- - - -+- - -
 | lp  |  lm | lm1 | msg1  | lm2 |  msg2 |
-+--+--+--+--+--+--+- - - -+--+--+- - - -+- - -


lp

Längenfeld von 2 Bytes. Enthält die Länge des Puffers in Bytes (einschließlich Längenfeld).

lm

Längenfeld von 2 Bytes. Vor der Ausführung eines Kommandos muss dieses Feld mit X'0000' besetzt sein. Nach der Ausführung eines Kommandos enthält dieses Feld die Länge der zurückgelieferten Texte in Bytes ohne die Länge der Längenfelder lp und lm, aber mit den Längen der Längenfelder lm1, lm2,... Wenn die Summe der auszuliefernden Texte länger ist als der zur Verfügung gestellte Puffer, dann wird zum einen der Return-Code '10' (hexadezimal) gemeldet, zum andern enthält das Feld "lm" die Länge in Bytes, die erforderlich wäre, um den kompletten Text aufzunehmen.

lm1

Längenfeld von 2 Bytes. Enthält die Länge des Meldungstextes msg1 in Bytes ohne die Länge dieses Längenfeldes.

msg1

In dieses Feld wird die erste Zeile des Meldungstextes eingetragen, der auf Grund des ausgeführten Kommandos am Terminal ausgegeben würde.

lm2

Längenfeld von 2 Bytes. Enthält die Länge des Meldungstextes msg2 in Bytes ohne die Länge dieses Längenfeldes.

msg2

In dieses Feld wird die zweite Zeile des Meldungstextes eingetragen, der auf Grund des ausgeführten Kommandos am Terminal ausgegeben würde.

Auf diese Weise werden alle Zeilen des Meldungstextes in den Puffer ausgegeben, bis entweder der Meldungstext vollständig ausgegeben wurde oder bis die Pufferlänge "lp" erreicht ist. Die letzte in den Puffer ausgegebene Zeile ist eventuell unvollständig! Obwohl in diesem Fall keine weiteren Zeilen in den Puffer ausgegeben werden, wird dennoch der Wert für "lm" weiter aufsummiert, so dass anschließend in "lm" die Größe enthalten ist, die als Puffergröße "lp" für die vollständige Ausgabe erforderlich wäre (ohne die Länge der beiden Längenfelder "lp" und "lm").

Die Größe des Ausgabepuffers sollte ungefähr der zu erwartenden Datenmenge angepasst werden. Für das Absetzen eines NCOPY reichen 200 Bytes, für ein FTSHWLOG auf 100 Loggingsätze sind ca 8kB erforderlich

Das Format der Texte ist identisch zur Terminal-Ausgabe, d.h. gegebenenfalls sind auch Steuerzeichen enthalten. Diese Texte sind im Abschnitt "Meldungen des FT-Systems für den Benutzer" im Anhang beschrieben.

Anstelle einer symbolischen Adresse kann auch in Klammern die Nummer eines Registers angegeben werden, das diese Adresse enthält. Es dürfen die Register 2 bis 12 verwendet werden.

VERS=

In der Version V10.0 von openFT wurden die Returncodes umgestellt. Dadurch werden andere Meldungsnummern als bisher (openFT <= V9.0) ausgegeben. Der Parameter VERS dienst dazu, die Kompatibilität älterer Programme zu erhalten:

1: Es werden die alten Returncodes ausgegeben, Standardwert

2: Es werden die neuen Retunrcodes ausgegeben.

Der Parameter VERS bietet die Möglichkeit, zwischen alter und neuer Returncode-Ausgaben zu wählen:

  • Wenn Sie die alte Returncode-Ausgabe wünschen (Standardwert), bleibt die Kompatibilität älterer Programme erhalten, d.h. sie können ohne Anpassung eingesetzt werden und brauchen auch nicht neu übersetzt werden.

  • Wenn Sie die neuen Returncodes verwenden möchten, müssen Sie explizit den Parameter VERS=2 setzen, die Programme anpassen und neu übersetzen.

Aufbau der Verweisliste (cmd-buff-addr)

Der Parameter cmd-buff-addr verweist auf eine Liste, deren Aufbau nachfolgend beschrieben ist.

Übergabe eines Benutzer-Kommandos

Für den Fall, dass ein Benutzer-Kommando mittels Makro OPENFT übergeben wird, enthält der Parameter cmd-buff-addr die Adresse einer Liste von vier Ganzworten, die der "command processor parameter list" (CPPL) des TSO entspricht:

                    -+--+--+--+--+-
cmd-buff-addr ==>    |  CPPLCBUF |
                    -+--+--+--+--+-
                     | Nullpointer |
                    -+--+--+--+--+-
                     | Nullpointer |
                    -+--+--+--+--+-
                     | Nullpointer |
                    -+--+--+--+--+--
                     | -

Das Feld CPPLCBUF enthält die Adresse des Kommando-Puffers. Der Kommando-Puffer, auf den die im Feld CPPLCBUF enthaltene Adresse verweist, muss auf Ganzwort-Grenze beginnen und muss genau so aufgebaut sein wie für einen TSO-Command-Processor.

             -+--+--+--+--+--+--+--+--+--+--+- - - -+-
CPPLCBUF ==>  | lng | off |  kommando-string  . . . |
             -+--+--+--+--+--+--+--+--+--+--+- - - -+-

lng

Längenfeld von 2 Bytes. Dieses Feld enthält die Länge des Kommando-Strings plus der Länge der Felder lng und off (also plus 4).

off

Offset-Feld von 2 Bytes. Dieses Feld enthält den Offset des ersten Parameters, bezogen auf den Beginn des Kommando-Strings (nicht auf den Beginn dieses Puffers!).

kommandostring

Dieses Feld enthält das auszuführende Kommando als Zeichenstring. Die Länge dieses Strings ist auf maximal 2000 Zeichen begrenzt. Die Kommandos sind im Kapitel „openFT-Kommandos“ beschrieben.

In Register 15 wird dem Anwenderprogramm ein Return-Code zurückgeliefert (rechtsbündig). Return-Code (hexadezimal) in R15:

'00'

Normale Beendigung

'04'

Warnung

'0C'

Syntaxfehler, Zugriffsbedingungen ungültig

'10'

Der Puffer für die Rückmeldung war zu klein, der Text wurde nicht vollständig
abgelegt.

'12'

Die Ressourcen (z.B. VTAM-Verbindung) sind belegt.

Beispiel für den Aufruf eines Benutzer-Kommandos

Es soll folgendes Kommando ausgeführt und dabei die neuen Returncodes verwendet werden:

NCOPY

TRANS=TO,PARTNER=BS2,LOC=(FILE=DAT,TRANS=(OTTO,A1234,PASSWORD)), -

REM=*BS2000(DATEN,TRANS=(ANTON,4567ABC,'GEHEIM'))

Der folgende Assembler-Code ist dafür erforderlich:

          LA    13,SAVAREA           SAVE AREA BEREITSTELLEN
          OPENFT CMD=CMDBUFF,MSG=MSGBUFF,VERS=2
          .
          .
CMDBUFF   DC    A(CBUFF)             ADR. DES KOMMANDO-PUFFERS
          DC    A(0)                 NICHT VERWENDET
          DC    A(0)                 NICHT VERWENDET
          DC    A(0)                 NICHT VERWENDET
          SPACE
CBUFF     DS    0F                   KOMMANDO-PUFFER
          DC    Y(CLNG)              LAENGENFELD
          DC    Y(L'CNAME)           OFFSET AUF 1. PARAMETER
CNAME     DC    C'NCOPY   '            KOMMANDO-NAME
          DC    C'TRANS=TO'            1. PARAMETER
          DC    C',PARTNER=BS2'        2. PARAMETER
          DC    C',LOC=('              LOCAL PARAMETER
          DC    C'FILE=DAT'               DATEI-NAME
          DC    C',TRANS=('
          DC    C'OTTO,A1234,PASSWORD'    TRANSFER-ADMISSION
          DC    C')),'
          DC    C'REM=*BS2000('        REMOTE PARAMETER
          DC    C'DATEN'                     DATEI-NAME
          DC    C',TRANS=('
          DC    C'ANTON,4567ABC,''GEHEIM'''  TRANSFER-ADM.
          DC    C'))'
CBFFEND   EQU   *
CLNG      EQU   CBFFEND-CBUFF        LAENGE DES PUFFERS
          SPACE
MSGBUFF   DS    0F                   MELDUNGS-PUFFER
          DC    Y(MSGLNG)            LAENGE DES PUFFERS
          DC    X'0000'
          DS    CL200                MELDUNGS-TEXT
MSGEND    EQU   *
MSGLNG    EQU   MSGEND-MSGBUFF
          SPACE
SAVAREA   DC    18F'0'               SAVE AREA