A few worked examples of commands in CCL.
 
Example 1:


The user command:		FORPLUS filename

The users own USERCCL.CCL	$4711FORPLUS		(1)
				?1Program		(2)
				*F4P %1%%1=%		(3)

a) The command decoder MCR finds there is no task ...FOR and calls CCL
b) The CCL decoder finds a user file specifying CCL commands of his own
   and scans that first, overiding any system definitions.
c) The line (1) is found and matches the keyword FORPLUS typed by the user.
   The number of parameters (min allowed, and max to be asked for) are
   extracted from the command line. ( this all in LOOKUP)
d) The main body now finds enough parameters have been supplied to fulfil
   the minimum requirements of the command [ 1] and goes to look for a 
   skeleton command line (3).
e) The skeleton is copied to an output buffer until a "%" character is found
   when FIXUP is called to insert parameters, after this stage the ouput 
   buffer contains "F4P filename                         ".
f) Another parameter spec is found %1=%. In this case a prefix character
   "=" ( the other is ",") has been specified, to be put infront of the
   parameter if it is non null; the parameter is non null thus "=filename"
   is inserted.
g) The end of the skeleton command line is reached, and the final command
   "F4P filename=filename" is resubmitted to MCR.

The above was a very simple example, let us look at some of the other
possible calls that could have gone on variations of the same route.

User command				FORPLUS

a-c) as above.
d) not enough parameters have been specified, the minimun # not to cause
   prompt for parameters has been set as 1 and 0 have been given, so the
   number of prompts to be given, and parameters input, is set to the
   4th of the numbers on line (1), in this case 1 also.
       The routine PRMPT is then called to find a command line in USERCCL
   which begins "?n" where n is greater than the number of parameters
   already availiable. "?1" is found and so a question is asked for param
   number 1, it is:
	Program?
   which is answered on the same line. The effect of the answer given to
   the prompt can be one of 3 sequences depending on the answer. If the
   answer was CTRL/Z, then CCL abandons the processing of the command.
   If the answer was a return only, then the parameter will be set to a
   null string, and when the second substitution is attempted for %1=%
   it will be found that there is no text so the entire parameter will be
   bypassed resulting in simply "F4P " being sent to MCR. If the result
   is non null then it will form the parameter substituted as above.
 
Example 2:
 
1.  UIC		==>  SET /UIC
2.  UIC [G,M]	==>  SET /UIC=[G,M]
3.  UIC =[G,M]	==>  SET /UIC=[G,M]
 
     The following entries in SYSCCL.CCL produce the above syntax.
 
		$3300UIC
		*SET /UIC %2=%%1=%
 
  Case 1.	No parameters present so   SET /UIC sent out.
 
  Case 2.	Since only one parameter is present ([G,M} {Remember
		the comma in a UIC is not a delimiter.}, %2=% evaluates
		to a null and %1=% evaluates to  =[G,M].
 
  Case 3.	The = sign (UIC =[G,M]) acts as the first delimiter
		which means parameter 1 is evaluated to a null and
		parameter 2 is evaluated to be =[G,M].

 
 
Example 3:
 
DIRECTORY filespec		==>PIP filespec/BR
 
     The CCL entries to produce this command would be
 
		$3900DIRECTORY
		*PIP %1;*%/BR
 
  Case 1.	The command DIRECTORY would have parameter 1 as null
		so the MCR command would be  PIP /BR.
 
  Case 2.	The command DIR *.CMD would have appended a ;* since there
		is no ';' in the command line typed in.  So the command
		passed back to MCR would be  PIP *.cmd;*/BR.
 
  Case 3.	The command DIR *.CMD;1  would have nothing appended since
		a ';' is found in the input commnad.  Hence, the command
		PIP *.CMD;1/BR  would be sent to MCR by CCL.
Some more examples (again from an IAS user who moves occasionally to our
machine).

$5811DEL/KEEP			!the IAS command DELETE/KEEP filename
?1Filename
*PIP %1%/PU

since EDI is not installed on our machine ( the CCL command EDIT file is
used as TECO %1.FTN% ) he wanted the use of EDI as on the IAS system.

$3611CREATE
$2411EDIT
?1Filename
*RUN $EDI/PRM="%1%"

however he could still have these commands while other users had, for example,

EDIT file		->	TECO file.ftn
and
$5822CRE/DIRE
$6822CREA/DIR
$7822CREAT/DI
$8822CREATE/D
?1Uic
?2Device
*RUN $UFD/PRM="%2:%%1%"

as another reasonable IAS style command