Startseite
Downloads
Lexikon
Sonstiges
Links
Kontakt
Gästebuch
Statistics
Disclaimer
Syntax
..................               
ag. = ''      /* must be first */
ag._parm_1 = ...                 
ag._parm_2 = ...                 
..................               
ag._parm_n = ...                 
ag._seg_1._parm_1 = ...          
ag._seg_1._parm_2 = ...          
..................               
ag._seg_m._parm_n = ...          
..................               
ret = AddgroupTpl()              
rc = Addgroup()                  
Beschreibung
Anlegen einer neuen RACF-Gruppe, Zuordnen Profil-Berechtigungen und/oder Profil-Segmenten für diverse Subsysteme unter RACF
Aufrufparameter
keine
Standardwerte
keine
Rückgabewerte
RC
Bedeutung
0
RACF-Gruppe erfolgreich im RACF definiert.
4
Ein Fehler oder ein Berechtigungsproblem wurde entdeckt aber Teile der Verarbeitung wurden durchgeführt.
8
Ein Fehler oder ein Berechtigungsproblem wurde entdeckt und Verarbeitung wurde abgebrochen.
12
Ein Systemfehler wurde entdeckt und Verarbeitung wurde abgebrochen.
Bemerkungen
Die hier beschriebene Version des RACF-Befehls ADDGROUP ist die Implementierung meiner REXX-Schnittstelle für RACF-Befehle: REXX Command Interface Facility, kurz RXCIF genannt.
Return Codes sind vom RACF-Befehl ADDGROUP übernommen worden.
RXCIF für ADDGROUP besteht aus 4 internen Funktionen:
  • SetOp - Erstellen des Aufruf-Parameters auf Grund von Zuweisungen für eine befehlsabhängige Punktvariable (hier ag.) und der Befehlsschablone.
  • AddgroupPrepare - eine optionale Beschreibungsfunktion. Sie kann die Vorbereitung und die Zuordnung der Stem-Variablen ag. beinhalten.
  • AddgroupTpl - Schablone für die Festlegung der Syntax für die Zuordnungsparameter des RACF-Befehls.
  • Addgroup - Zusammenlegung der Aufrufparametern und Ausführung des Befehls.
Die interne Prozedur SetOp muss in einem REXX-Programm nur einmal vorkommen auch, wenn mehrere unterschiedliche Befehlsprozeduren verwendet werden.
Die Vorbereitung der Stem-Variablen ag. muss immer vor dem Aufruf der Hauptfunktion Addgroup stattfinden. Und zwar immer dann, wenn sich die Aufrufparameter seit dem vorherigen Aufbau geändert haben.
Die Musterprozedur für die Zuordnungsparameter (AddgroupTpl) muss mindestens ein mal pro REXX-Prozedur aber immer nach der eventuellen Änderung aufgerufen werden.
Die Ausgabe der Beispielprozeduren wurde aus Übersichtlichkeitsgründen in die Zeilen geteilt und mit Fortfürungszeichen (+) versorgt.

Sourcecode

/*=============( Zuordnung der Operanden für den Befehl )=============*/
SetOp: Procedure
Parse Arg vpref 3 vsuff 1 value, tpl . 1 tpref "(" .

If value = '' Then Return ''
If vpref = "NO" & vsuff = tpref ! value = tpref Then Return value

