Hinweise zur Kompatibilität für iSeriesC

Es gibt einige Plattformprobleme, die beim Vorbereiten von Programmen, die in einer iSeries-Umgebung ausgeführt werden sollen, berücksichtigt werden müssen.

Fehlerbehandlung bei Aufrufanweisungen

Die Fehlerbehandlung für CALL-Anweisungen variiert abhängig von der in einem Programm für die Ausnahmebedingungsbehandlung verwendete Methode. Wenn im Programm die Eigenschaft 'v60ExceptionCompatibility' auf YES festgelegt wird, können Sie die von einem aufgerufenen Programm gesendete Abbruchnachricht empfangen, wenn die CALL-Anweisung in einem TRY-Block enthalten ist. Die Abbruchnachrichten-ID wird in der Systemvariablen 'sysVar.errorCode' abgelegt. Die Abbruchnachrichten-ID besteht aus 7 alphanumerischen Zeichen:
aaannnn 
aaa
In der Regel ein Nachrichten-ID-Präfix aus alphabetischen Zeichen
nnnn
Hexadezimalziffern im Bereich von 0 bis 9 und A bis F

Bei Aufrufen von Serverprogrammen werden dieselben Werte für 'sysVar.errorCode' wie bei anderen Serverprogrammplattformen zurückgegeben.

Wenn im Programm die Eigenschaft 'v60ExceptionCompatibility' auf NO festgelegt und ein aufgerufenes Programm aufgrund einer Ausnahme beendet wird, die nicht in einem TRY-Block abgefangen wird, wird der Fehler zum aufrufenden Programm weitergegeben. Wenn kein TRY-Block um die CALL-Anweisung herum codiert wurde und ein ONEXCEPTION-Block der ausgegebenen Ausnahme entspricht, wird die Steuerung an diesen ONEXCEPTION-Block weitergegeben. Zum EGL-Ausnahmedatensatz sind keine zusätzlichen Informationen verfügbar. Im Folgenden sind jedoch häufige Gründe für die Ausnahme aufgelistet:
  • Programm nicht gefunden
  • Nicht ausreichende Sicherheit
  • Zu wenig Hauptspeicher

Datensätze variabler Länge

In EGL werden keine Datensätze variabler Länge für iSeries unterstützt.

DBCS-Datenart

In EGL wird der primitive Datentyp DBCHAR unterstützt. Für den primitiven Datentyp MBCHAR ist eine Programm-Programmierer-Verwaltung durch Shift-out- und Shift-in-DBCS-Datenbegrenzer erforderlich, wenn die Werte von MBCHAR-Datenelementen festgelegt oder referenziert werden.

Nachrichtentabellen

EGL-Nachrichtentabellen werden als iSeries-Nachrichtendateien implementiert. Geben Sie in einer beliebigen iSeries-Systembefehlszeile GO CMDMSGF ein, um ein Menü mit Nachrichtendateibefehlen anzuzeigen.

Als Ergebnis der Nachrichtentabelle für die Nachrichtendateikonvertierung können in für iSeriesC generierte EGL-Programme keine Nachrichtentabellen mithilfe von EGL-Anweisungen und Ausdrücken referenziert werden, die auf DataTables betrieben werden. Diese Anweisungen und Ausdrücke umfassen die Anweisung MOVE, bedingte Ausdrücke mit dem Operator IN und die Quelle und das Ziel einer Zuordnungsanweisung.

Ein-/Ausgabe bei seriellen Dateien

Serielle Dateien in in EGL generierten Programmen werden für Schreibzugriff in einer von zwei Methoden geöffnet (OUTPUT oder EXTEND). Diese beeinflussen die Vernichtung der vorhandenen Datei. OUTPUT und EXTEND sind OPEN-Verbphrasen in COBOL. Die in der OPEN-Anweisung produzierte Phrase für eine bestimmte Datei hängt vom Wert des Dateityps der EGL-Ressourcenzuordnung zur Generierungszeit ab.

In EGL werden zwei Werte für Dateitypen unterstützt: 'vsam' und 'seq'. Bei seriellen Dateien können Sie entweder den Dateityp 'vsam' oder 'seq' verwenden. Beim Dateityp 'vsam' wird der EXTEND-Ausdruck produziert. Mit dem Ausdruck EXTEND werden angehängte Datensätze ans Ende der vorhandenen Datei geschrieben. Beim Dateityp 'seq' wird der Ausdruck OUTPUT produziert. Mit dem Ausdruck OUTPUT wird die Datei geleert und an der ersten Position des Datensatzes mit dem Schreiben begonnen.

Bei iSeries und COBOL wird versucht, im Konflikt stehende offene Methoden zu verwalten, wenn eine Datei bereits im Job geöffnet ist. Dabei wird ihr Status SHARE berücksichtigt. Weitere Informationen zu seriellen Dateien finden Sie im i5/OS Information Center und in den COBOL-Laufzeitnachrichten.


Feedback