Allgemeines
Anwendungsgebiet: | Ein-/Ausgabe von Dateien und Sätzen; siehe "Ein-/Ausgabe" Abfragen und Zugriff zu Tabellen und Listen; siehe "Abfragen und Zugriff zu Listen und Tabellen" |
Makrotyp: | S-Typ, MF-Format 3: D-/C-/S-/E-/L-Form; siehe "S-Typ-Makroaufrufe" |
Makrobeschreibung
Mit dem Makro GCCSN kann sich der Anwender den Namen des aktuell gültigen Zeichensatzes (Coded Character Set Name, Name der Codiertabelle) für die Ein-/Ausgabe von Kommandos oder Daten anzeigen lassen.
Der Name des aktuell gültigen Zeichensatzes (Codiertabelle) ist abhängig von der Eingabequelle oder dem Ausgabeziel:
SYSDTA/SYSCMD/SYSOUT ist einer Datensichtstation zugewiesen:Der Codiertabellen-Name wird von VTSU bestimmt. Der Makro GCCSN erhält den Namen (intern) aus dem Feld ACTCH des Datenbereichs vom TSTAT-Makro.
SYSDTA/SYSCMD/SYSOUT/SYSLST ist einer S-Variablen zugeordnet:Dialogbetrieb: Entspricht der Zuweisung zu einer Datensichtstation.
Batch-Betrieb: Es wird der Codiertabellen-Name „EDF03IRV“ angezeigt.SYSDTA/SYSCMD/SYSOUT/SYSLST ist einem Element einer PLAM-Bibliothek zugeordnet:
Es wird der Codiertabellen-Name des Bibliothekselements angezeigt.
Wenn dem Bibliothekselement keine Codiertabelle zugeordnet ist, dann wird der Co-diertabellen-Name „EDF03IRV“ angezeigt.SYSCMD ist einer Datei zugewiesen:
Es wird der im Katalogeintrag der Datei stehende Codiertabellen-Name angezeigt. Als Dateien gelten katalogisierte Dateien, S-Prozeduren und Nicht-S-Prozeduren.SYSDTA/SYSOUT/SYSLST ist einer Datei zugewiesen:
Es wird der im Katalogeintrag der Datei stehende Codiertabellen-Name angezeigt. Als Dateien gelten katalogisierte Dateien, S-Prozeduren und Nicht-S-Prozeduren (bei SYSDTA=(SYSCMD)).
Der Name der Codiertabelle für SYSOUT/SYSLST kann mit den Kommandos/ASSIGN-SYSOUT/SYSLST CODED-CHARACTER-SET=
zugeordnet werden.
Wenn keine Codiertabelle zugeordnet ist, dann wird der Standard-Name des Benutzer-Katalogeintrags angezeigt.
Nach der Initialisierung des Datenbereichs (MF=L) wird der Funktionsaufruf (MF=E) abgesetzt. Wird der Aufruf ohne Fehler ausgeführt, steht im Feld <PREFIX><MACID>CCSN
des Datenbereichs der Codiertabellen-Name der abgefragten Systemdatei.
Makroaufrufformat und Operandenbeschreibung
GCCSN |
STREAM=SYSDTA / SYSCMD / SYSOUT / SYSLST ,MF=D / C / S / E / L [,PARAM=adr / (r)] ,PREFIX=C / p ,MACID=CSN / macid |
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. PREFIX, MACID und PARAM) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Bei der C-Form oder D-Form des Makroaufrufs kann ein Präfix PREFIX und bei der C-Form zusätzlich eine Macid MACID angegeben werden (siehe Abschnitt „S-Typ-Makroaufrufe“).
Es ist außerdem möglich, diesen Makro mit MF=S aufzurufen.
STREAM=
bestimmt die Systemdatei, deren Codiertabellen-Name ausgegeben werden soll.
SYSDTA
Der Name der Codiertabelle von SYSDTA soll angezeigt werden.
SYSCMD
der Name der Codiertabelle von SYSCMD soll angezeigt werden.
SYSOUT
der Name der Codiertabelle von SYSOUT soll angezeigt werden.
SYSLST
der Name der Codiertabelle von SYSLST soll angezeigt werden.
Hinweise
Ist SYSDTA einer Datensichtstation zugeordnet, kann der Anwender den Codiertabel-len-Namen in einem Programm (im VTSU-Control-Block des RDATA-Makros) dynamisch ändern.
Dabei ist die Änderung nur während dieser RDATA-Ein-/Ausgabe gültig und hat keinen Einfluss auf die Ausgabe des GCCSN-Makros, der in diesem Fall immer den im Benutzerkatalog des Anwenders voreingestellten Codiertabellen-Namen anzeigt.
Ist SYSCMD einer Datensichtstation zugeordnet, kann der privilegierte Anwender den Codiertabellen-Namen dynamisch ändern (im VTSU-Control-Block des WRTRD-Makros).
Dabei ist die Änderung nur während dieser WRTRD-Ein-/Ausgabe gültig und hat keinen Einfluss auf die Ausgabe des GCCSN-Makros, der in diesem Fall immer den im Benutzerkatalog des Anwenders voreingestellten Codiertabellen-Namen anzeigt.Ist SYSDTA/SYSCMD/SYSOUT/SYSLST einer Datei oder einem Bibliothekselement zugeordnet, ändert sich der Codiertabellen-Name zwischen dem Öffnen (OPEN) und Schließen (CLOSE) der Datei bzw. des Bibliothekselements nicht.
Bei der Unterbrechung von Prozeduren mit K2 ist der aktuelle SYSDTA-Codiertabellen-Name nicht der der Datensichtstation, sondern der der soeben unterbrochenen Prozedur.
Wird während der Abarbeitung einer Prozedur ein Prozedurparameter an der Datensichtstation durch Prompting angefordert, ist für den festen (anfordernden) Bestandteil der Kommando-/Anweisungszeile der für diese Prozedur aktuelle Codiertabellen-Name gültig. Für den eingegebenen Operandenwert ist der Codiertabellen-Name der Datensichtstation gültig.
Beispiel
1. Ebene: Datensichtstation 2. Ebene: Prozedur HALLO : (IN) /CALL-PROC HALLO ----> /BEGIN-PROC A,PROC-PAR=(&PARAM),/ ESC-CHAR='&' /ASS-SYSDTA *SYSCMD /START-PROG $EDT <----------------------------- @READ'&PARAM (OUT) &PARAM= (IN) TEST.1 -----------------------------> @READ'TEST.1 :
Die Zeichenfolge
@READ'
wird mit dem Codiertabellen-Namen der Prozedur HALLO gelesen, die ZeichenfolgeTEST.1
mit dem der Datensichtstation.Mit dem Makroaufruf RDATA ..,A kann sich der Anwender über jede Änderung der SYSDTA-Zuweisung informieren.
Layout der CSECT
GCCSN MF=C 1 #INTF REFTYPE=REQUEST,INTNAME=GCCSN,INTCOMP=002 1 MFCHK MF=C,SUPPORT=(C,D,S,L,E),PREFIX=C, C 1 MACID=CSN,DMACID=CSN, C 1 PARAM=,ALIGN=F,SVC=39 2 DS 0F 2 *,##### PREFIX=C, MACID=CSN ##### 1 CCSNCS FHDR MF=(C,CCSN) 2 CCSNCS DS 0A 2 CCSNFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER 2 * 2 CCSNIFID DS 0A 0 INTERFACE IDENTIFIER 2 CCSNFCTU DS AL2 0 FUNCTION UNIT NUMBER 2 * BIT 15 HEADER FLAG BIT, 2 * MUST BE RESET UNTIL FURTHER NOTICE 2 * BIT 14-12 UNUSED, MUST BE RESET 2 * BIT 11-0 REAL FUNCTION UNIT NUMBER 2 CCSNFCT DS AL1 2 FUNCTION NUMBER 2 CCSNFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER 2 * 2 CCSNRET DS 0A 4 GENERAL RETURN CODE 2 * 2 * GENERAL_RETURN_CODE CLEARED (X'00000000') MEANS 2 * REQUEST SUCCESSFUL PROCESSED AND NO ADDITIONAL INFORMATION 2 * 2 CCSNSRET DS 0AL2 4 SUB RETURN CODE 2 CCSNSR2 DS AL1 4 SUB RETURN CODE 2 2 * ALWAYS CLEARED (X'00') IF MAIN_RETURN_CODE IS X'FFFF' 2 * Standard subcode2 values as defined by convention: 2 CCSNR2OK EQU X'00' All correct, no additional info 2 CCSNR2NA EQU X'01' Successful, no action was necessary 2 CCSNR2WA EQU X'02' Warning, particular situation 2 CCSNSR1 DS AL1 5 SUB RETURN CODE 1 2 * 2 * GENERAL INDICATION OF ERROR CLASSES 2 * 2 * CLASS A X'00' FUNCTION WAS SUCCESSFULLY PROCESSED 2 * CLASS B X'01' - X'1F' PARAMETER SYNTAX ERROR 2 * CLASS C X'20' INTERNAL ERROR IN CALLED FUNCTION 2 * CLASS D X'40' - X'7F' NO CLASS SPECIFIC REACTION POSSIBLE 2 * CLASS E X'80' - X'82' WAIT AND RETRY 2 * 2 CCSNRFSP EQU X'00' FUNCTION SUCCESSFULLY PROCESSED 2 CCSNRPER EQU X'01' PARAMETER SYNTAX ERROR 2 * 3 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'01' - X'1F' 2 CCSNRFNS EQU X'01' CALLED FUNCTION NOT SUPPORTED
2 CCSNRFNA EQU X'02' CALLED FUNCTION NOT AVAILABLE 2 CCSNRVNA EQU X'03' INTERFACE VERSION NOT SUPPORTED 2 * 2 CCSNRAER EQU X'04' ALIGNMENT ERROR 2 CCSNRIER EQU X'20' INTERNAL ERROR 2 CCSNRCAR EQU X'40' CORRECT AND RETRY 2 * 2 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'40' - X'7F' 2 CCSNRECR EQU X'41' SUBSYSTEM (SS) MUST BE CREATED 2 * EXPLICITELY BY CREATE-SS 2 CCSNRECN EQU X'42' SS MUST BE EXPLICITELY CONNECTED 2 * 2 CCSNRWAR EQU X'80' WAIT FOR A SHORT TIME AND RETRY 2 CCSNRWLR EQU X'81' " LONG " 2 CCSNRWUR EQU X'82' WAIT TIME IS UNCALCULABLY LONG 2 * BUT RETRY IS POSSIBLE 2 * 2 GLOBALLY DEFINED ISL ERROR CODES IN CLASS X'80' - X'82' 2 CCSNRTNA EQU X'81' SS TEMPORARILY NOT AVAILABLE 2 CCSNRDH EQU X'82' SS IN DELETE / HOLD 2 * 2 CCSNMRET DS 0AL2 6 MAIN RETURN CODE 2 CCSNMR2 DS AL1 6 MAIN RETURN CODE 2 2 CCSNMR1 DS AL1 7 MAIN RETURN CODE 1 2 * 2 * SPECIAL LAYOUT OF LINKAGE_MAIN_RETURN_CODE (YYYY IN X'00XXYYYY') 2 * 2 CCSNRLNK EQU X'FFFF' LINKAGE ERROR / REQ. NOT PROCESSED 2 CCSNFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH 2 * 1 CCSNFLAG DS X STREAM IDENTIFIER 1 CCSNDTA EQU X'01' SYSDTA 1 CCSNCMD EQU X'02' SYSCMD 1 CCSNOUT EQU X'03' SYSOUT 1 CCSNLST EQU X'04' SYSLST 1 CCSNRES1 DS CL3 RESERVED 1 CCSNRES2 DS A RESERVED 1 CCSNRES3 DS A RESERVED 1 CCSNCCSN DS CL8 CODED CHARACTER SET NAME 1 CCSNPAR EQU X'01' SC1 RC : PARAMETER ERROR 1 CCSNERR EQU X'20' SC1 RC : INTERNAL ERROR 1 CCSN# EQU *-CCSNCS PARAMETER LIST LENGTH 1 SPACE 2
Rückinformation und Fehleranzeigen
Während der Makrobearbeitung erhält Register R1 die Adresse des Datenbereichs.
Im Feld <PREFIX><MACID>CCSN
des Datenbereichs wird der Name der Codiertabelle übergeben.
Standardheader:
+---------------+ | | | | | |0|0|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros GCCSN wird ein gegliederter Returncode übergeben (bb=Subcode1, aaaa=Maincode):
X'bb' | X'aaaa' | Erläuterung |
X'00' | X'0000' | Normale Ausführung. |
X'01' | X'0008' | Operandenfehler. |
X'20' | X'0004' | Interner Fehler. |
Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.