Return Insert( value, tpl, Pos( "(", tpl ))
/**** End SetOp ****/
/*==========( Prepare operands for RACF-TSO-Befehl ADDGROUP )=========*/
AddgroupPrepare: Procedure Expose ag.
/*------( Prepare Base data values of the RACF command ADDGROUP )-----*/
ag._prefix                       /* Subsystem-prefix                  */
ag._cmdName = "ADDGROUP"         /* Command name: ADDGROUP | AG       */
ag._grpList = ""                 /* Group list in paranthasis         */
ag._at = ""                      /* [node].userid ...                 */
ag._onlyAt = ""                  /* [node].userid ...                 */
ag._csdata = ""                  /* cust-field-name(cust-field-value) */
ag._data = ""                    /* 'installation-defined-data'       */
ag._model = ""                   /* dsname                            */
ag._owner = ""                   /* userid or group-name              */
ag._supGroup = ""                /* superior group name               */
ag._termuacc = ""                /* TERMUACC | NOTERMUACC             */
ag._universal = ""               /* UNIVERSAL                         */
/*-----( Prepare DFP segment values of the RACF command ADDGROUP )----*/
ag._dfp = ""                                                          
ag._dfp._dataAppl = ""           /* application-name                  */
ag._dfp._dataClas = ""           /* data-class-name                   */
ag._dfp._mgmtClas = ""           /* management-class-name             */
ag._dfp._storClas = ""           /* storage-class-name                */
/*----( Prepare OMVS segment values of the RACF command ADDGROUP )----*/
ag._omvs = ""                          
ag._omvs._autogid = ""           /* AUTOGID                           */
ag._omvs._gid = ""               /* group-identifier                  */
ag._omvs._gidShared = ""         /* SHARED                            */
/*-----( Prepare OVM segment values of the RACF command ADDGROUP )----*/
ag._ovm = ""                           
ag._ovm._gid = ""                /* group-identifier                  */
/*-----( Prepare TME segment values of the RACF command ADDGROUP )----*/
ag._tme = ""                           
ag._tme._roles = ""              /* profile-name list                 */

Return ag._grpList
/**** End AddgroupPrepare ****/
/*========( Muster für Zuordnungsparameter von TSO ADDGROUP )=========*/
AddgroupTpl: Procedure Expose ag.

ag._tpl. = ''
/*-----( Define Base Data template of the RACF command ADDGROUP )-----*/
ag._tpl._grpList       = "()"                
ag._tpl._at            = "AT()"                   
ag._tpl._onlyAt        = "ONLYAT()"           
ag._tpl._data          = "CSDATA()" 
ag._tpl._data          = "DATA()" 
ag._tpl._model         = "MODEL()"
ag._tpl._owner         = "OWNER()"
ag._tpl._supGroup      = "SUPGROUP()"
/*----( Define DFP segment template of the RACF command ADDGROUP )----*/
ag._tpl._dfp           = "DFP()"
ag._tpl._dfp._dataAppl = "DATAAPPL()"
ag._tpl._dfp._dataClas = "DATACLAS()"
ag._tpl._dfp._mgmtClas = "MGMTCLAS()"
ag._tpl._dfp._storClas = "STORCLAS()"
/*----( Define OMVS segment template of the RACF command ADDGROUP )---*/
ag._tpl._omvs          = "OMVS()"
ag._tpl._omvs._gid     = "GID()"
/*----( Define OVM segment template of the RACF command ADDGROUP )----*/
ag._tpl._ovm           = "OVM()"
ag._tpl._ovm._gid      = "GID()"
/*----( Define TME segment template of the RACF command ADDGROUP )----*/
ag._tpl._tme           = "TME()"
ag._tpl._tme._roles    = "ROLES()"

Return ''
/**** End AddgroupTpl ****/
/*===========( Command to create the TSO command ADDGROUP )===========*/
Addgroup: Procedure Expose ag.

/*------( Create DFP segment part of the RACF command ADDGROUP )------*/
dfp  = SetOp( ag._dfp._dataAppl, ag._tpl._dfp._dataAppl ),
       SetOp( ag._dfp._dataClas, ag._tpl._dfp._dataClas ),
       SetOp( ag._dfp._mgmtClas, ag._tpl._dfp._mgmtClas ),
       SetOp( ag._dfp._storClas, ag._tpl._dfp._storClas )
/*------( Create OMVS segment part of the RACF command ADDGROUP )-----*/
omvs = SetOp( ag._omvs._autogid  , ag._tpl._omvs._autogid   ),
       SetOp( ag._omvs._gid      , ag._tpl._omvs._gid       ),
       SetOp( ag._omvs._gidShared, ag._tpl._omvs._gidShared )
