Neu in 6.1: Der CL-Befehl INCLUDE

2. Januar 2011 | Von | Kategorie: Load`n`go, Programmierung

Eine der Neuerungen von i/OS 6.1. ist der CL-Befehl INCLUDE. Der Befehl ermöglicht es endlich, auch in OPM CL und ILE CL mit Copy-Strecken zu arbeiten. INCLUDE ist das entsprechende Gegenstück zur Anweisung /COPY in RPG und COBOL.

BurgyZapp

Load n go Dezember 2010

Mit i/OS 6.1 wurde eine Funktion eingeführt, die viele CL-Programmierer schon lange vermisst haben

von Dan Riehl

Es folgt der Download Code Dez. 2010 für Abonnenten:

Der Befehl INCLUDE wird in CLP- und CLLE-Quellen verwendet, um festzulegen, welche Quellenteildatei an der entsprechenden Stelle einkopiert werden soll. Das standardmäßige Format lautet:

INCLUDE SRCMBR(MYCOPY1) SRCFILE(*INCFILE)

Der Parameter SRCMBR bestimmt den Namen der Quellenteildatei, die während der Umwandlung an dieser Stelle eingefügt werden soll. Mit dem Parameter SRCFILE(*INCLUDE) legt man fest, dass die einzufügende Teildatei in der standardmäßigen Quellendatei gespeichert ist. Man kann aber auch eine andere Quellendatei als Repository für die einzufügende Copy-Strecke festlegen:

INCLUDE SRCMBR(MYCOPY1) SRCFILE(MYLIB/INCLUDES)

In unserem Beispiel zeigen wir zwei INCLUDE-Quellenteildateien, die man zur einheitlichen Fehlerbehandlung verwenden kann.

Die Quellenteildatei CPY_ERR

Der erste Quellcode, CPY_ERR, enthält einige DCL-Anweisungen und eine globale MONMSG-Anweisung. Die DCL-Anweisungen deklarieren die Variablen, die für die Fehlerbehandlungs-Routine in der zweiten COPY-Quelle, CPY_ERR2, benötigt werden.

DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(512)
MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))

Die Quellenteildatei CPY_ERR2

Die allgemeine Fehlerbehandlungs-Routine könnte so aussehen:

ERROR: RCVMSG MSGTYPE(*LAST) MSGDTA(&MSGDTA) +
MSGID(&MSGID) MSGF(&MSGF) +
SNDMSGFLIB(&MSGFLIB)
MONMSG MSGID(CPF0000) /* ZUR SICHERHEIT */
SNDPGMMSG MSGID(&MSGID) +
MSGF(&MSGFLIB/&MSGF) MSGDTA(&MSGDTA) +
MSGTYPE(&ESCAPE)
MONMSG MSGID(CPF0000) /* ZUR SICHERHEIT */

Die folgende Quellenteildatei namens TEST_ERR dient als Beispiel für ein CL-Programm, das die INCLUDE-Anweisungen an den passenden Stellen enthält.

Die Quellenteildatei TEST_ERR

PGM
INCLUDE SRCMBR(CPY_ERR)

CHKOBJ OBJ(XXXX) OBJTYPE(*FILE)

RETURN /* Normales Programmende */

INCLUDE SRCMBR(CPY_ERR2)

ENDPGM

Die Quellenteildatei TEST_ERR befindet sich in der Datei QCLSRC in der Bibliothek MYLIB. Diese Quellendatei ist die standardmäßige Quellendatei, die verwendet wird, wenn im INCLUDE-Befehl keine Quellendatei festgelegt wird. In diesem Beispiel sind die INCLUDE-Teildateien ebenfalls in der Quellendatei QCLSRC in Bibliothek MYLIB enthalten.

Wenn der Quellcode TEST_ERR umgewandelt wird, bewirken die INCLUDE-Anweisungen, dass der Quellcode der angegebenen Teildateien in den Eingabe-Quellcode für den Compiler kopiert wird.

Der Compiler erweitert die INCLUDE-Anweisung um den Namen der Quellendatei, die im Quellcode von TEST_ERR nicht angegeben wurde. Die INCLUDE-Anweisung wird durch zwei Kommentarzeilen ersetzt, die die vollständige Kopieranweisung enthalten, und die den Anfang und das Ende der eingefügten Quellenteildatei markieren.

Die Compileraufrufe für CLP und CLLE enthalten den neuen Parameter INCFILE, der die Quellendatei festlegt, die standardmäßig bei der Umwandlung verwendet wird. Wird *SRCFILE angegeben, wie im nachfolgenden Beispiel, so dient die im Parameter SRCFILE angegebene Quellendatei als Default-Quellendatei für INCLUDE-Anweisungen. In diesem Fall ist dies die Datei MYLIB/QCLSRC.

Hier noch zwei Beispiele für die Verwendung des neuen Umwandlungs-Parameters INCFILE:

CRTCLPGM PGM(MYLIB/TEST_ERR) +
SRCFILE(MYLIB/QCLSRC) +
SRCMBR(TEST_ERR) +
INCFILE(*SRCFILE)

CRTBNDCL PGM(MYLIB/TEST_ERR) +
SRCFILE(MYLIB/QCLSRC) +
SRCMBR(TEST_ERR) +
INCFILE(*SRCFILE)

Nutzen Sie diese neue Möglichkeit zum Erstellen und Verwenden von Copy-Strecken für CL-Programme und vereinfachen Sie sich die Codierarbeit!

Über den Autor

Dan Riehl (dan.riehl@SecureMyi.com) ist Vorstand und Sicherheitsexperte der IT Security and Compliance Group, LLC. Er schreibt seit mehr als 20 Jahren für System iNews und ist Herausgeber des System iNetwork E-Mail-Newsletters Systems Management.

Schlagworte: , , , , , , , , ,

Schreibe einen Kommentar

Sie müssen eingeloggt sein, um einen Kommentar schreiben.