ret = AllocTpl()...................alloc. = '' /* must be first */alloc._parm_1 = ...alloc._parm_2 = ...alloc._parm_3 = ......................alloc._parm_n = ......................rc = Allocate() [;]
/*================( Prepare operands for TSO ALLOCATE )===============*/
AllocPrepare: Procedure Expose alloc.
alloc._cmdName = "ALLOCATE"
/* Wählen Sie die für den nächsten ALLOCATE-Befehl benötigten Operanden
und ordnen Sie denen die richtigen Werte zu. Kopieren Sie sie in das
REXX-Programm vor dem Allocate-Aufruf. Starten Sie immer mit der Zu-
weisung alloc. = "":
alloc._dataset = "z. B.: 'SYS1.SAMPLIB'"
alloc._dataset._dummy = "DUMMY (mutually exclusive with alloc._dataset)"
alloc._file = "z. B.: EINGABE"
alloc._disp = "OLD | SHR | MOD | NEW | SYSOUT[(c)]"
alloc._disp._sysout = "c (mutually exclusive with alloc._disp)"
alloc._dataClass = "Eigenname installationsabhängig"
alloc._mgmtClass = "Eigenname installationsabhängig"
alloc._storClass = "Eigenname installationsabhängig"
alloc._volume = "Eigenname, z. B.: SYS001"
alloc._space = "primary[,secondary] z. B.: 5,1"
alloc._spcUnit = "TRACKS | CYLINDERS | BLOCK(x) | BLKSIZE(y) | AVBLOCK(z)"
alloc._spcUnit._block = "x (mutually exclusive with alloc._spcUnit)"
alloc._spcUnit._blkSize = "y (mutually exclusive with alloc._spcUnit)"
alloc._spcUnit._avblock = "z (mutually exclusive with alloc._spcUnit)"
alloc._avgRec = "U | K | M (nur zusammen mit AVBLOCK für alloc._spcUnit)"
alloc._release = "RELEASE (beim Schließen nicht verwendeten Speicher frei geben)"
alloc._dir = "d (Anzahl der Directory-Sätzen a 256 B)"
alloc._altFile = "name (alternativer Name für SYSIN)"
alloc._dest = "destination | destination.userid"
alloc._reuse = "REUSE"
alloc._hold = "HOLD | NOHOLD"
alloc._unit = "unit-type, z. B.: SYSDA | 3390"
alloc._catDisp = "KEEP | DELETE | CATALOG | UNCATALOG"
alloc._lRecL = "logical_record_length | X | nnnnnK"
alloc._recFm = "Kombination: A,B,D,F,M,S,T,U,V (mit Blank oder ',' getrennt"
alloc._dsOrg = "DA | DAU | PO | POU | PS | PSU"
alloc._dsnType = "LIBRARY|PDS|HFS|PIPE|LARGE|BASIC|EXTREQ|EXTPREF"
alloc._like = "model_dsname z. B.: 'SYS1.SAMPLIB'"
alloc._using = "attr_list_name (siehe TSO-Befehl ATTRIB)"
alloc._refDD = "ref_file_name (DD-Name für Refernz-DSN)"
alloc._secModel = "profil_name[,GENERIC]"
alloc._ucount = "count (Max. 1-59 Speichereinheiten zu verwenden)"
alloc._parallel = "PARALLEL (mutually exclusive with alloc._ucount)"
alloc._label = "SL | SUL | AL | AUL | NSL | NL | LTM | BLP"
alloc._acCode = "access_code"
alloc._position = "sequence_number (Datasetposition auf dem Band)"
alloc._maxVol = "count (Max. 1-255 Volumes zu verwenden)"
alloc._private = "PRIVATE"
alloc._vseq = "vol_seq_num (1-255 - Prozessstart für ein Multi-Volume-DS"
alloc._round = "ROUND (runden auf volle Zylinder)"
alloc._bufL = "buffer_len"
alloc._bufNo = "number_of_buffers"
alloc._bfAln = "F | D (Buffer boundary alignment)"
alloc._ncp = "number_of_channel_programs"
alloc._input = "INPUT"
alloc._output = "OUTPUT"
alloc._expDt = "yyddd | yyyy/ddd (Expiration Date)"
alloc._retPd = "no_of_days (mutually exclusive with alloc._expDt)"
alloc._optCd = "A,B,C,E,F,H,J,Q,R,T,W,Z (Optionale Services - beliebiege Kombination)"
alloc._erOpt = "ACC | SKP | ABE (Error Option)"
alloc._bfTek = "S | E | A | R (Type of buffering)"
alloc._diagns = "TRACE (Trace einschalten)"
alloc._limCt = "search_number (<=32760)"
alloc._bufOff = "1-99 | L (Buffer offset)"
alloc._den = "0-4 (Magnetic tape density)"
alloc._trtCh = "C | E | T | ET,COMP | NOCOMP (Recording technique for tape)"
alloc._keyLen = "bytes (Länge der Schlüssel für VSAM-Datei)"
alloc._keyOff = "offset (Schlüsselposition)"
alloc._recOrg = "ES | KS | LS | RR (Record-Organisation bei VSAM) "
alloc._protect = "PROTECT (Soll die Tapedatei RACF-geschützt sein)"
alloc._copies = "(number)[,group_value] (Anzahl von Kopien zum Drucken)"
alloc._burst = "BURST | NOBURST (Für IBM 3800 oder 3900-Drucker)"
alloc._chars = "table_name (Font-Name)"
alloc._flash = "overlay_name[,copies] (Form-Overlay-Name)"
alloc._modify = "module_name[:trc] (Name von Copy-Modification-Module)"
alloc._fcb = "image_id[,VERIFY | ALIGN] (Forms control buffer)"
alloc._forms = "forms_name"
alloc._outDes = "output_descriptor_name{,...}"
alloc._spin = "UNALLOC | NO"
alloc._segment = "page_count"
alloc._ucs = "universal_character_set_name"
alloc._writer = "external_writer_name"
alloc._path = "pathname (Identifiziert eine Unix-Datei)"
alloc._pathDisp = "[normal_disposition][,nabnormal_disposition] (Gütig: KEEP, DELETE)"
alloc._pathMode = "SIRUSR|SIWUSR|SIXUSR|SIRWXU|SIRGRP|SIWGRP|SIXGRP|SIRWXG|SIROTH|SIWOTH|SIXOTH|SIRWXO|SISUID|SISGID"
alloc._pathOpts = "ORDONLY|OWRONLY|ORDWR (only 1),OAPPEND,OCREAT,OEXCL,ONOCTTY,ONONBLOCK,OTRUNC (upto 6)"
alloc._fileData = "BINARY | TEXT"
alloc._rls = "NRI | CR"
*/
Return alloc._file
/**** End AllocPrepare ****/
/*========( Muster für Zuordnungsparameter von TSO ALLOCATE )=========*/ AllocTpl: Procedure Expose alloc. alloc._tpl. = "" alloc._tpl._dataset = "DATASET()" alloc._tpl._file = "FILE()" alloc._tpl._disp._sysout = "SYSOUT()" alloc._tpl._dataclas = "DATACLAS()" alloc._tpl._mgmtClass = "MGMTCLAS()" alloc._tpl._storClass = "STORCLAS()" alloc._tpl._volume = "VOLUME()" alloc._tpl._space = "SPACE()" alloc._tpl._spcUnit._block = "BLOCK()" alloc._tpl._spcUnit._blkSize = "BLKSIZE()" alloc._tpl._spcUnit._avblock = "AVBLOCK()" alloc._tpl._avgRec = "AVGREC()" alloc._tpl._dir = "DIR()" alloc._tpl._altFile = "ALTFILE()" alloc._tpl._unit = "UNIT()" alloc._tpl._lRecL = "LRECL()" alloc._tpl._recFm = "RECFM()" alloc._tpl._dsOrg = "DSORG()" alloc._tpl._dsnType = "DSNTYPE()" alloc._tpl._like = "LIKE()" alloc._tpl._using = "USING()" alloc._tpl._refDD = "REFDD()" alloc._tpl._secModel = "SECMODEL()" alloc._tpl._ucount = "UCOUNT()" alloc._tpl._label = "LABEL()" alloc._tpl._acCode = "ACCODE()" alloc._tpl._position = "POSITION()" alloc._tpl._maxVol = "MAXVOL()" alloc._tpl._vseq = "VSEQ()" alloc._tpl._bufL = "BUFL()" alloc._tpl._bufNo = "BUFNO()" alloc._tpl._bfAln = "BFALN()" alloc._tpl._ncp = "NCP()" alloc._tpl._expDt = "EXPDT()" alloc._tpl._retPd = "RETPD()" alloc._tpl._optCd = "OPTCD()" alloc._tpl._erOpt = "EROPT()" alloc._tpl._bfTek = "BFTEK()" alloc._tpl._diagns = "DIAGNS()" alloc._tpl._limCt = "LIMCT()" alloc._tpl._bufOff = "BUFOFF()" alloc._tpl._den = "DEN()" alloc._tpl._trtCh = "TRTCH()" alloc._tpl._keyLen = "KEYLEN()" alloc._tpl._keyOff = "KEYOFF()" alloc._tpl._recOrg = "RECORG()" alloc._tpl._copies = "COPIES()" alloc._tpl._chars = "CHARS()" alloc._tpl._flash = "FLASH()" alloc._tpl._modify = "MODIFY()" alloc._tpl._fcb = "FCB()" alloc._tpl._forms = "FORMS()" alloc._tpl._outDes = "OUTDES()" alloc._tpl._spin = "SPIN()" alloc._tpl._segment = "SEGMENT()" alloc._tpl._ucs = "UCS()" alloc._tpl._writer = "WRITER()" alloc._tpl._path = "PATH()" alloc._tpl._pathDisp = "PATHDISP()" alloc._tpl._pathMode = "PATHMODE()" alloc._tpl._pathOpts = "PATHOPTS()" alloc._tpl._fileData = "FILEDATA()" alloc._tpl._rls = "RLS()" Return '' /**** End AllocTpl ****/
/*=============( 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 ****/
/*==========( Command to create the TSO command ALLOCATE )============*/
Allocate: Procedure Expose alloc.
cmd = Space( SetOp( alloc._dataset , alloc._tpl._dataset ),
SetOp( alloc._dataset._dummy , alloc._tpl._dataset._dummy ),
SetOp( alloc._file , alloc._tpl._file ),
SetOp( alloc._disp , alloc._tpl._disp ),
SetOp( alloc._disp._sysout , alloc._tpl._disp._sysout ),
SetOp( alloc._dataClass , alloc._tpl._dataClass ),
SetOp( alloc._mgmtClass , alloc._tpl._mgmtClass ),
SetOp( alloc._storClass , alloc._tpl._storClass ),
SetOp( alloc._volume , alloc._tpl._volume ),
SetOp( alloc._space , alloc._tpl._space ),
SetOp( alloc._spcUnit , alloc._tpl._spcUnit ),
SetOp( alloc._spcUnit._block , alloc._tpl._spcUnit._block ),
SetOp( alloc._spcUnit._blkSize, alloc._tpl._spcUnit._blkSize ),
SetOp( alloc._spcUnit._avblock, alloc._tpl._spcUnit._avblock ),
SetOp( alloc._avgRec , alloc._tpl._avgRec ),
SetOp( alloc._release , alloc._tpl._release ),
SetOp( alloc._dir , alloc._tpl._dir ),
SetOp( alloc._altFile , alloc._tpl._altFile ),
SetOp( alloc._dest , alloc._tpl._dest ),
SetOp( alloc._reuse , alloc._tpl._reuse ),
SetOp( alloc._hold , alloc._tpl._hold ),
SetOp( alloc._unit , alloc._tpl._unit ),
SetOp( alloc._catDisp , alloc._tpl._catDisp ),
SetOp( alloc._lRecL , alloc._tpl._lRecL ),
SetOp( alloc._recFm , alloc._tpl._recFm ),
SetOp( alloc._dsOrg , alloc._tpl._dsOrg ),
SetOp( alloc._dsnType , alloc._tpl._dsnType ),
SetOp( alloc._like , alloc._tpl._like ),
SetOp( alloc._using , alloc._tpl._using ),
SetOp( alloc._refDD , alloc._tpl._refDD ),
SetOp( alloc._secModel , alloc._tpl._secModel ),
SetOp( alloc._ucount , alloc._tpl._ucount ),
SetOp( alloc._parallel , alloc._tpl._parallel ),
SetOp( alloc._label , alloc._tpl._label ),
SetOp( alloc._acCode , alloc._tpl._acCode ),
SetOp( alloc._position , alloc._tpl._position ),
SetOp( alloc._maxVol , alloc._tpl._maxVol ),
SetOp( alloc._private , alloc._tpl._private ),
SetOp( alloc._vseq , alloc._tpl._vseq ),
SetOp( alloc._round , alloc._tpl._round ),
SetOp( alloc._bufL , alloc._tpl._bufL ),
SetOp( alloc._bufNo , alloc._tpl._bufNo ),
SetOp( alloc._bfAln , alloc._tpl._bfAln ),
SetOp( alloc._ncp , alloc._tpl._ncp ),
SetOp( alloc._input , alloc._tpl._input ),
SetOp( alloc._output , alloc._tpl._output ),
SetOp( alloc._expDt , alloc._tpl._expDt ),
SetOp( alloc._retPd , alloc._tpl._retPd ),
SetOp( alloc._optCd , alloc._tpl._optCd ),
SetOp( alloc._erOpt , alloc._tpl._erOpt ),
SetOp( alloc._bfTek , alloc._tpl._bfTek ),
SetOp( alloc._diagns , alloc._tpl._diagns ),
SetOp( alloc._limCt , alloc._tpl._limCt ),
SetOp( alloc._bufOff , alloc._tpl._bufOff ),
SetOp( alloc._den , alloc._tpl._den ),
SetOp( alloc._trtCh , alloc._tpl._trtCh ),
SetOp( alloc._keyLen , alloc._tpl._keyLen ),
SetOp( alloc._keyOff , alloc._tpl._keyOff ),
SetOp( alloc._recOrg , alloc._tpl._recOrg ),
SetOp( alloc._protect , alloc._tpl._protect ),
SetOp( alloc._copies , alloc._tpl._copies ),
SetOp( alloc._burst , alloc._tpl._burst ),
SetOp( alloc._chars , alloc._tpl._chars ),
SetOp( alloc._flash , alloc._tpl._flash ),
SetOp( alloc._modify , alloc._tpl._modify ),
SetOp( alloc._fcb , alloc._tpl._fcb ),
SetOp( alloc._forms , alloc._tpl._forms ),
SetOp( alloc._outDes , alloc._tpl._outDes ),
SetOp( alloc._spin , alloc._tpl._spin ),
SetOp( alloc._segment , alloc._tpl._segment ),
SetOp( alloc._ucs , alloc._tpl._ucs ),
SetOp( alloc._writer , alloc._tpl._writer ),
SetOp( alloc._path , alloc._tpl._path ),
SetOp( alloc._pathDisp , alloc._tpl._pathDisp ),
SetOp( alloc._pathMode , alloc._tpl._pathMode ),
SetOp( alloc._pathOpts , alloc._tpl._pathOpts ),
SetOp( alloc._fileData , alloc._tpl._fileData ),
SetOp( alloc._rls , alloc._tpl._rls ))
Say cmd
Address TSO "ALLOCATE" cmd
Return rc
/**** End Allocate ****/
Beispiel 1
/* REXX ***************************************************************/
/* Beispiel zum Allokieren einer Non-VSAM-Datei mit Hilfe von RXCIF. */
/*--------------------------------------------------------------------*/
/* 1. Muster der Zuordnungsparametern für Allocate bekanntmachen. */
ret = AllocTpl()
/* 2. Aus der Funktion AllocPrepare benötigten Variablen auskopieren: */
alloc. = '' /* Must be first */
alloc._dsname = "'TESTUSR.TEST.DATA'"
alloc._file = "TESTDATA"
alloc._disp = "NEW"
alloc._space = "1,1"
alloc._spcUnit = "TRACKS"
alloc._dir = "5"
alloc._unit = "3390"
alloc._catDisp = "CATALOG"
alloc._lRecL = "80"
alloc._recFm = "F B"
alloc._dsOrg = "PO"
x = Outtrap( 'err.' )
Address TSO "FREE FILE("alloc._file")"
Address TSO "DEL" alloc._dsname
x = Outtrap( 'OFF' )
/* 5. Zusammenlegung der Aufrufparametern und Ausführung des Befehls. */
rc = Allocate()
Say "Return code (RC) from ALLOCATE is" rc
Exit
/*** End sample procedure ***/
/****************( DEFINITION DER INTERNEN PROZEDUREN )****************/
/*==========( Templates for allocate a NON-VSAM-DASD-DS )=============*/
AllocTpl: Procedure Expose alloc.
alloc._tpl._dsname = "DATASET()"
alloc._tpl._file = "FILE()"
alloc._tpl._space = "SPACE()"
alloc._tpl._dir = "DIR()"
alloc._tpl._unit = "UNIT()"
alloc._tpl._like = "LIKE()"
alloc._tpl._lRecL = "LRECL()"
alloc._tpl._recFm = "RECFM()"
alloc._tpl._dsOrg = "DSORG()"
Return ''
/**** End AllocTpl ****/
/*==========( Operands for allocate a NON-VSAM-DASD-DS )==============*/
SetOp: Procedure
Parse Arg value, tpl, operand
If value = '' Then Return ''
Return Insert( value, tpl, Pos( "(", tpl ))
/**** End SetOp ****/
/*============( Command to allocate a NON-VSAM-DASD-DS )==============*/
Allocate: Procedure Expose alloc.
/* 3. Zusammenlegung der Aufrufparametern für den Befehl ALLOCATE. */
cmd = Space( SetOp( alloc._dsname , alloc._tpl._dsname ) ,
SetOp( alloc._file , alloc._tpl._file ) ,
SetOp( alloc._disp , alloc._tpl._disp ) ,
SetOp( alloc._volume , alloc._tpl._volume ) ,
SetOp( alloc._space , alloc._tpl._space ) ,
SetOp( alloc._spcUnit , alloc._tpl._spcUnit ) ,
SetOp( alloc._blkSize , alloc._tpl._blkSize ) ,
SetOp( alloc._dir , alloc._tpl._dir ) ,
SetOp( alloc._reuse , alloc._tpl._reuse ) ,
SetOp( alloc._unit , alloc._tpl._unit ) ,
SetOp( alloc._like , alloc._tpl._like ) ,
SetOp( alloc._secModel, alloc._tpl._secModel ),
SetOp( alloc._release , alloc._tpl._release ) ,
SetOp( alloc._catDisp , alloc._tpl._catDisp ) ,
SetOp( alloc._lrecl , alloc._tpl._lrecl ) ,
SetOp( alloc._erOpt , alloc._erOpt ) ,
SetOp( alloc._recFm , alloc._tpl._recFm ) ,
SetOp( alloc._dsOrg , alloc._tpl._dsOrg ) ,
SetOp( alloc._dsnType , alloc._dsnType ))
Say cmd
/* 4. Ausführung des Befehls mit den oben generierten Operanden in TSO */
Address TSO "ALLOCATE" cmd
Return rc
/**** End Allocate ****/
Ergebnis 1
DATASET('TESTUSR.TEST.DATA') FILE(TESTDATA) NEW SPACE(1,1) TRACKS DIR(5) UNIT(3390) CATALOG LRECL(80) RECFM(F B) DSORG(PO)
Return code (RC) from ALLOCATE is 0
Beispiel 2
/* REXX ***************************************************************/
/* Allokieren einer existierenden Non-VSAM-Datei zum Lesen/Schreiben. */
/*--------------------------------------------------------------------*/
/* 1. Muster der Zuordnungsparametern für Allocate bekanntmachen. */
ret = AllocTpl()
/* 2. Aus der Funktion AllocPrepare benötigten Variablen auskopieren: */
alloc. = '' /* Must be first */
alloc._dsname = "'TESTUSR.TEST.DATA'"
alloc._file = "TESTDATA"
alloc._disp = "SHR"
alloc._reuse = "REUSE"
/* 5. Zusammenlegung der Aufrufparametern und Ausführung des Befehls. */
rc = Allocate()
Say "Return code (RC) from ALLOCATE is" rc
Exit
/*** End sample procedure ***/
/****************( DEFINITION DER INTERNEN PROZEDUREN )****************/
/*==========( Templates for allocate a NON-VSAM-DASD-DS )=============*/
AllocTpl: Procedure Expose alloc.
alloc._tpl._dsname = "DATASET()"
alloc._tpl._file = "FILE()"
Return ''
/**** End AllocTpl ****/
/*==========( Operands for allocate a NON-VSAM-DASD-DS )==============*/
SetOp: Procedure
Parse Arg value, tpl, operand
If value = '' Then Return ''
Return Insert( value, tpl, Pos( "(", tpl ))
/**** End SetOp ****/
/*============( Command to allocate a NON-VSAM-DASD-DS )==============*/
Allocate: Procedure Expose alloc.
/* 3. Zusammenlegung der Aufrufparametern für den Befehl ALLOCATE. */
cmd = Space( SetOp( alloc._dsname , alloc._tpl._dsname ) ,
SetOp( alloc._file , alloc._tpl._file ) ,
SetOp( alloc._disp , alloc._tpl._disp ) ,
SetOp( alloc._reuse , alloc._tpl._reuse ))
Say cmd
/* 4. Ausführung des Befehls mit den oben generierten Operanden in TSO */
Address TSO "ALLOCATE" cmd
Return rc
/**** End Allocate ****/
Ergebnis 2
DATASET('TESTUSR.TEST.DATA') FILE(TESTDATA) SHR REUSE
Return code (RC) from ALLOCATE is 0