/*------( Create OVM segment part of the RACF command ADDGROUP )------*/
ovm  = SetOp( ag._ovm._gid, ag._tpl._ovm._gid )
/*------( Create TME segment part of the RACF command ADDGROUP )------*/
tme  = SetOp( ag._tme._roles, ag._tpl._tme._roles )
/*==================( Generate RACF command ADDGROUP )================*/
cmd  = Space( SetOp( ag._grpList  , ag._tpl._grpList   ),
              SetOp( ag._at       , ag._tpl._at        ),
              SetOp( ag._onlyAt   , ag._tpl._onlyAt    ),
              SetOp( ag._csdata   , ag._tpl._csdata    ),
              SetOp( ag._data     , ag._tpl._data      ),
              SetOp( ag._model    , ag._tpl._model     ),
              SetOp( ag._owner    , ag._tpl._owner     ),
              SetOp( ag._supGroup , ag._tpl._supGroup  ),
              SetOp( ag._termuacc , ag._tpl._phrase    ),
              SetOp( ag._universal, ag._tpl._universal ),
              SetOp( Strip( ag._dfp dfp  ), ag._tpl._dfp  ),
              SetOp( Strip( ag._omvs omvs), ag._tpl._omvs ),
              SetOp( Strip( ag._ovm ovm  ), ag._tpl._ovm  ),
              SetOp( Strip( ag._tme tme  ), ag._tpl._tme  ))

Say "ADDGROUP" cmd
Address TSO "ADDGROUP" cmd

Return rc
/**** End Addgroup ****/

Beispiel 1

/* REXX ***************************************************************/
/* Program name: ADDGROUP                                             */
/* Author......: Janosch R(exx) Kowalczyk                             */
/**********************************************************************/
ag. = ''
/* Base data */
ag._grpList = "GPSYSMVS"
ag._data = "'MVS-SYSTEMPROGRAMMIERUNG HAUPTGRUPPE'"                          
ag._owner = "GPSYS"                         
ag._supGroup = "GPSYS"                      

/* Segmente */
ag._dfp._dataAppl = "OSSYSAPP"
ag._dfp._dataClas = "DCSYSMVS"
ag._dfp._mgmtClas = "STANDARD"
ag._dfp._storClas = "STANDARD"

ag._omvs._autogid = "AUTOGID"

ret = AddgroupTpl()
rc = Addgroup()

Exit
/**** End main procedure ****/

Ergebnis 1

ADDGROUP (GPSYSMVS) DATA('MVS-SYSTEMPROGRAMMIERUNG HAUPTGRUPPE') OWNER(GPSYS) SUPGROUP(GPSYS) +
         DFP(DATAAPPL(OSSYSAPP) DATACLAS(DCSYSMVS) MGMTCLAS(STANDARD) STORCLAS(STANDARD)) +
         OMVS(AUTOGID)
Return code (RC) from ADDGROUP is 0

Beispiel 2

/* REXX ***************************************************************/
/* Program name: ADDGROUP                                             */
/* Author......: Janosch R(exx) Kowalczyk                             */
/**********************************************************************/
ag. = ''
/* Base data */
ag._grpList = "GPTODEL"
ag._data = "'BENUTZER ZUM LOESCHEN. QUARANTAENE-GRUPPE'"                          
ag._owner = "GPFUN"                         
ag._supGroup = "GPFUN"                      
ag._universal = "UNIVERSAL"            

ret = AddgroupTpl()
rc = Addgroup()

Exit
/**** End main procedure ****/

Ergebnis 2

ADDGROUP (GPTODEL) DATA('BENUTZER ZUM LOESCHEN. QUARANTAENE-GRUPPE') OWNER(GPFUN) +
         SUPGROUP(GPFUN) UNIVERSAL
Return code (RC) from ADDGROUP is 0
Your privacy: This web site has no cookies, no advertising and does not provide access data to anyone for any reason.
Copyright © Janosch R. Kowalczyk 1999, 2010. All rights reserved.
Most recent revision on 19 Aug 2010 (231) - 20:24:42.
Jakoxx Logo
Meine REXX-Regeln
RXCIF-Prozeduren:
Meine Prozeduren
Built-in functions
Standard Return Codes