CCSS - Control-Card Sub-System - Symbolic Parameters in Control Cards

CCSS - The Control-Card Sub-System

                 

Overview

CCSS is a sub-system for MVS/ESA, OS/390 and z/OS. When CCSS is installed, users can specify in-line control cards in their JCL procedures and INCLUDE members. Furthermore, the control cards may contain symbolic parameters, like those that can be specified on DD statements. Here is a sample procedure which contains in-line control cards, as well as symbolic parameters:

	//DEFMAST2 PROC TDSN='PROD.MASTER',TVOL=PROD22,RCD=999999999999
	//*
	//STEP010  EXEC	PGM=IDCAMS
	//SYSPRINT DD	SYSOUT=*
	//SYSIN    DD	SUBSYS=(CCSS,
	//		' DEFINE CLUSTER(NAME(&TDSN) VOL(&TVOL) -',
	//		'  RECSZ(500,500) KEYS(12,0) TRACKS(5000)) ',
	//		' REPRO IFILE(SYSIN) ODS(&TDSN) ',
	//		'&RCD ') 
           

Syntax

A CCSS DD statement must contain the SUBSYS operand. It may also contain other operands, such as RECFM, LRECL or DSNAME. The SUBSYS operand must contain a list of sub-parameters enclosed within parentheses and separated with commas. The first parameter is the sub-system name (by default, CCSS). Each subparameter beyond the first one must be a character string that correspond to a control card. Control cards which contain special characters must be enclosed in apostrophes. When control cards contain apostrophe or ampersand characters, these characters must be doubled according to standard JCL coding rules.

Long Control Cards

The maximum length of a control card that can fit on a single JCL statement is 67 characters. When the control card contains special characters, the text must be enclosed in apostrophes and the maximum length is 65 characters. When the control card contains apostrophe or ampersand characters (which must be doubled) or symbolic parameters, the actual number of characters that fit on a single JCL statement is further reduced. Two different methods can be used to specify long control cards which do not fit in a single JCL statement:

  1. temporary variables can be assigned and concatenated to form a sub-operand of the SUBSYS parameter, as in the example below.
    ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
    // SET A='this long control card requires two JCL statements; '
    // SET B='the maximum length after substitution is 127 characters'
    //SYSUT2   DD SUBSYS=(CCSS,'&A&B',
    // '<----- this 65-char control card fits in one JCL statement ----->') 
  2. the long control card can be broken into two or more segments, separated with a special operand (a plus sign enclosed in apostrophes) which CCSS uses as a continuation indicator, as in the example below.
    ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
    //SYSIN    DD SUBSYS=(CCSS,'this control card is so long that it ','+',
    // 'requires four different JCL statements; note that CCSS puts ','+',
    // 'no limit to the size of individual control cards which can ','+',
    // 'be as long as the application needs',
    // ' ', 		<- blank line
    // ' FIN')		<- last control card 

When a control card consists of a single plus sign in pos 1, it must be specified as a 2-char string (a plus sign and a space enclosed in apostrophes) to prevent confusion with the CCSS continuation indicator.

CCSS does not allow null strings; consequently, a blank control card must be specified as a 1-char string (a space enclosed in apostrophes).

CCSS pads the control cards with spaces to match the record length (LRECL) expected by the application. If the specified control card is longer than the LRECL, extraneous characters are automatically truncated and no message is issued.

Limitations

The syntax on a single DD statement is limited to 8KB and 254 records. Specifying concatenated DD statements can be used to extend the limitation, as shown in this example.

Installation

CCSS consists of a single module (CCSSINIT) which contains both the initialisation code and the functional routines. CCSSINIT must be copied to an APF-authorised library before it can be successfully executed. CCSSINIT may be loaded into LPA at installation time, but this is not a requirement. Activation of the CCSS sub-system can occur in several ways:

  1. during system initialisation (IPL), through an entry in IEFSSNxx, or
  2. at any time, with a SETSSI ADD,S=CCSS,I=CCSSINIT command, or
  3. by executing CCSSINIT in a batch job with PARM=CCSS. This method also allows the current version of the sub-system to be replaced with an updated version. When invoked in a batch job, CCSSINIT issues RACHECK and terminates with RC=16 if the invoker does not have UPDATE authority to SYS1.PARMLIB.

Note: Although the name of the sub-system itself may be any valid name, the name of the CCSSINIT module can not be changed.

For more information about CCSS, please contact us.

 
If your installation does not wish to install CCSS, we also offer inexpensive utility programs that allow programmers to specify symbolic parameters in in-line control cards, as shown in the example below:

	//DEFMAST2 SET	TDSN='PROD.MASTER',TVOL=PROD22
	//*
	//*	   Execute IDCAMS with variables in SYSIN control-cards
	//*
	//STEP010  EXEC	PGM=TSIDCAMS,PARM='TDSN=&TDSN,TVOL=&TVOL'
	//SYSPRINT DD	SYSOUT=*
	//SYSIN    DD	*
	 DEFINE CLUSTER(NAME(&TDSN) VOL(&TVOL) -
	   RECSZ(500,500) KEYS(12,0) TRACKS(5000))
	 REPRO IFILE(SYSIN) ODS(&TDSN)
	999999999999
	/* 

For more information, please contact us

 

Search key-words: SSI os390 zOS substitute symbol use using usage present presence symbolic variable symbols substitution substituting replacing replacement defining definition data file member IPL NIP SYSIN OVERRIDE ERROR SubSystem runtime run-time pass value values cards parms mainframe mainframes