Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Eingabe von Programmteilen

Programmteile (COPY-Elemente) können getrennt von den Übersetzungseinheiten, in denen sie Verwendung finden, in Bibliotheken gespeichert werden. Dies empfiehlt sich vor allem, wenn in verschiedenen Übersetzungseinheiten identische Programmteile vorkommen.
In der Übersetzungseinheit steht stellvertretend für diese Programmteile eine COPY-Anweisung. COPY-Anweisungen dürfen an beliebiger Stelle in der Übersetzungseinheit (außer Kommentarzeilen und nicht-numerischen Literalen) stehen.
Stößt der Compiler beim Übersetzen der Übersetzungseinheit auf eine COPY-Anweisung, holt er aus einer Bibliothek das Element, dessen Name in der COPY-Anweisung angegeben wird. Die COPY-Anweisung wird dann so übersetzt, als wäre das zugehörige Element in der Übersetzungseinheit selbst geschrieben worden. Das Format der COPY-Anweisung ist im Kapitel zur „Steuerung des Compilers über SDF“ im Handbuch „COBOL2000-Sprachbeschreibung“ [1] erläutert.

Eingabe von COPY-Elementen aus PLAM-Bibliotheken

Vor dem Aufruf des Compilers müssen die Bibliotheken, in denen sich die COPY-Elemente befinden, dem Compiler mit dem ADD-FILE-LINK-Kommando zugewiesen und mit den im Folgenden spezifizierten Linknamen verknüpft werden.
Falls in der COPY-Anweisung ein Bibliotheksname angegeben ist, wird der Linkname aus den ersten 8 Zeichen des Bibliotheksnamens gebildet.
Falls in der COPY-Anweisung kein Bibliotheksname vereinbart wurde, können bis zu zehn Bibliotheken mit den Standard-Linknamen COBLIB, COBLIB1 bis COBLIB9 verknüpft werden. Der Compiler durchsucht dann der Reihe nach die zugewiesenen Bibliotheken, bis er das jeweils gesuchte COPY-Element findet.

Je nach Formulierung der COPY-Anweisung in der Übersetzungseinheit sind folgende Verknüpfungen nötig:

COPY-Anweisung

ADD-FILE-LINK-Kommando

COPY textname

ADD-FILE-LINK [LINK-NAME=]standard-linkname, [FILE-NAME=]libname

textname

bis zu 31 Zeichen langer Elementname

standard-linkname

COBLIB
COBLIB1..COBLIB9

libname

Name der katalogisierten Bibliothek, in der das COPY-Element gespeichert ist

COPY textname OF bibliothek

ADD-FILE-LINK [LINK-NAME=] linkname, [FILE-NAME=] libname

bibliothek

bis zu 31 Zeichen langer Bibliotheksname

linkname

die ersten acht Zeichen von bibliothek

libname

Name der katalogisierten Bibliothek, in der das COPY-Element gespeichert ist


Eingabe von COPY-Elementen aus dem POSIX-Dateisystem

Wenn das POSIX-Subsystem vorhanden ist, können dem Compiler auch COPY-Texte aus dem POSIX-Dateisystem eingegeben werden. Dies erfolgt mittels einer S-Variablen mit dem Standardnamen SYSIOL-COBLIB bzw. SYSIOL-bibliotheksname. Je nach Formulierung der COPY-Anweisung in der Übersetzungseinheit ist die S-Variable folgendermaßen zu gestalten (siehe auch Beispiel 2-6, "Eingabe von Programmteilen"); gilt nicht für BC (Grundausbau):

COPY-Anweisung

S-Variable

COPY textname

DECL-VAR SYSIOL-COBLIB,INIT=‘*POSIX(pfad)‘, SCOPE=*TASK

textname

bis zu 31 Zeichen langer

Name der POSIX-Datei, die den COPY-Text enthält. textname darf keine Kleinbuchstaben enthalten.

pfad


Absoluter Pfadname (beginnend mit /) des Dateiverzeichnisses, in dem die Datei textname gesucht werden soll


COPY textname OF library

DECL-VAR SYSIOL-libname,INIT=‘*POSIX(pfad)‘, SCOPE=*TASK

bibliothek

bis zu 31 Zeichen langer

Bibliotheksname zur Bildung der S-Variablen mit dem Namen SYSIOL-bibliothek. bibliothek darf keine Kleinbuchstaben enthalten.

libname

die ersten 8 Zeichen von bibliothek

pfad

Absoluter Pfadname (beginnend mit /) des Dateiverzeichnisses, in dem die Datei textname gesucht werden soll


Beispiel 2-4

Eingabe zweier COPY-Elemente

