Allgemeines
Anwendungsgebiet: | Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen" |
Makrotyp: | S-Typ, MF-Format 3: D-/C-/E-/L-Form; siehe "S-Typ-Makroaufrufe" |
Systemparameter legen bestimmte Optionen des individuellen Betriebssytems fest.
Systemparameter werden in die Startup-Parameterdatei eingetragen bzw. es werden die dafür vorgesehenen Standardwerte verwendet. Während des Systemlaufs können Systemparameter individuell verändert werden. Diese Änderungen müssen zusätzlich in die Startup-Parameterdatei eingetragen werden, wenn sie bei einem neuen Systemstart weiter gelten sollen.
Makrobeschreibung
Der Makro NSIOPT informiert über nicht-privilegierte Systemparameter. Wenn der Aufrufer das Privileg TSOS besitzt, dann werden auch die privilegierten Systemparameter ausgegeben.
Alle Systemparameter sind beim Kommando SHOW-SYSTEM-PARAMETERS im Handbuch „Kommandos“ [19] beschrieben.
Pro Makroaufruf kann nur ein Systemparameter abgefragt werden. Die Auswahl erfolgt durch den Operanden INFO. Die gewünschte Information wird in ein Ausgabefeld übertragen, das durch die Operanden FIELD und LENG bestimmt wird. Dabei ist der Datentyp abhängig vom jeweiligen Systemparameter.
Makroaufrufformat und Operandenbeschreibung
NSIOPT |
[INFO='info',FIELD=adr,LENG=länge] ,MF=D / C / E / L [,PARAM=adr / (r)] ,PREFIX=N / p ,MACID=SIO / macid |
INFO=
bezeichnet die Information, die ausgegeben werden soll.
'info'
info = Kurzbezeichnung des Systemparameters. Die Zeichenkette info muss genau
8 Byte enthalten. Ist der Name des gewünschten Systemparameters kleiner als 8 Byte, müssen die übrigen Stellen mit Leerzeichen aufgefüllt werden.
FIELD=
bezeichnet die Adresse des Feldes, in das die Information ausgegeben wird. Die Feldlänge wird durch den Operanden LENG bestimmt. Die Information wird linksbündig eingetragen.
adr
symbolische Adresse des Feldes
LENG=
beschreibt die Länge des Eintrags in das bei FIELD angegebene Feld. Die Länge ist dem Handbuch „Systembetreuung“ [10] zu entnehmen. Bei falscher Längenangabe erfolgt kein Eintrag.
länge
Länge in Byte, entsprechend der Liste; Angabe als Dezimalzahl
Für Systemparameter des Typs C erfolgt die Ausgabe auch in ein zu kleines Ausgabefeld, wenn vom Inhalt des Systemparameters nur Leerzeichen abgeschnitten werden.
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.
Rückinformation und Fehleranzeigen
Standardheader:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros NSIOPT wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'00' | X'0000' | Funktion erfolgreich ausgeführt. |
X'01' | X'01' | X'0001' | Keine Aktion: Ungültiger Wert für den Operanden INFO. |
X'02' | X'01' | X'0001' | Keine Aktion: Ungültiger Wert für den Operanden FIELD oder für die |
X'03' | X'01' | X'0001' | Keine Aktion: Ungültiger Wert für den Operanden LENG, |
X'04' | X'01' | X'0001' | Keine Aktion: Der Operand LENG stimmt nicht mit der Länge des |
X'05' | X'01' | X'0001' | Keine Aktion: Informationen über den angeforderten Systemparameter |
Weitere Returncodes, deren Bedeutung durch Konvention makroübergreifend festgelegt ist, können der Tabelle „Standard-Returncodes“ (Standardheader) entnommen werden.
Beispiel
NSIOPT START NSIOPT AMODE ANY GPARMOD 31 BALR 3,0 USING *,3 * NSIOPLST NSIOPT MF=D ---------------------------------------------------(1) 1 * NSIOPT, VERSION=101, DATE=900911 101 1 NSIOPLST MFCHK MF=D, 101C 1 PREFIX=N, 101C 1 MACID=SIO, 101C 1 DMACID=SIO, 102C 1 DNAME=SIOPL, 101C 1 SUPPORT=(D,C,L,E), 101C 1 PARAM=, 101C 1 SVC=135 101 2 NSIOPLST DSECT , 2 *,##### PREFIX=N, MACID=SIO ##### 1 * 101 1 #INTF INTNAME=NSIOPT,REFTYPE=REQUEST, 101C 1 INTCOMP=1 101 1 * 101 1 NSIORCNE EQU 0 NO ERROR 101 1 NSIORCII EQU 1 INFO INVALID 101 1 NSIORCFI EQU 2 FIELD INVALID 101 1 NSIORCLI EQU 3 LENG INVALID 101 1 NSIORCLS EQU 4 LENG TOO SHORT 101 1 * 101 1 NSIS0002 EQU * 101 1 NSIOFHDR FHDR MF=(C,NSIO),EQUATES=NO 101 2 NSIOFHDR DS 0A 2 NSIOFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER 2 * 2 NSIOIFID DS 0A 0 INTERFACE IDENTIFIER 2 NSIOFCTU 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 NSIOFCT DS AL1 2 FUNCTION NUMBER 2 NSIOFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER 2 * 2 NSIORET DS 0A 4 GENERAL RETURN CODE 2 NSIOSRET DS 0AL2 4 SUB RETURN CODE 2 NSIOSR2 DS AL1 4 SUB RETURN CODE 2 2 NSIOSR1 DS AL1 5 SUB RETURN CODE 1
2 NSIOMRET DS 0AL2 6 MAIN RETURN CODE 2 NSIOMR2 DS AL1 6 MAIN RETURN CODE 2 2 NSIOMR1 DS AL1 7 MAIN RETURN CODE 1 2 NSIOFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH 2 * 1 NSIOINFO DS CL8 INFO 101 1 NSIOFILD DS A POINTER 101 1 NSIOLENG DS H LENGTH 101 1 NSIE0002 EQU * 101 1 NSIO# EQU (NSIE0002-NSIS0002) 101 PRINT NOGEN NSIOPT CSECT LA 4,NSILST USING NSIOPLST,4 BAL 7,OUTPUT Call output routine ----------> -(2) MVC NSIOINFO,=C'SSMLGOF1' -----------------------------------(3) MVC NSIOLENG,=H'9' BAL 7,OUTPUT Call output routine ----------> MVC NSIOINFO,=C'ENCRYPT ' -----------------------------------(4) MVC NSIOLENG,=H'1' BAL 7,OUTPUT Call output routine ----------> END TERM * * Output routine * OUTPUT NSIOPT MF=E,PARAM=NSILST --------------------------------------(5) MVC PARNAME,NSIOINFO WROUT MESSAGE,END,PARMOD=31 2 *,@DCEO 999 921011 53531004 MVI OPTTXT,C' ' Clear OPTSTXT for next output MVC OPTTXT+1(L'OPTTXT-1),OPTTXT BR 7 Return -> * **** Definitions **** DS 0H NSILST NSIOPT MF=L,INFO='BLKCTRL ',FIELD=OPTTXT,LENG=6 ---------------(6) MESSAGE DC Y(ENDMESS-MESSAGE) Record length DS CL2 Reserved DC X'01' Print feed control character PARNAME DC CL8' ' Field indicator DC C' = ' OPTTXT DC CL10' ' Contents ENDMESS EQU * END =C'SSMLGOF1' =C'ENCRYPT '
Ablaufprotokoll
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,nsiopt), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,nsiopt)) % ASS6011 ASSEMBLY TIME: 366 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 92 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=nsiopt % BLS0523 ELEMENT 'NSIOPT', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'NSIOPT', VERSION ' ' OF '<date> <time>' LOADED BLKCTRL = PAMKEY -------------------------------------------------------(7) SSMLGOF1 = REQ-SPOOL ENCRYPT = Y
(1) | Generierung der DSECT zur Adressierung der auszugebenden Informationen. |
(2) | Erster Aufruf der Ausgaberoutine (5). |
(3) | Modifikation des Datenbereichs von NSIOPT für den zweiten Aufruf: Der Systemparameter SSMLGOF1 soll in der Länge 9 ausgegeben werden. Anschließend wird die Ausgaberoute (5) zum zweiten Mal aufgerufen. |
(4) | Modifikation des Datenbereichs von NSIOPT für den dritten Aufruf: Der Systemparameter ENCRYPT soll in der Länge 1 ausgegeben werden. Anschließend wird die Ausgaberoute (5) zum dritten Mal aufgerufen. |
(5) | Ausgaberoutine. In ihr wird zunächst mit dem Makro NSIOPT der Wert eines Systemparameters ermittelt. Danach wird der ermittelte Wert mit WROUT auf SYSOUT ausgegeben. Die Ausgaberoutine wird in diesem Beispiel drei Mal aufgerufen. |
(6) | Aufruf des Makros NSIOPT mit MF=L zur Initialisierung des Datenbereichs. Das Dateiattribut BLKCTRL soll ausgegeben werden. Die Länge der auszugebenden Information beträgt 6 Byte. |
(7) | Ausgabe der ermittelten Systemparameter:
|
Der Systemparameter SSMLGOF1 zeigt den Wert „REQ-SPOOL“ an, d.h. Spoolout-Aufträge werden immer angenommen.
Der Systemparameter ENCRYPT zeigt den Wert „Y“ an. Kennwörter werden verschlüsselt in den Dateikatalog eingetragen.