CL
- Programmierung
harl3kin@buhaboard.de
1.)
Einführung
in die CL - Programmierung:
- Ein
CL-Programm enthält Quelleneintragungen, die in ein ausführbares Objekt umgewandelt
werden.
- CL-Programme
können die Verarbeitungsfolge steuern und Fehlerbedingungen behandeln.
- CL-Programme
sind schneller, flexibler und leistungsfähiger als einzeln ausgeführte CL-Befehle.
- Ein
CL-Programm kann wie ein in einer höheren Programmiersprache geschriebenes
Programm getestet und auf Fehler untersucht werden.
- CL-Programme
können auf Systemwerte, Datenbereiche und Datenbankdateien zugreifen.
- Die
Steuerung der Programmlogik ist ein wesentliches Element von CL-Programmen.
- Ausdrücke
können in CL-Programmen für die Durchführung arithmetischer Operationen und
die Manipulation von alphanumerischen Variablen benutzt werden.
- Mit
CL-Prozeduren können allgemeine Prozeduren zur Systembedienung automatisiert
werden.
2.)
SEU
und PDM:
- Die
Bearbeitung von Quellenprogrammen erfolgt in einem besonderen Arbeitsbereich,
der für eine SEU-Sitzung erstellt wird.
- In
SEU gibt es die drei folgenden Anzeigen mit Auswahlmöglichkeiten, die jeweils
über eine bestimmte Funktionstaste aufgerufen werden können:
Sitzungsstandardwerte ändern, Suchen/Ändern und Ansehen/Kopieren.
- Kommentare
können am Ende von Befehlsanweisungen oder in separaten Zeilen zwischen vollständigen
CL-Befehlen eingefügt werden.
- PDM
bietet eine Funktion zur Auflistung der in einer Quellenteildatei enthaltenen
Teildateien.
- Im
Rahmen von PDM kann mit Bibliotheken, Objekten oder Teildateien gearbeitet
werden.
3.)
Erfassen
und Erstellen von CL-Programmen:
- Die
Bedienerführung für CL-Befehle wird über die Taste F4 aufgerufen oder als
Alternative das Zeilenkommando „P“ im Format „Editieren“ von SEU eingegeben.
- Die
Syntaxprüfung von SEU erkennt automatisch CL-Befehle, die ohne die erforderlichen
Parameter oder mit ungültigen Parameterwerten erfasst wurden.
- Der
Teil der Umwandlungsliste mit der Nachrichtenzusammenfassung führt die Gesamtzahl
der Fehlermeldungen nach Bewertungskategorien auf.
- Während
der Editierung einer Programmquelle können Umwandlungsfehler leicht aufgefunden
werden, indem man sich die Umwandlungsliste einblenden lässt (F15/Auswahl
2) und die Suchfunktion zum Auffinden von Fehlern benutzt (F
[ind] *ERR[or]).
- Die
in einem CL-Programm benutzten Datenbereiche, Variablen und Kennsätze werden
in dem Abschnitt „Querverweis“ der Umwandlungsliste aufgeführt.
- Die
SEU-Anzeige „Standardwerte für Sitzung ändern“ wird durch Betätigen der Taste
F13 aufgerufen.
4.)
Variablen
in CL-Programmen:
- Alle
programmintern definierten CL-Variablen müssen in DCL-Anweisungen festgelegt
werden, die ganz am Anfang des Programms hinter der PGM-Anweisung aufgeführt
sein müssen.
- Variablen
können in CL-Programmen dazu benutzt werden, Systemwerte wie das Datum oder
die Zeit in das Programm zu übernehmen.
- In
dem Befehl RTVSYSVAL (RETRIEV SYSTEM VALUE) müssen der Name des Systemwerts,
der abgerufen werden soll, sowie die diesen Wert empfangende Variable als
Parameter angegeben werden.
- Bei
SEU handelt es sich um einen bildschirmorientierten Editor, der selbst dann
eine Syntaxprüfung durchführt, wenn nur ein einziger Befehlsparameter modifiziert
wurde.
- Der
Wert einer CL-Programmvariablen kann durch die Angabe einer Konstanten, einer
anderen Variablen oder eines Ausdrucks in dem VALUE-Parameter des Befehls
CHGVAR (CHANGE VARIABLE) geändert werden.
- Eine
CL-Programmvariable kann als numerischer Wert, als alphanumerische Zeichenfolge
oder als eine einstellige logische Variable definiert werden.
5.)
Steuerung
der Programmausführung:
- Die
normale Verarbeitungsfolge in CL-Programmen kann durch die Verwendung von
IF- und GOTO-Anweisungen geändert werden.
- Die
von einer IF-Anweisung abgefragte Bedingung wird durch einen relationalen
oder einen logischen Ausdruck dargestellt.
- IF COND(&ZEIT *LT
‘060000’ *OR &AUFNR *EQ 0) THEN (GOTO CMDLBL(MORGEN))
Diese CL-Anweisung
bedeutet, dass das Programm zu dem Programmpunkt “MORGEN” verzweigt, falls es
noch nicht 06.00 Uhr ist und die Variable mit der Auftragsnummer den Wert ’0’
enthält.
- Relationale
Operatoren werden benutzt, um die Werte von zwei Operanden zu vergleichen,
die als Konstante oder Variable dargestellt sein können.
- DO-Gruppen
sollen verwendet werden, wenn mehrere Verarbeitungsschritte unter einer bestimmten
Bedingung ausgeführt werden sollen.
- Zusätzlich
zu einer Bedienerführung für Befehle bietet SEU eine Bedienerführung für einzelne
Befehlsparameter, die durch Eingabe eines „?“ in dem Eingabefeld für einen
Parameter abgerufen werden kann.
- Die
Befehle „IF“, „ELSE“, „DO“, „ENDDO“, und „GOTO“ sind in CL-Programmen gültig.
- Es
gibt viele verschiedene Möglichkeiten der Programm-Dokumentation, die effektiv
sein können.
6.)
Manipulation
von Variablen:
- Bei
den vier Arten von Ausdrücken, die in CL-Programmen verwendet werden können,
handelt es sich um relationale, arithmetische, logische und Zeichenfolge-Ausdrücke.
- Arithmetische
Ausdrücke wie Addition, Subtraktion, Multiplikation und Division können in
Verbindung mit numerischen Werten oder Variablen als Operanden definiert werden.
- Das
Ergebnis des Ausdrucks %SWITCH(0101XXXX) ist
der logische Wert von ’1’ für wahr, falls der erste und der dritte Schalter
’aus’ und der zweite und der vierte Schalter ’an’ sind.
- Als
Eintragungen für die %SUBSTRING-Funktion sind
die Angaben ’Name der CL-Variablen’, ’Anfangsposition der Zeichenfolge’ und
’Länge der Zeichenfolge’ in der genannten Reihenfolge erforderlich!
- Die
Jobschalter müssen nicht mit dem Befehl RTVJOBA (RETRIEV JOB ATTRIBUT) abgerufen
werden, wenn man diese mit der eingebauten %SWITCH-Funktion
abfragen will.
- DCL VAR(&MBRNAME) TYPE(*CHAR)
LEN(8) VALUE(UM)
DCL VAR(&DATUM) TYPE(*CHAR) LEN(6) VALUE(TTMMJJ)
CHGVAR VAR(&MBRNAME) VALUE(&MBRNAME *TCAT &DATUM)
CHGVAR
VAR(&MBRNAME) VALUE(UM *CAT &DATUM)
Beide
aufgeführten Anweisungen zur Änderung von Variablenwerten haben den Teildateinamen
(Variable &MBRNAME) ’UMTTMMJJ’ zum Ergebnis!
7.)
Datenbereiche:
- Für
die Erstellung eines 10-stelligen Datenbereichs, der den Namen der Datenbankteildatei
mit den Umsätzen des letzten Monats aufnehmen soll, ist die folgende Anweisung
notwendig:
CRTDTAARA DTAARA(ATSGCL1/LETZTMON) TYPE(*CHAR) LEN(10)
- Man
kann den Inhalt von Datenbereichen nur mit dem Befehl CHGDTAARA ändern.
- Bei
„&AUFTRAGNR“ handelt es sich um einen ungültigen Namen für einen Datenbereich
- Der
Befehl CHGDTAARA (CHANGE DATA AREA) enthält Parameter für die Angabe von Unterfolgen,
die die teilweise Änderung eines Datenbereiches erlauben.
8.)
Behandlung
von Ausnahmebedingungen:
- Eine
überwachte Nachricht wird ignoriert, wenn für den EXEC-Parameter nichts angegeben
wurde.
- Eine
Anweisung für die Überwachung von Nachrichten auf Programmebene wird
nach der PGM-Anweisung und den DCL-Anweisungen codiert.
- Eine
Anweisung zur Überwachung einer Nachricht auf Befehlsebene überwacht
nur Nachrichten, die von der unmittelbar vorhergehenden Anweisung erzeugt
werden.
- Durch
die Benutzung einer generischen Nachrichtenidentifikation kann ein ganzer
Bereich von Nachrichten überwacht werden.
- Der
Befehl CHKOBJ (CKECK OBJEKT) wird für die Prüfung der Existenz eines Objekts
und wahlweise für die Prüfung der Berechtigung für dieses Objekt verwendet.
- Der
Befehl DCLOBJ (DEALLOCATE OBJECT) sollte nur für die Freigabe eines vorher
explizit zugeordneten Objekts benutzt werden.
9.)
Benutzung
von Datenbankdateien in CL-Programmen:
- Der
CL-Compiler definiert Variablen, die den Feldern einer in einem Programm festgelegten
Datenbankdatei entsprechen.
- Die
beiden grundsätzlichen Arten von AS/400-Datenbakdateien sind physische und
logische Dateien.
- Die
Entwicklung von extern beschriebenen Datenbankdateien ist mit der Entwicklung
von CL-Programmen vergleichbar.
- Bei
der Erstellung einer Datenbank wird automatisch auch eine Beschreibung für
diese Datei erzeugt.
- Die
Abbruchnachricht „CPF0864“ wird erzeugt, wenn in einer RCVF-Anweisung
(RECEIVE FILE)
die Dateiende-Bedingung erreicht wird.
- Eine
Datenbankdatei muss bereits vor der Umwandlung eines CL-Programms, das eine
DCLF-Anweisung (DECLARE FILE) für diese Anwendung verarbeitet, auf dem System
existieren.
10.)
Erstellen eines Dialogprogramms:
- Ein
Dialogprogramm sendet ein Bildschirmformat an eine Datenstation und empfängt
die Eingabe des Benutzers.
- Wesentliche
Funktionen von SDA sind der Entwurf und die Erstellung von Bildschirmeinheitendateien.
- Mit
dem Befehl SNDRCVF (SEND/REVEIVE FILE) wird ein sog. Bildschirmsatz an eine
Datenstation gesendet und auf den Empfang der Eingabe des Benutzers gewartet.
- Mit
der Taste F14 kann man sich die Positionierungshilfe für den Bildschirmentwurf
anzeigen lassen.
- In
einer Bildschirmdatei können Literale definiert werden und variablen für die
Eingabe, Ausgabe oder eine Kombination beider Arten.
- Wenn
eine Bildschirmdatei erstellt wird, wird gleichzeitig eine externe Beschreibung
der Datei und Ihrer Felder erstellt.
11.)
Testen eines CL-Programms:
- Programmvariablen
können im Testhilfemodus angezeigt oder geändert werden.
- Der
Befehl ADDTRC (ADD TRACE) kann nur im Testhilfemodus ausgeführt werden.
- Ablaufverfolgungsdaten
umfassen die Werte der in dem Befehl ADDTRC aufgeführten Variablen von jeder
Anweisung, in der auf diese Variablen Bezug genommen wird oder diese geändert
werden.
- Teststopps
können einem Programm im Testhilfemodus hinzugefügt werden.
- Ein
Teststopp führt zum Anhalten der Programmausführung vor der Anweisung, die
in dem Befehl ADDBKP (ADD BREAKPOINT) angegeben wurde.
- Werden
CL-Variablen als Programmvariablen in den Befehlen ADDBKP und ADDTRC angegeben,
müssen deren Namen mit einem “&“ beginnen und in Apostrophe eingeschlossen
sein.
12.)
Übergabe der Steuerung an andere
Programme:
- Ein
Programm, das einen CALL-Befehl absetzt, wird “aufrufendes“ Programm genannt.
- Parameter
können an das aufgerufene Programm übergeben werden, das deren Werte modifizieren
kann, bevor diese wieder an das aufrufende Programm zurückgegeben werden.
- Der
wichtigste Punkt bei der Übergabe von Parametern zwischen Programmen ist die
Reihenfolge, in der diese übergeben werden.
- Parameter,
die sich aufeinander beziehen, müssen dieselben Attribute aufweisen.
- Mit
dem Befehl RCLRSC (RECALL RESSOURCE) kann statischer Hauptspeicher freigegeben
werden, und es können Dateien, die noch nicht geschlossen und nicht mehr aktiv
sind (z.B. bei einem normalen Programmende), wieder geschlossen werden.