IDENTIFICATION DIVISION.
PROGRAM-ID. PROG.
...
COPY XYZ.———————————————————————————————————————————————————————(1)
COPY ABC OF BIBLIO.—————————————————————————————————————————————(2)
...

Zuweisung und Verknüpfung:

/ASSIGN-SYSDTA BEISPIEL1—————————————————————————————————————————(3)
/ADD-FILE-LINK COBLIB,BIB1———————————————————————————————————————(4) 
/ADD-FILE-LINK BIBLIO,BIB2———————————————————————————————————————(5)

Compileraufruf

Die Übersetzungseinheit in der Datei BEISPIEL1 enthält folgende COPY-Anweisungen:

(1)

XYZ ist der Name des Elements, unter dem das COPY-Element in der PLAM-Bibliothek BIB1 abgespeichert ist.

(2)

ABC ist der Name des Elements, unter dem das COPY-Element in der PLAM-Bibliothek BIB2 mit dem Linknamen BIBLIO abgespeichert ist.

(3)

SYSDTA wird der Datei BEISPIEL1 zugewiesen. Von dort erhält der Compiler die Übersetzungseinheit, in dem zwei COPY-Anweisungen stehen.

(4)

Das erste ADD-FILE-LINK-Kommando weist die PLAM-Bibliothek BIB1 zu und verknüpft sie mit dem Standard-Linknamen COBLIB.

(5)

Das zweite ADD-FILE-LINK-Kommando weist die PLAM-Bibliothek BIB2 zu und verknüpft sie mit dem in der COPY-Anweisung angegebenen Linknamen BIBLIO.

Beispiel 2-5

Eingabe mehrerer COPY-Elemente aus verschiedenen Bibliotheken

IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
...
      COPY A1.                                                   (1)
      COPY B1.                                                    |
      COPY D1.                                                   (1)
...

Zuweisung und Verknüpfung:

/ASSIGN-SYSDTA EXAMPLE2 ———————————————————————————————————————— (2)

/ADD-FILE-LINK COBLIB,A                                          (3)
/ADD-FILE-LINK COBLIB1,B                                          |
/ADD-FILE-LINK COBLIB3,D                                         (3)
Compileraufruf ————————————————————————————————————————————————— (4)


Die Übersetzungseinheit BEISPIEL2 enthält folgende COPY-Anweisungen:

(1)

A1, B1, D1 sind die Namen der COPY-Elemente, unter denen sie in den katalogisierten Bibliotheken A, B, D gespeichert sind.

(2)

SYSDTA wird der katalogisierten Datei BEISPIEL2 zugewiesen. Von dort erhält der Compiler die Übersetzungseinheit, in der drei COPY-Anweisungen stehen.

(3)

Die Bibliotheken A, B und D werden zugewiesen und mit den Standard-Linknamen verknüpft. Dabei muss der Standard-Linkname COBLIB stets zugewiesen werden, während die Verknüpfung mit COBLIB1 bis COBLIB9 in Anzahl und Reihenfolge beliebig ist.

(4)

Nach dem Aufruf durchsucht der Compiler COBLIB, COBLIB1 und COBLIB3 in dieser Reihenfolge nach den in den COPY-Anweisungen genannten Elementen.

Beispiel 2-6

Eingabe eines COPY-Elements aus dem POSIX-Dateisystem

IDENTIFICATION DIVISION.
PROGRAM-ID. PROG1.
...
COPY ATEXT.————————————————————————————————————————————————————————(1)
...

Zuweisung des POSIX-Dateisystems durch Einrichten und Setzen einer S-Variablen:

/DECL-VAR SYSIOL-COBLIB,INIT='*POSIX(/usr/dir1),*POSIX(/usr/dir2)', —
/                              SCOPE=*TASK ————————————————————————(2)
/START-COBOL2000-COMPILER? ————————————————————————————————————————(3)

(1)

Das COPY-Element ATEXT befindet sich als Datei im POSIX-Dateisystem.

(2)

Mit dem SDF-P-Kommando DECL-VARIABLE wird die Variable auf die Pfade im POSIX gesetzt, in deren Verzeichnissen dir1 und dir2 nach der Datei ATEXT gesucht werden soll.

(3)

Der Zugriff auf das POSIX-Dateisystem ist nur möglich, wenn der Compiler mit SDF-Steuerung aufgerufen wird. Mit dem an das Aufrufkommando angehängten „?“ gelangt der Benutzer in den SDF-Menümodus (siehe Abschnitt „SDF-Menü-Modus"), in dem weitere Angaben zur Steuerung des Übersetzungslaufs erfolgen können.

(4)

Der Compiler akzeptiert COPY-Elemente aus dem POSIX-Dateisystem nur, wenn ihre Dateinamen ausschließlich aus Großbuchstaben bestehen.