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 "A60 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 "A60 " 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