DDN TSO Command

DDN is a TSO command that provides an easier way to allocate datasets for a TSO User session than using the ALLOCate TSO command provided by IBM.

It is located in File #300 of the #249 version of the CBT tape and is part of a collection of TSO commands from Jim Marshall of the Air Force.  It was originally written by Bill Godfrey at the Planning Research Corporation in May of 1980.


The original version of this command from the CBT tape installs under the name DD, but since I already have a DD TSO command, that I love and use frequently, I modified the installation to put this on as DDN.  My modifications included changing the load module name (link-edit control card) and every mention of the command name in the help text.  If you would prefer the original name, or even a different name altogether, you can simply make your own modifications in the same places I did.

The source on the CBT tape is set up for Assembler H and there is source for two CSECTs stacked together.  When I put the jobstream together, I inserted a separate assembly step since our F Assembler doesn't handle batch compiles.  The completed jobstream to do the two assemble steps, the link-edit, and install the help text - ddn$.jcl - is contained in the archive ddn.tgz [MD5: BA1EE69DBF40C0377933A64675735438].  Download the archive and extract the jobstream (WinZip on Windows/?? or tar on Linux).  Submit the jobstream to assemble and link the single load module for DDN into SYS2.CMDLIB and copy the help text into SYS2.HELP.  If you don't have SYS2.CMDLIB defined, you will need to modify the jobstream to specify a different target load library.  Also if you do not have SYS2.HELP defined, you may modify the jobstream to place the help information into SYS1.HELP.


Utilizing DDN

The help text for DDN is really all that is required to understand and use the command:

Function -

   The DDN command is like a shorthand 'ALLOC' command.               

   It is similar to the ALLOC command except the filename and dataset name are required 
   positional operands instead of keyword operands.  For example, instead of typing               
   you can type                                                       
   if the filename is currently allocated, it will be freed and reused.
   Not all operands of ALLOC are available in the DDN command.        
   Some operands are new functions not available in the ALLOC command.
Syntax  -

   DDN  'filename'  'dsname'  SHR/OLD/MOD/NEW  USING('ATTR')     
                                     UNIT('unitname') VOLUME('volume')  
                                     SPACE('prime','sec')  DIR('number')
                                     DATASET  FORM('id')  FCB('id') HOLD
                                     COPIES('number')  DEST('id')       
                                     RECFM('x')  LRECL('n') BLKSIZE('n')

   required - 'filename', 'dsname'                                      
   defaults - SHR (unless SPACE, DIR, or TRACKS/CYLl/BLOCKS specified,   
                   in which case the default is NEW)                    
              for NEW data sets, if SPACE is not specified and space type (TRACKS, CYL, 
              BLOCK) is not specified, then the system default space values will be used.             
              These are currently SPACE(10,50) BLOCKS(1000) RLSE.       

   Alias    - none                                                      
 Operands -                                                             

   'filename' - the filename to be allocated.                           
   'dsname'  -  the data set(s) to be allocated to the filename.        
                If more than one is specified, they will be concatenated.
                If '*' is specified, the terminal will be allocated.    
                If SYSOUT or SYSOUT(x), a SYSOUT file will be allocated (x is SYSOUT 
                class, and can be A thru Z or #0 thru #9 which are treated as 0 thru 9).          
                If DUMMY, a dummy file will be allocated.         
                If $, a temporary data set will be allocated.     
                If $.name, a temporary data set will be allocated, with 'name' appended to 
                the generated dsname.       
   Old       -  the data set is to be allocated exclusively to this session.                                    
   Mod     -  the data set is to be allocated exclusively to this session, to append more data.
   New     -  the data set is to be created.                      
   UNIT('unit') - the unit name of the device on which the data set resides, if not cataloged.
   VOLUME('volume') - the volume serial on which the data set resides, if not cataloged.
   USING('attr-list-name') - the name of an attribute list of DCB parameters to be merged 
                 with the data set.
   DATASE   -  this keyword is needed only if you wish to allocate a data set having the 
                     name SYSOUT or DUMMY or $ or $.name.  This keyword forces the 
                     command to use the second operand as a dsname if it is any of these names.
   SPACE('prime','sec') - the primary and secondary amounts of space to be allocated to 
                     a new data set on disk.
   TRACKS   -  the values in the SPACE operands are in tracks.     
   CYLINDERS -  the values in the SPACE operands are in cylinders.  
   BLOCKS('size')  -  the values in the SPACE operands are in blocks and this is the 
                                  size of a block.                      
   DSORG(PS/POo/DA/PSU/POU/DAU) - DCB DSORG.                           
   RECFM('x') - DCB record format.                                    
   LRECL('n') - DCB logical record length.                            
   BLKSIZE('n') - DCB block size.                                     
   FORM('id') - SYSOUT form number.                                   
   FCB('id')  - SYSOUT forms control buffer image id.                 
   HOLD       - SYSOUT to be held.                                    
   DEST('id') - SYSOUT destination.                                   
   COPIES('number') - SYSOUT copies (1 to 99).                   

I hope that you have found my instructions useful.  If you have questions that I can answer to help expand upon my explanations and examples shown here, please don't hesitate to send them to me:

Return to Site Home Page 

This page was last updated on January 17, 2015 .