Instructions -- To reconstitute the z/OS datasets from the .zip file: 1) Unzip the .zip file. This will produce 3 files: readme.txt sp.cntl.unloaded sp.load.unloaded The first is this readme file. The second contains this readme file, JCL files and source files. The third contains the unloaded executables. 2) Preallocate on z/OS a dataset with lrecl=80, blksize=9440, recfm=fb and dsorg=ps (a sequential file from which one can reload a PDS). Let us assume this dataset is ANTOGNI.XMIT.STUFF. 3) Use FTP to send the file sp.cntl.unloaded to the dataset created in step 2. Be sure to specify binary transmission! Thus, binary put sp.cntl.unloaded 'antogni.xmit.stuff' 4) In TSO, do receive inds('antogni.xmit.stuff') 5) Respond with a dataset name you wish to use (or with nothing). 6) Use FTP to send the file sp.load.unloaded to the dataset from step 2. Be sure, again, to use binary transmission. 7) In TSO, do receive inds('antogni.xmit.stuff') 8) Respond with a dataset name you wish to use (or with nothing). So, for example, da('antogni.sp.load') Contents of the first, reloaded PDS -- 1) Member SP contains the PL/X code, which is the bulk of the command. 2) Member MEMLISTC contains certain short-cut information (see below). 3) Member GETTMDT returns a time-date string. 4) Member TELLUSER tells the submitter of a job certain information. 5) Job PLX shows how to compile and assemble the PL/X code, in one job. 6) Member ASMOUT contains the assembler output from compilation, suita- ble for modification if one cannot compile the PL/X code. 7) Job ASM shows how to assemble the several pieces of Assembler. 8) Job ASMSP shows how to assemble the assembler output from compila- tion. When one has the use of the compiler, this procedure is com- prised in the job PLX, but for those without the compiler, the pro- cedure shows how to assemble, on the premise that some may modify the assembler code. 9) Job LNKSPS shows how to link-edit the several pieces. 10)Member ISPFIMAC is an ISPF macro that, amongst other things, defines macros SP and SPS to the current PDS in edit. Using the second, reloaded PDS (the load library) -- Once the load module has been reloaded (or produced), one allocates (be- fore entering ISPF) the load library to a ddname that will be used as a tasklib. For example, allocate file(tasklib) ds('antogni.sp.load') sh reuse tsolib activate file(tasklib) Next, one allocates the PDS containing the ISPF macro ISPFIMAC so that ISPF will search it in resolving ISPF commands. For example, allocate file(sysexec) ds('antogni.rexxexec') sh reuse Once inside ISPF, for each dataset (typically, a PDS) where one wants the ISPF macros (see point 6 above) active, one has to do -- one time only -- 'imac ispfmac'. This causes ISPFIMAC to be executed each time one subsequently enters that PDS in edit. Thus, the two macro defini- tions become active for the PDSs one is interested in. Thereafter, when one is editing a PDS where ISPFIMAC has run at entry, one can type on the command line: sps and the current member will be submitted, with comments about when, by whom and whence it was submitted. The load module can also be run as a TSO command processor, but this use depends on the information built into member MEMLISTC. So, for example, if MEMLISTC contains a line BUILDENT TESTIT,TESTJCL,ANTOGNI.PGM.CNTL one can submit ANTOGNI.PGM.CNTL(TESTJCL) by the TSO command sp p=testit