Enhancements to Unisys’ Venerable Workhorse

Relative to SSR 41.2 by Donald J. Gregory


ANDE is a linchpin in the A-Series framework. CANDE continues to be a highly popular editor, despite the fact that it is neither GUI nor menu driven. CANDE contains within it a command-based editor that operates in both single-line and full-page mode. The full-page features give the CANDE user many of the benefits of a true visual editor without any requirement for a PC. Providing an editor is only one aspect of the CANDE product. Using the more recent vernacular, CANDE is also a complete operating system “shell”. CANDE provides a variety of commands enabling its users to compile and execute programs, enter a dialog with a program, run scripts, submit batch jobs, and monitor those jobs through “control” commands. In short, CANDE is a fully featured computer system interface that provides all of these features as a single, integrated working environment for the A-Series user. The current version of CANDE was first developed around 1973 and shipped on the Mark 2.3 software release. It was written by B6700 experts who knew how to squeeze incredible power out of that machine. They gave CANDE its own memory management routines and task processing routines; they also gave it special “hooks” into the operating system. The greatest achievement of CANDE, in my opinion, is its multi-processing abilities. CANDE was designed to handle dozens of users at once. Yet there was no way that you could run dozens of editing tasks on a B6700 in 1973 (for an affordable price, that is) all at the same time and get any kind of decent response. To avoid the overhead of task processing, all CANDE users share a small set of “worker” stacks. These stacks are called grind stacks because the internal name of the procedure in SYMBOL/CANDE that handles them is GRIND. These stacks continually swap user activities in and out such that each user gets the illusion that he is the only one using the system. The authors of CANDE, in effect, developed an editor that is also a transaction processor. In fact, it is a better transaction processor than many of the on-line systems in use today. CANDE enters a dialog with its users, a feat that is next to impossible in your traditional COMS transaction processing environment.1 What’s even more amazing is that the authors of CANDE invented all of this back in the days when transaction processing was just a figment in the imagination of the most advanced computing scientists. But that’s not all! To top off these achievements, they completely integrated the editor within the command processor (or “shell”). This was a major innovation.2 With an integrated editor, users are freed from having to “run” an editor every time a file needs some dinky change. This greatly improves individual productivity and significantly reduces machine overhead for everyday editing work. The CANDE editor itself was reasonably advanced for its time. Having a standard editor meant that users could go from one B6700 to another and not require retraining. Having a quality editor meant that there was little incentive to write other editors — editors that would muck up the system by firing off a task each time they were used and requiring the enormous overhead of one stack per user.3 Thus, the authors of CANDE gave the B6700 — and now the A-Series — audience a working environment that was years ahead of its time. To be sure, CANDE does have its limitations, such as the 255-user limit. These limitations descend from the original partial word definitions that enabled CANDE to run in a tight memory environment. Now the memory constraints are gone, but the partial word definitions are integrated throughout the software in so many places that it is difficult to change them.


2 \ Gregory’s A-Series Technical Journal Despite these limitations, the basic genius behind CANDE continues to shine. This makes CANDE an extremely popular product amongst A-Series customers and a valuable resource that Unisys continues to enhance and maintain. In the Mark 4.1 software release Unisys has made major improvements to CANDE. This series of articles is devoted to describing these enhancements and showing how to use them effectively. In some cases — particularly the article on the FILES command — we have what is presently the only accurate description of how the features work.4 This series is broken into six principal parts, as follows: Part One describes the new features related to the CANDE editor. The emphasis is on page mode editing. The new features described include the FIND:PAGEMODE command, horizontal scrolling within page mode, and how to edit files containing non-printable characters. Parts Two through Six describe enhancements to the CANDE shell commands. Part Two describes the startup and automatic restart features you can use in a CANDE session. These are not new with Mark 4.1. They are, however, extremely useful features, and they came out after our CANDE Primer was published. Therefore, we have included an article on them as the first of the “shell” articles. Part Three discusses the FILES command: both the new reporting features and the wildcard searching features. The enhancements Unisys has made here are simply outstanding. Once you find out about them, you will never use the LFILES command again for the rest of your life!5 (You will also be able to return those sneers from the Unix crowd.) Part Four presents the enhancements to the DO command, particularly the parameters feature. Part Five presents the on-line help facility. Part Six wraps up the shell enhancements by describing the “one liners” — miscellaneous changes that improve existing commands. These articles are intended for A-Series users who are already familiar with CANDE. There is a certain amount of terminology relative to CANDE that the reader should be aware of. If you are not, this information is available in the book The Complete CANDE Primer, from Gregory Publishing Company.6 That book introduces the concepts of “page mode” editing and presents the other standard functions of CANDE. In addition, we also have an updated article for CANDE site administrators. We previously published an article on how to manage CANDE in the February 1988 issue of the A-Series Technical Journal. Now we have updated that article to the SSR 41.2 level of CANDE and included it in the October 1995 issue. There are a number of new options that every site administrator needs to be aware of when supporting CANDE. If you have never looked at your system options relative to CANDE, you will want to review this last article closely. You may be missing out on quite a lot that CANDE can do! Unisys has made some amazing changes to our venerable workhorse. It is impossible to do justice to these changes in a few pages of documentation. While reading about these enhancements, you really must try them out yourself on your terminal. Once you are familiar with them, you will wonder how you ever lived without them!
Dialogs are extremely difficult in COMS transaction processing environments because you must save user “state” information from the time the response is sent until the next input is received. This is a problem in COMS that still has no acceptable solution.
1 2

I don’t know of any other vendor who had this feature until Borland provided it with Turbo Pascal in 1984.

Several attempts have been made to “improve” on the CANDE editor. Two were tried by Unisys: a product from the Mission Viejo plant called the Editor, and another product from the Tredyffrin plant originally called A Better Editor but later changed to Intelligent Distributed Editor (IDE). Both of these fail in the most crucial area: you must fire up a task to use the editor. (In the case of IDE, you fire up a task and a bunch of libraries as well!)

That may change if I ever get around to submitting a few UCFs. I found the documentation on the FILES command in the Unisys CANDE Operations Reference Manual (release level SSR 41.2) both confusing, inaccurate, and contradictory. The information presented in our article, on pages 9-205 – 9-221, has been tested for accuracy using the software.

Volume 9.06

CANDE: Enhancements to Unisys’ Venerable Workhorse / 3

One person to whom I showed the reporting features commented that at last it was possible to get the file attributes in a report that you could read!
5 6

Gregory, Donald J., The Complete CANDE Primer, Gregory Publishing Company, 1986.

September, 1995

PAGEMODE generates a completely different type of report. There is also a variation of TEXT called TEXT.. you already know that they do not use sequence numbers for identifying lines. if any.06 . You can search for some text that you know is at or near the location where you want to start working. This modifier pair returns the same report but formats it in page mode format — i. you typically have the following choices: • • • You can manually scroll through the file until you find the spot where you want to start working. where your target text is located. CANDE sends you a full screen of text for each “hit” in your workfile. Page mode editing turned the line-oriented. Use the NEXT.commands to move back and forth through the file. To jump to a specific place in the workfile: Use PAGE <sequence number> to display a screenful of workfile lines beginning with a specific one. You may edit any of the lines on the screen and then transmit the entire page back to apply those changes to the workfile.e. as follows. The “hits” are reported using LIST statement formatting. It is used in place of the modifier TEXT. and . The TEXT modifier gives you a series of single line reports listing only those lines. With some editors. By selecting an initial line number. To begin page mode editing on a workfile. but it is not very useful for editing. This brings up the first screenful of data on which you can begin working. Use the PAGE command. to display the first screenful of lines from the workfile. Then you could edit anywhere on the page and transmit back all or any portion of those lines to update your workfile. All three methods present you with a page of text from your workfile. Only lines containing the target text are returned. append the modifier PAGEMODE to your FIND command.4 gave us CANDE page mode editing. In this case. However. you could display a screenful of text on your terminal. you can edit any of these lines and transmit the entire set. using sequence numbers that are zero-filled on the left-hand side and with no additional spacing between the sequence number and the text. To locate the area in your file that you want to edit. To use it.4 \ Gregory’s A-Series Technical Journal CANDE: Editor Improvements ark 3. “intelligent” terminals. you enter a PAGE command. If you have worked with many PC-based editors. back to CANDE to apply changes to your workfile. you can “jump” to a location some percentage of the way through the file. This may be useful for viewing. it builds upon one of the oldest premises of CANDE editing: that lines are identified for editing through their sequence numbers. Invoking Page Mode with FIND Basic Operation The PAGEMODE form of FIND combines the features of the FIND command with those of the PAGE command to produce a very slick locate/display/edit system.PAGEFORMAT. or any portion thereof. TTY-based CANDE editor into a full-screen editor capable of working with most multi-line. To display a page of lines by locating some text: Use a FIND command specifying the PAGEMODE option. 2. Thus. +. To sequentially scroll through the workfile: 1. with no <sequence number>. You see the line containing your search target surrounded by its neigh Volume 9. CANDE now provides equivalents to all three of these options. The PAGE command requires a sequence number which tells CANDE where in your workfile that “first screenful” starts.

. 30. 10017000 END#.. 1995 .TITLE. 10382000 CLOSE (FILEREPORT. this shows you how the variable is used in the program.*. and the cycle continues. When you transmit the page (or a portion thereof) back.PA #WORKFILE SYM/FINDWARNINGS 10016000 WRITE (FILEREPORT. 30.. 10020000 FILEREPORT 10207000 WRITE (FILEREPORT.*. OUTBUF). 10025000 % User is to file-equate TITLE. you would have to save your “hit” list on one page of the terminal and execute a series of PAGE commands on another page of the terminal. You may edit any of the lines on the page. 10221000 % FILEREPORT sorted by warning number.... Switch back to the page of text (or to another page)....1.. 10022000 MAXRECSIZE=30. OUTBUF). 10016000 WRITE (FILEREPORT. CRUNCH). FLEXIBLE.*. OUTBUF). AREASIZE=504. if found. 10280000 OPEN(FILEREPORT). Determine the starting sequence number of the next hit. 10277000 OPEN(FILEREPORT). 30. 30. To illustrate this. If you want to alter some or all of the references.. Switch back to the page with the FIND report. return another full page of text... SAVEFACTOR=30). For example: FIND /FILEREPORT/:T.. 10239000 WRITE (FILEREPORT. PAGE 10016000 NEXT+ . 10024000 FILEUSE=OUT. 30. OUTBUF). 10390000 CLOSE (FILEREPORT.*. you could use the PAGEFORMAT option instead. FRAMESIZE=48..4. your editing is limited to just those lines containing the text FILEREPORT.TITLE. 10239000 WRITE (FILEREPORT.CANDE: Editor Improvements / 5 boring lines and formatted for page mode style editing. A typical sequence might be:1 FIND /FILEREPORT/:T Receive the first report shown above. CANDE will search for the next occurrence of your target and. OUTBUF). 30.. 10264000 REPLACE ETEMPTITLE BY FILEREPORT. NEWFILE=TRUE.. # As a simple report. September. Suppose that you want to find all references to the variable FILEREPORT in the file SYM/FINDWARNINGS. 10020000 FILEREPORT 10207000 WRITE (FILEREPORT... PAGE 10020000 The page beginning at line 10020000 is returned. first consider the familiar FIND statement that just reports lines containing your target. however. BLOCKSIZE=420. 10280000 OPEN(FILEREPORT). 10382000 CLOSE (FILEREPORT. This continues until all of the “hits” have been displayed.5.. # In this case.*.. 10023000 AREAS=50... CRUNCH). CRUNCH). 30.....2. 10026000 TEMPFILE Edit and transmit changes. A new page of text is returned.. 10277000 OPEN(FILEREPORT). OUTBUF)... 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK. CRUNCH). 10221000 % FILEREPORT sorted by warning number.. Switch to a different screen page.3. 10264000 REPLACE ETEMPTITLE BY FILEREPORT. The results would be: FIND /FILEREPORT/:T #WORKFILE SYM/FINDWARNINGS 10016000 WRITE (FILEREPORT. 10390000 CLOSE (FILEREPORT.. OUTBUF). To do page mode editing using either of these FIND commands.

OUTBUF). As described so far. 10026000 TEMPFILE 10027000 (KIND=DISK. 10023000 AREAS=50..1.... AREASIZE=432..*... 10030000 FILEUSE=OUT. 10017000 END#. Note the screen returned.*..6 \ Gregory’s A-Series Technical Journal The new PAGEMODE option reduces this all to a single command for you.. 10025000 % User is to file-equate TITLE. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK. BLOCKSIZE=420. 10024000 FILEUSE=OUT. and move on to the next section containing the target immediately..*. FRAMESIZE=48. Transmit from here.. 10025000 % User is to file-equate TITLE...... BLOCKSIZE=420.... To view any lines prior to that line.. Adjusting the View When editing it is generally useful to see lines that are both before and after the target text....*.. NEWFILE=TRUE......3. FLEXIBLE..1. NEWFILE=TRUE....*. When finished.2... 10029000 AREAS=50...4... AREASIZE=504..5. 10024000 FILEUSE=OUT.. BLOCKSIZE=420.. For example: FIND /FILEREPORT/:P +FIND ...... FRAMESIZE=48..*. 10020000 FILEREPORT 10021000 (KIND=DISK.. FLEXIBLE.. 30... There are no more unwanted screens of output... 10023000 AREAS=50. CANDE will apply the edits to your workfile and then seek out the next occurrence of your target in the file.. the FIND:PAGEMODE command will give you a page mode display with your target line positioned in line 2 of the screen. FRAMESIZE=48.*. CRUNCH)#..... such as -4 Volume 9.. 10016000 WRITE (FILEREPORT.4..4. you have to break out of the FIND sequence and use a “-” command. 10017000 END#.. Thus. FRAMESIZE=48. Instead. CLOSEREPORT = CLOSE (FILEREPORT... there is no need to save a hit list aside and constantly shuffle between screen pages to figure out where in the workfile you want to go next.. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK.06 ... 10026000 TEMPFILE You may edit any of the lines on the screen. 10022000 MAXRECSIZE=30. you can now locate target text. SAVEFACTOR=1).... AREASIZE=504..... This is not the next page in the workfile that follows the last transmit point.. SAVEFACTOR=30).*.. it begins with the next occurrence of the search target in line 2 of the screen. 30. SAVEFACTOR=30)... BLOCKSIZE=420.*. For example: +FIND ... 10016000 WRITE (FILEREPORT. OUTBUF). edit lines that are around it.... This makes your target line the first editable line on the screen.*. 10022000 MAXRECSIZE=30..1. transmit from any place following your last edit.*.3. And.2. FLEXIBLE. 10023000 AREAS=50....5.2.*. The command FIND /FILEREPORT/:P locates the first reference in your workfile to “FILEREPORT” and displays that line in line 2 of the screen.. The workfile lines after that line follow in normal page mode fashion... NEWFILE=TRUE....*. FLEXIBLE.. returns: +FIND .*..3. AREASIZE=504. 10028000 MAXRECSIZE=35.*. CANDE handles the editing and moving all automatically for you. 10022000 MAXRECSIZE=30.5..

... you can follow the PAGEMODE modifier with the keyword DOWN to adjust the report so that the target line appears anywhere (except on line 1. and it must be a number between 0 and the maximum page size.2.. Note that if there are insufficient lines in the workfile to fulfill the DOWN request. 1995 .. 10017100 10017200 CLOSEREPORT = 10017300 CLOSE (FILEREPORT......*.. 10006000ARRAY PARAM[*]. For example. Then simply transmit to move on to a screen containing the next occurrence of the search target. 10018000 10019000FILE Compare this response to that shown previously.. 10000000$ LEVEL 2 10001000COMMENT: 10002000 Program to report all files on the system having 10003000 de-implementation warnings against them.2.*.... 10006000ARRAY PARAM[*].. less 2.. 10007000BEGIN September. 10004000 ... The <integer> denotes the number of lines the target is moved. 10005000PROCEDURE FINDWARNINGS(PARAM). In this case.*.. Target Line..*...*...........*. CANDE will preserve your DOWN specification and automatically apply it to all subsequent pages returned during this search. An example command would be: FIND /FILEREPORT/:P D 4 This command causes the line containing the target to be displayed on line 6 of the screen..3... OUTBUF)..*. 10015000 REPLACE OUTBUF BY MSG.1......4.. 10017000 END#. The syntax for doing this is: FIND <delimiter><target><delimiter> : PAGEMODE DOWN <integer> This instructs CANDE to position the line containing the target text zero or more lines “down” the screen from line 2..*. 10012000 WRITEDISK (MSG)= 10013000 BEGIN 10014000 REPLACE OUTBUF BY " " FOR 30 WORDS. 10005000PROCEDURE FINDWARNINGS(PARAM).... so you can really see it in full context...*. The response is: +FIND .. it is ignored.3. 10004000 ....3.1. The page size of a terminal is determined by the PAGE option of the TERMINAL command.1..... each screen returned would have the line containing “FILEREPORT” in line 6 and include 4 lines before the target line....*... the file SYM/FINDWARNINGS begins thusly: NEXT+ ." If we use the command: FIND /FINDWARNINGS/:P D 10 the response will be: +FIND .*..... This version gives you a number of lines both before and after the search target. you may optionally edit any of the lines on the screen. Fortunately... 10000000$ LEVEL 2 10001000COMMENT: 10002000 Program to report all files on the system having 10003000 de-implementation warnings against them. Most screens have a page size of 24 lines. so in these cases the <integer> must be a number between 0 and 22..*. 10016000 WRITE (FILEREPORT.... 30... CRUNCH)#.*...... Again.*.... When you move on..5.. where the target appeared on line 2 of the screen..2.5.4..*.5... 10007000BEGIN 10007050$$ SET ALLSCANDEFINES 10007100$$ INCLUDE SCANDEFINES = "INCLUDE/SCAN/DEFINES.CANDE: Editor Improvements / 7 to back up and see any prior lines. of course) on the screen..... of the screen....4..

Thus. 10020000 FILEREPORT 10021000 (KIND=DISK. +FIND tells CANDE to search your workfile and locate the next line which contains the target specified by the most recently entered FIND command.. The appearance of both commands is illustrated by the screen examples given previously in this article. FLEXIBLE. FLEXIBLE.8 \ Gregory’s A-Series Technical Journal 10007050$$ SET ALLSCANDEFINES 10007100$$ INCLUDE SCANDEFINES = "INCLUDE/SCAN/DEFINES.... with no other text. 10029000 AREAS=50... the current line is the line containing the hit that was most recently displayed. such as a sequence range. 10017000 END#. column range.. The current line defines the starting point for the next search. 10022000 MAXRECSIZE=30.. The new +FIND Command Now let’s examine in more detail how CANDE moves from one “hit” to the next through your workfile. When working sequentially through the file (by starting with the PAGE command). AREASIZE=504. When using the search and display technique (via FIND:PAGEMODE)...... SAVEFACTOR=30)..5. FLEXIBLE. 10026000 TEMPFILE then if we transmit just: +FIND with nothing else.. Whenever you enter +FIND." There are not 10 lines ahead of the target line in the file. AREASIZE=432. FRAMESIZE=48.. If you enter +FIND by itself..3... this command is NEXT.. In this case..... SAVEFACTOR=1).*.... OUTBUF)..*. 10025000 % User is to file-equate TITLE. NEWFILE=TRUE.*.. If you attempt to use a DOWN size that exceeds the page size of your terminal....*. this command is +FIND.. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK.4. FRAMESIZE=48. 10026000 TEMPFILE 10027000 (KIND=DISK.5.. 10023000 AREAS=50.4... BLOCKSIZE=420. SAVEFACTOR=30). CANDE begins searching. Volume 9.. with the line following the “current line”. and the FIND will not be done... so the DOWN request will be ignored. 10016000 WRITE (FILEREPORT. Line 1 of this page contains a command that CANDE must receive in order to properly interpret your page of input... searching resumes with the next line in the workfile.3. CANDE returns a full page of text to your screen for editing. FRAMESIZE=48. When you first enter page mode..*. for the next occurrence of the search target.*. CANDE will generate an error message.. CANDE saves that target (and any other options. Similar results are obtained if the DOWN request is larger than the entire size of the file. A file with 2 records cannot support a DOWN 10 request..... 10024000 FILEUSE=OUT..... 10023000 AREAS=50. so the DOWN request is ignored.. AREASIZE=504. 10030000 FILEUSE=OUT. 10028000 MAXRECSIZE=35..*.1.*.2. and DOWN request) aside for future reference. if we enter: FIND /FILEREPORT/:P and get the response: +FIND . the response will be: +FIND .2. BLOCKSIZE=420.. 10025000 % User is to file-equate TITLE. NEWFILE=TRUE.1..06 . 30.. BLOCKSIZE=420..*.. 10022000 MAXRECSIZE=30...... 10024000 FILEUSE=OUT. NEWFILE=TRUE.. Each time you enter a FIND command.*.

2...1.*..... This rule applies whether or not workfile changes are included in the lines transmitted. 30. searching will resume with the first line in the workfile which follows that page. you cannot back up... CANDE will resume the search at line number 10022000. ... 10017000 END#... FLEXIBLE..4... 10016000 WRITE (FILEREPORT. 10023000 AREAS=50.3. You can change the DOWN request on any +FIND command. 10017000 END#. 10022000 MAXRECSIZE=30...*..*.. BLOCKSIZE=420. 10016000 WRITE (FILEREPORT..*.. You can skip over as many occurrences of your target as you want. SAVEFACTOR=30)..5... so searching resumes at the line which follows it. OUTBUF)... OUTBUF). AREASIZE=504.*.. CANDE moves to the next line containing the target — a line we had previously seen. BLOCKSIZE=420.*. September.. you can use the command: + <integer> FIND The <integer> denotes the number of occurrences you want to skip. AREASIZE=504. For example: FIND /FILEREPORT/ :P D 4 +FIND ..*. If you want to skip over some occurrences of your target..... note that there is no -FIND command. For example. 10018000 10019000FILE Transmit from here...... if you transmit back the entire page.. 10024000 FILEUSE=OUT.*.5. 10025000 % User is to file-equate TITLE... You will have to start over or use the other page mode commands to locate a target you’ve skipped. 10015000 REPLACE OUTBUF BY MSG... 1995 Target Line. FRAMESIZE=48.*.. The new DOWN request is applied to all subsequent +FIND commands..5. The syntax is: + FIND DOWN <integer> As mentioned above...2..... If you transmit +FIND followed by any number of data lines...... if you are viewing a page that contains three occurrences of your target (the original “hit” plus two others). the “current line” becomes the last line transmitted.*.. CLOSEREPORT = CLOSE (FILEREPORT..2. Thus. 10022000 MAXRECSIZE=30.. FRAMESIZE=48...*.. The last line transmitted is line number 10021000. the DOWN request supplied with the original FIND command is automatically applied to all subsequent +FIND commands until a new FIND command is entered.....3.. 10012000 WRITEDISK (MSG)= 10013000 BEGIN 10014000 REPLACE OUTBUF BY " " FOR 30 WORDS..3.. 10026000 TEMPFILE Now you make some changes and end up transmitting: +FIND . +FIND DOWN allows you to change the DOWN request without respecifying the target or starting the search over. 10023000 AREAS=50....1.... 30... assume again that you are starting with: +FIND . However. Therefore.CANDE: Editor Improvements / 9 Even though the search target appeared twice on the initial screen.*.... 10020000 FILEREPORT 10021000 (KIND=DISK..*..1..*. FLEXIBLE.. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK.4..*. NEWFILE=TRUE..... In this case you “skip over” any hits that occur between the old “current line” and the last line included in the transmission.. you can skip over the two on the screen and locate the next hit beyond them in the workfile through the command: +2FIND The occurrences you skip over do not have to be already on the screen.... CRUNCH)#.. so if you miss one that you wanted..4..

10017000 END#. 10026000 TEMPFILE 10027000 (KIND=DISK.*. At the same time..*..*. Thus. Fortunately.. BLOCKSIZE=420. AREASIZE=504. Unlike a PC.. The same comparisons are performed. NEXT+ instructs CANDE to move on to the next sequential page of text in the workfile. it can determine with a high degree of accuracy what changes the user intended to make to his file. Through this comparison... using the sequence numbers as a reference. +FIND also tells CANDE to expect a screenful of input.. 10028000 MAXRECSIZE=35. 10023000 AREAS=50. Moreover. FRAMESIZE=48. 10022000 MAXRECSIZE=30. 10024000 FILEUSE=OUT... You can use either of the options of +FIND described above in a single command... For maximum flexibility. The complete syntax for +FIND is: + < skip count> FIND DOWN < integer> As this diagram illustrates. 30.. FRAMESIZE= . You should be able to interrupt a search and step sequentially when that it necessary. FLEXIBLE.10 \ Gregory’s A-Series Technical Journal 10016000 WRITE (FILEREPORT. CANDE returns that display headed by the command NEXT+.. 10022000 MAXRECSIZE=30. OUTBUF). 10018000 10019000FILE 10020000 FILEREPORT Target Line.. When that page is transmitted back.. When this is transmitted back. +FIND instructs CANDE to move on to the next occurrence of the search target rather than moving to the next sequential page of text.2.2 After the comparison has been done. However. and any changes have been applied... as desired. although CANDE does not have the ability to see the individual keystrokes. All subsequent +FIND requests will use a DOWN specification of 2 as the search progresses through the workfile.. CANDE does not have the luxury of interpreting each individual keystroke entered by the user... the NEXT+ tells CANDE to expect a screenful of input lines in a single transmission.. NEWFILE=TRUE. when progressing through a workfile. BLOCKSIZE=420. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK. at any point in the workfile. CANDE fully supports the ability to do both! Volume 9.. BLOCKSIZE=420. 10021000 (KIND=DISK. 10025000 % User is to file-equate TITLE. CANDE must determine what the user wants based upon the command submitted on line 1 and the text entered on lines 2 through the end of the transmit.. after interrupting it.. CANDE must deal with the limitation that it receives inputs as complete screenfuls of data. CANDE determines the intended edits and applies them to the workfile.. SAVEFACTOR=30).. When you display a page of text using the PAGE command.*. you must be able to switch modes. +FIND DOWN 2 +FIND . CANDE compares the lines sent in against the current ones in the workfile.*.5. you should be able to resume a search. When you display a page of text using the FIND:PAGEMODE command. Mixing Editing Commands The idea behind page mode editing is to make it as visual and an intuitive as possible to edit your file..... FRAMESIZE=48.4. you can skip occurrences and change the DOWN specification in a single command. and any changes are applied against the workfile. CANDE returns that display headed by +FIND...

*.2.*..*.. OUTBUF).... CRUNCH)#..... 10025000 % User is to file-equate TITLE... 30.. For example..*..... This will switch you over to sequential page mode processing.....*. When you want to resume searching after that.2... and transmit just that command.. 10017000 END#. 10026000 TEMPFILE +FIND . NEWFILE=TRUE..... FRAMESIZE=48. type a +FIND as the last (or only) input line. OUTBUF).... transmit a page mode command (SAME.... 10017100 10017200 CLOSEREPORT = 10017300 CLOSE (FILEREPORT.. 30..3...*.1..... you can alternate. CRUNCH)#. NEXT-.. For example: FIND /FILEREPORT/ :PAGE +FIND . SAVEFACTOR=30)....... CANDE will resume searching for the next occurrence of the target. 10022000 MAXRECSIZE=30.5. 10016000 WRITE (FILEREPORT.....*.. 30... 10016000 WRITE (FILEREPORT.*. 10016000 WRITE (FILEREPORT. OUTBUF).. If you switch by transmitting +FIND from the top line of the screen. 30.3. at any time. FLEXIBLE.....1... In this manner. 10022000 MAXRECSIZE=30.....*. 30.CANDE: Editor Improvements / 11 You have the option... 10024000 FILEUSE=OUT... FLEXIBLE....*... OUTBUF)... between sequential page mode and searching page mode.*.. 10017000 END#. 10017100 September. 10016000 WRITE (FILEREPORT. For example: +FIND . When you switch between sequential mode and searching mode. CANDE will resume searching with the workfile line that follows the text in line 2 of the screen.. 1995 Transmit here... OUTBUF)...2.... as needed. The screen you get back is then: NEXT+ .*...3. type a +FIND at the top of the screen.*.... 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK... etc. 10017100 10017200 CLOSEREPORT = 10017300 CLOSE (FILEREPORT.. CANDE still tracks a “current line” so it has a defined place to resume searching... AREASIZE=504.. For example.4.4...4.. Note that now you have “NEXT+” at the top of the screen. FRAMESIZE=48. You could also enter some edits (with NEXT+) at the top of the screen and type your +FIND as the last input line..*.. 10017000 END#...*.1. if you want to edit more lines around your target than appear in the initial report.1...4.*.. if you transmit: NEXT+ .*...4. Transmit from here......5..5. CANDE will resume searching with the line that follows the last line transmitted prior to the +FIND.. 10018000 10019000FILE SAME Type the word SAME on the last line and transmit from there.*.... CRUNCH)#..1.3.....5.2.*.....*..*... If you switch by transmitting +FIND from somewhere else on the screen........*.) as the last (or only) input line.. CLOSEREPORT = CLOSE (FILEREPORT.. In either case....*.. 10016000 WRITE (FILEREPORT... 10017000 END#. BLOCKSIZE=420....2.3. . 10023000 AREAS=50... 10023000 AREAS=50..5. To switch back into search mode.. 10017000 END#. to switch between +FIND and traditional page mode operations.. 10018000 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK... BLOCKSIZE=420.*.*... AREASIZE=504..

+. -. CANDE will respond to your +FIND command with the message [sic]: #NO MORE OCCURENCES OF TARGET If you back up in the workfile.12 \ Gregory’s A-Series Technical Journal 10017200 CLOSEREPORT = 10017300 CLOSE (FILEREPORT. searching will resume from that point in the workfile. Thus. you will appreciate the PAGE DOWN command. The options for specifying a <sequence range> are: <sequence number> – <sequence number> and: <sequence number> – END When this option is used. and it continues through the last line that has a sequence number less than or equal to the second <sequence number>. it is ignored. If you then enter a +FIND command. paging stops with the message: #DISPLAY COMPLETE The <sequence range> is only in force so long as you continue to transmit NEXT+ commands. After the last line is displayed. If you’ve ever had to enter a sequence such as: PAGE 10050000 -5 (where the negative number is any number between –1 and –22). For example. saving you one unwanted page of output.— the <sequence range> limit is Volume 9. you can back up and search again without repeating the original FIND command. PAGE 10050000 DOWN 5 gives you a page of output beginning 5 lines before line number 10050000 in the workfile. that will move your “current line” back. reusing your previous target and DOWN request. by entering a PAGE. the output begins 5 lines before the first line with a sequence number larger than the requested one. If you transmit any other page mode command — such as SAME. If the requested line does not exist. The syntax is: PAGE <sequence number> DOWN <integer> This command combines the PAGE and “-” commands into a single command. 10018000 +FIND 10019000FILE 10020000 FILEREPORT 10021000 (KIND=DISK.06 . or even NEXT. CRUNCH)#. Improvements to Page Mode Editing Offset Paging The DOWN feature is also available in the PAGE command as well.or . NEXT. Range Paging You can apply a <sequence range> to a PAGE command in much the same manner as you can to a LIST command. even after you’ve reached the end of the workfile. The End of a Search After the last target has been found. paging begins with the first line having a sequence number greater than or equal to the first <sequence number>.command. CANDE will resume searching at line number 10019000. If there are not enough lines in the workfile to satisfy the DOWN request.

Horizontal Scrolling Page mode editing was originally constrained on two fronts: • • the width of the terminal. Note that PAGE END. have an 80character text area.4. This command displays the last page of the workfile..*.command.. blank space is left on the right-hand end of the screen. any command other than NEXT+ will break the limit and return you to normal (entire file) paging.. CDATA.. You can then move backward as desired..*.7. for example.. 1995 .. The syntax is: PAGE @ < single column> < start column> . you have four possible <column specification>s: @ <single column> @ <start column> – <end column> @ + <number of columns> @ – <number of columns> Suppose you have a job file and you want to edit text in columns 31 through 80.. If you have a data file with records larger than 72 characters.CANDE: Editor Improvements / 13 dropped. Again.... CANDE page mode has no problems editing files in this category. JOB files. has always been available. Each line.*.. COBOL files only have a 66-character text area... CANDE will edit these files up to a 255-character line length.*.. Some are smaller.8 00001000UEUE=2.. with the 4.*. DATA..6.. Thus.. sequence number included. without any <sequence number> or range. so this is not a problem in the majority of cases. the length of the text portion of a file.. until recently. You can make changes to your workfile while operating within a <sequence range>. page mode editing was restricted to the first 72 columns of each record alone.5.. There are also file types which have text areas that exceed 72 characters.. such as all file types that belong to the COBOL family. and CSEQ files allow text areas of varying lengths.or . and you can page forward to the end of the file..1 enhancements.. 00002000 September.. only uses up 72 characters. When you display a COBOL file in page mode. However.... However. Displaying the sequence number leaves only 72 spaces on each line for the edit area.. Some file types do not have a 72-character text area.. This syntax simply eliminates an annoying error message that used to occur if you habitually typed in <sequence number> . you can adjust the view to display the column range that you want by adding a <column specification> to your PAGE command. Most of the A-Series file types use 8-digit sequence numbers. The standard terminal has an 80-character line width. The result would be: NEXT+ . you can display and edit any 72-character column range in your file. Specifying END on the <sequence range> is really no different than using the original PAGE command: PAGE <sequence number> You can still back up from your starting location by using a NEXT.END because you were used to the LIST command.< end column > + < number of columns > Everything following the at sign (@) is part of the <column specification>. You could use the command: PAGE @31-80 This would display just columns 31 through 80 of your job file for editing. Most of the standard file types have a text area of 72 characters. Now. the limit will only stay in effect if you use strictly NEXT+ to move from screen to screen.

.. and these changes will be incorporated into your workfile..... Now you can view and edit those sequence numbers in page mode.<number of columns> adjusts the current view to a lower-numbered column range.14 \ Gregory’s A-Series Technical Journal 00003000 00004000 00005000IC96 00006000 00011000 00012000 00013000 07 00014000 17 00015000 27 08 18 28 09 19 29 0A 1A 2A 0B 1B 2B 0C 1C 2C 0D 1D 2D 0E 1E 2E 0F 1F 2F 00000100 00000200 00000300 You can make any changes to the displayed text... But this is where the all-important sequence numbers have to be written when compiling a merge deck against an ALGOL (and most other language) program.... Note that this gives you a means of editing 80-column <data deck>s in your job files.*... we could enter: Volume 9.... For example: PAGE @31-80 NEXT+ .........6. if you are displaying just columns 31 through 80 of a job file. as shown above.SSSSSSSS 00001000 00001000 00002000 00002000 00003000 00003000 00004000 00004000 00005000 00005000 00006000 00006000 00011000 00011000 00012000 00012000 0001300009 0A 0B 0C 0D 0E 0F 0000010000013000 0001400019 1A 1B 1C 1D 1E 1F 0000020000014000 0001500029 2A 2B 2C 2D 2E 2F 0000030000015000 The final display is of columns 41 through 90 of the workfile.*...4..8 00001000UEUE=2. The <number of columns> value is subtracted from the number of the leftmost column to determine the first column of the display.*....06 ..) CANDE does not wrap the excess text onto a continuation line.. it is truncated by CANDE to fit the line width.*.5.. Previously.3 @ + <number of columns> adjusts the current view to a higher-numbered column range..*...*.5. @ <start column>-<end column> displays any selected range of text.*.. the data in columns 1 through 30 is unaffected by any changes you transmit... Therefore. as specified by the TERMINAL command. @ <single column> displays only a single column of text..6.. If the range exceeds the editable line width of the terminal. Data in columns not shown is not changed by CANDE..*. The range may go from a single column up to the width of the screen. Continuing the above example.. The four <column specification> options give you a variety of ways to choose your column display. columns 73 through 80 were not viewable through page mode. 00002000 00003000 00004000 00005000IC96 00006000 00011000 00012000 00013000 07 08 09 0A 0B 0C 0D 0E 0F 00000100 00014000 17 18 19 1A 1B 1C 1D 1E 1F 00000200 00015000 27 28 29 2A 2B 2C 2D 2E 2F 00000300 PAGE @+10 NEXT+ .8...4 The <number of columns> value is added to the number of the leftmost column to determine the first column of the new display..7. (The editable line width is the line width....*. @ .. minus the space used by the sequence numbers..7.....

.... the Mark ID field.*.4. you can bring the other fields into your screen. That default is columns 7 through 72 for the COBOL family of files. To cancel the <column specification>..*..5.5. September......SSSSSSSSMMMMMMMMMM 10000000 10000000 10001000 10001000 10002000tem which have 10002000 10003000ainst them.. The CANDE editor’s principal function is to edit the text portion of a file. we will get: PAGE @41-90 NEXT+ ... +.. These rules are: 1..*.*... SAME. you can do so using the RESEQ. the entire field is treated as a user text field.. -. FIND:PAGEMODE.. the sequence number. Therefore. For example. 10003000 10004000 10004000 10005000 10005000 10006000 10006000 10007000 10007000 10007050 10007050 10007100EFINES. Horizontal Scrolling vs.. 1995 . as you shift your view through horizontal scrolling.*.. QUEUE=2. 00003000 00004000 00005000 NAME EBCDIC96 00006000 NAME LE 00011000 00012000 0001300004 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0001400014 15 16 17 18 19 1A 1B 1C 1D 1E 1F 0001500024 25 26 27 28 29 2A 2B 2C 2D 2E 2F The final display is now of columns 21 through 70 of the workfile. and 1 through 72 for most all other types of files.... they are ignored.7 00001000NTABLES.*. 6 through 80 for CSEQ files. CANDE retains it until it is canceled or until you change workfiles. MOVE¸ or (if you want to copy it) the INSERT commands... 2.. use: PAGE * This returns your page mode display to the default column range for the file type of your workfile. You cannot change any data in the sequence number field." 10007100 10008000IRECTORY/DEFINES. Sequence numbers are CANDE’s reference points for identifying data records. Special Fields CANDE recognizes that each line of a file is normally divided into three sections: • • • the text portion. and +FIND commands.*. CANDE has two rules which come into play when either of these fields are displayed..CANDE: Editor Improvements / 15 PAGE @-20 NEXT+ . The sequence number field is not editable in order to preserve the data integrity of the workfile. If any part of the Mark ID field is displayed in the edit area..... 00002000GEN.3.. as our workfile and display columns 41 through 90 of it...7.6. even if it is displayed in the edit area.. However.. if we load SYM/FINDWARNINGS.. The <column specification> is applied to all subsequent NEXT... if you make any changes to data in the sequence number field.." 10008000 Both the sequence number field and the Mark ID field are visible in the edit area of the screen..... Once a <column specification> has been applied.6.. an ALGOL program. If you want to change a record’s sequence number..*..

Summary of the PAGE Command The complete syntax for the PAGE command is shown above in figure 1. and columns 81 through 90 are the Mark ID field. This diagram shows the correct order in which the various components of the command must be specified. The non-visible portion is automatically set to blanks. the <es Volume 9. with numbers. Editing Files that Contain Non-Printable Characters You can now edit files that contain records with non-printable characters. columns 73 through 80 of an ALGOL file are the sequence field. Once defined. you can alter the visible portion directly just as you would the text portion. Mark ID action will not resume until you change the view so that no part of the Mark ID field is displayed on the screen. These labels serve as a reminder of where you are working. Use this command to apply or change either <sequence range> limitations or <column specification> views. automatic tagging of the workfile is disabled. For example. The Mark ID field is headed by all M’s. and asterisks. You may also cancel it with the command: MARKID – If you have a Mark ID value set for your session. If you use horizontal scrolling to display any portion of the Mark ID field on the screen.16 \ Gregory’s A-Series Technical Journal PAGE < sequence number> < sequence number> END END DOWN < integer> * @ < single column> < start column> .< end column > + < number of columns > Figure 1 Full Syntax of the PAGE Command The purpose of the Mark ID field is to provide a record of patches to a file. To do this. In this case. any setting by the MARKID command is ignored. Before editing a file. every change you make to your workfile is tagged with that <id> value. you must define an <escape character> which will be used to delimit those characters on your terminal. The display on line 1 of the screen tells you what portions of the file you are viewing. dots. The <id> value is written automatically into the Mark ID field of each line as you alter it. you can establish a Mark ID value for your session through the command: MARKID <delimiter><id><delimiter> You can change this value at any time with another MARKID command. The sequence field is marked by a heading of all S’s. You can tell this from the page mode display of columns 41 through 90 of SYM/FINDWARNINGS on the previous page.06 . If any portion of the Mark ID field is visible. The text portion is marked by the standard column notation.

. The extra space used on your screen is condensed when the data gets stored in the file. choose a character you are not going to use in your file. you have to realize that there is no longer a column correspondence between what you see and what is stored in the file. CANDE only uses a single escape sequence to display them. Escape character editing is available in both line mode editing and page mode editing. If you display a line with two or more non-printable characters adjacent to each other. The characters in between must be valid hexadecimal characters (i. September. Moreover. each occurrence of a single non-printable character in the file is displayed thusly: <ec><sp><hex pair><sp><ec> where <ec> is the <escape character> and <sp> is a blank space. if you’ve entered: ESC HEX = % and then you list a file containing the line: %%%% Heading One %%%% you will get: 100 %%%%%%%% Heading One %%%%%%%% Each per cent sign is doubled in the display. When you have an <escape character> defined. The nonprintable characters themselves will be displayed using two-character hexadecimal codes. listing this same line will display (on a TD830-compatible terminal): 100 Use these| instructions: and the word these will be blinking at you. you must use the character in pairs. 0 – 9 and A – F. For example. For best results. For example: 100Use !18!these!1E! instructions: CANDE interprets the “18” and the “1E” in this line as being the EBCDIC characters CAN and RS. each pair of per cent signs that you transmit back is reduced to a single per cent sign when stored in the file. The basic syntax is: ESCAPE HEXADECIMAL = <special character> For example. Then you will be spared some rude potential surprises. The second denotes the end of that sequence. For example. The first use denotes the start of a hexadecimal sequence. ESC HEX = ! Once the character is defined. the line above contained both SUB and CAN prior to the word “these”. When CANDE displays a line containing the <escape character> to you. 1995 . Therefore.CANDE: Editor Improvements / 17 cape character> will appear both before and after each sequence of non-printable characters. if instead of just CAN. use the ESCAPE command. To define an <escape character>. Take care that you do not define a character you want to use in your file as the <escape character>. you must type it twice. you will have to change your habits whenever you want to use a per cent sign in your file. Each non-printable character is displayed as a pair of hexadecimal codes. To use the <escape character> in your file. For example. an escape mode display of the line would return: 100 Use ! 3F 18 !these! 1E ! instructions: The two non-printables SUB and CAN are displayed in a single escape sequence. respectively. listing the above line would return: 100 Use ! 18 !these! 1E ! instructions: If you turn off the <escape character> feature. only upper case A through F are valid).e. and each pair is separated by a space. When working in page mode editing. if you set your <escape character> to the per cent sign (%). it will print it twice.

If you do not.18 \ Gregory’s A-Series Technical Journal For example.. CANDE omits the extra spaces between the hexadecimal pairs...... if you turn off escape mode and then PAGE the file....4..... For example: NEXT+ ..4..2.2.....*. you do not need to use the extra spaces....: ESC HEX NONE #UPDATING #NO ESCAPE HEXADECIMAL CHARACTER DEFINED PAGE NEXT+ ....*. 00000100Use ! 18 !these! 1E ! instructions: #DISPLAY COMPLETE The display shows the text ! 18 ! in columns 5 through 10..... The syntax for specifying this is: ESCAPE HEXADECIMAL = <special character> SQUASHED For example: ESC HEX = ! SQUASHED When SQUASHED is selected........*.4.1.......5.........*..... which may help you out in page mode.*. If you list the file using SYSTEM/DUMPALL. You must always enter your hexadecimal numbers in pairs...... However....*.... In truth. You can reduce the amount of space used by CANDE in the display through the SQUASHED option.*... 00000100Use !3F18!these!1E! instructions: #DISPLAY COMPLETE Now the escape sequences use less space.2..2........ For example. where the response will be: NEXT+ ...1.3...1. Also. you will get a true picture of what column each character is stored in. you will get an error message.5.. 00000100Use these| instructions: #DISPLAY COMPLETE Similarly.*.3..*.....3..06 .*.*..... they are optional..2.......*.*..... 00000100Use !F18!these!1E! instructions: #EVEN NUMBER OF HEXADECIMAL CHARACTERS EXPECTED AT LINE 2 PREVIOUS VALID SEQUENCE NUMBER=0 You will get a similar error if you use a lower-case letter for a hexadecimal character...*.*. if there are two non-printables on the line..*....4.... and the word these is stored in columns 6 through 10. you will see that the character only uses one column in the file. When entering escape sequences into your file.. Always remember to use capitals for the characters A through F........ CANDE will always add them (if SQUASHED is not selected) when returning the line to you.*.. 00000100Use ! 3F 18 !these! 1E ! instructions: #DISPLAY COMPLETE Now the expression covering columns 5 through 13 in the display represents a mere 2 columns (numbers 5 and 6) in the actual file. they are less obvious than they were in the non-squashed mode..*....5. Volume 9..*...*... listing our example line returns: 100 Use !3F18!these!1E! instructions: This feature is most useful when editing in page mode..1.5.3....*.3.4...*.. these 6 columns represent one EBCDIC character that is stored in column 5 of the file...*.. consider: PAGE NEXT+ .. viz..*....5...1...*........ the column numbering will get even further skewed: ESC HEX = ! #UPDATING #ESCAPE HEXADECIMAL = ! PAGE NEXT+ .......

the response is: #NO ESCAPE HEXADECIMAL CHARACTER DEFINED September.CANDE: Editor Improvements / 19 ESCAPE HEXADECIMAL ? . always have an <escape character> of some sort defined for your session. cancel. 1995 . Unless you are absolutely certain that your file does not contain characters that interfere with your communication protocol. use: ESC HEX NONE If an <escape character> was previously defined. that character will be sent to your terminal unfiltered. you can hang your terminal. For example. If you forget what your currently defined <escape character> is. and query the current escape character. that definition is canceled. For example: ESC HEX ? #ESCAPE HEXADECIMAL = ! If no <escape character> is currently defined. is equivalent to ESC HEX NONE Both commands turn off the escape feature. This syntax enables you to set. if you are running on a poll/select line. NONE = < special character> SQUASHED Figure 2 Syntax for the ESCAPE HEXADECIMAL Command The full syntax for the ESCAPE command is shown above. and you send text that contains an ETX (hex 03) character to your terminal. in figure 2. If you display text that contains an unprintable character while the escape feature is turned off. The command ESC HEX . For example: ESC HEX = ! #ESCAPE HEXADECIMAL = ! LIST 100 Use ! 3F 18 !these! 1E ! instructions: # ESC HEX NONE #NO ESCAPE HEXADECIMAL CHARACTER DEFINED LIST 100 Use these| instructions: # Note that it can be extremely dangerous to send unfiltered non-printable characters to your terminal in some cases. To cancel the current escape character. you can determine it through either the command: ESCAPE HEXADECIMAL or: ESCAPE HEXADECIMAL ? Both report the current <escape character>.

If two people are working under the same usercode. it loads said file as an untitled workfile. This problem can also occur when a single user uses multiple CANDE windows. but it will let everyone load the file under its original name. get interrupted. just the warning is given. the GET statement will always assume that you want to do a GET.” If you reset the option. The syntax is: Volume 9. you can proceed to edit the file if you want and save it. load the same file.20 \ Gregory’s A-Series Technical Journal No <escape character> is defined when you start a session. make some changes. The command is: GET <file name>:OVERRIDE This will always load the designated file as your workfile under its original name. For example: GET MYFILE #WORKFILE MYFILE(MAY BE IN USE BY A PROGRAM): SEQ. To reduce the risk of this occurring. this is an extremely dangerous thing to do! For those who thrive on danger. However. You will have to type in :OVERRIDE to load the file under its original name. Unless you are absolutely certain that the other person is not editing the file at all.LSN = 17): SEQ. For site administrators. it is possible to make the OVERRIDE option the default action. Instead. all sorts of problems can occur.:OVERRIDE. Use the SO syntax to either set the option or to set it to the “default. Moreover. DEFAULT. when the SAVE commands are entered to store the changes. If you set the option. It will give you a warning when you load a workfile that is in use. CANDE now gives a warning if you GET a file that someone else has loaded as a workfile. there is a new CANDE runtime option called NOGETWARN. they can both load the same permanent file as a private workfile. but not loaded as anyone else’s workfile.06 . move to another CANDE window. For example: GET MYFILE #WORKFILE IS NOT NAMED. SOURCE IS (Q)MYFILE ON CONTINUUM (IN USE BY PSJC10/CANDE/2. All you have to do is load a file on one window. you can do so with the OVERRIDE option. but now both of you will have the file loaded under the original name. If someone has loaded a particular file as his workfile. you must enter at least one ESCAPE command when you start a new CANDE session. You will still retrieve the file under its original name. you will probably want to immediately discard the workfile and then go talk to the other person who is working on the same file. Protection of your Workfile One of the perennial problems facing CANDE users is the risk of concurrent updating. From SSR 41. 1011 RECORDS If the file is in use by a program. However. the GET statement will not automatically load as your workfile a file that someone else already has loaded. To use the escape feature. and you absolutely insist on loading the same file under its original name as your workfile. 1011 RECORDS In both cases. Changes are applied to each workfile separately. It will still give you the warning. Then you are in the same situation. in most cases. it will load such a file as an untitled workfile. there is a session option available called GETWARN. lets you default to the system-wide default set by your site administrator.2 forward. and make other changes to it.. The syntax for using it is: SO ? GETWARN = SET DEFAULT RO ? GETWARN Use the RO syntax to reset the option. which is set via the ?OP command. The third option.

attempt to load the same file as a workfile. you must either get a different file or execute the command: REMOVE This will delink you from the file. it is now a good idea to always REMOVE a workfile when you are done with it. If you GET a file. that person will receive a warning message as well. If a user sets his GETWARN option to either SET or RESET. Because of this new feature. NOGETWARN only has effect on users who run with their GETWARN session option set to DEFAULT. Range: 0 – 9168 (characters). optionally. These defaults are: ?OP . On a screen device. you should always make sure that those who might be sharing files always work from the same copy. the system-wide default will be equivalent to GET. If you set NOGETWARN. Except for the DOWN and FORMSCAPABLE options. This message is: #YOUR WORKFILE MAY BE UPDATED BY PSJC10/CANDE/3. If you do load a file that someone else is currently working on. Rather. are the safest options.CANDE: Editor Improvements / 21 ? OP + NOGETWARN By default. Buffered means that the terminal can receive and store data locally before displaying it to the user. NOGETWARN is reset. you will remain the user of the file for all of that time. you will still be marked as the user of the file after it is saved. The complete syntax for the TERMINAL command is given in figure 3. To delink yourself from the file. make some edits. Most of the values set by the TERMINAL command should be set by your system administrator to appropriate defaults. continuous outputs will overwrite earlier outputs. (See WAIT. CANDE uses its internal tables to determine if a particular file is loaded as someone’s workfile. each on a different CANDE. It is useful on hardcopy terminals. even though you may not be making any edits to it. the size of the buffer in characters. If you then go out for lunch. and no warning will be given.. it provides various specifications that the editing commands use in handling both input and output with your terminal. Warning! If your site runs two or more copies of CANDE. 1995 . Using this command. as provided by Unisys. and save it. you may provide the following information to CANDE regarding your terminal: Keyword BUFFER Function Denotes that the terminal is buffered and. his selection will override. so you will not see all of a report. If two users.) September.:OVERRIDE. The number represents the maximum number of characters CANDE can send in a single output. In this condition. CONTINUOUS This instructs CANDE to write all outputs continuously. The defaults for both options. neither CANDE will notice the conflict. but it will leave the saved copy safely on disk for the next user.NOGETWARN and SO GETWARN = DEFAULT These cause the GET statement to load a workfile that is currently loaded elsewhere as an untitled workfile. Setting Default Specs for your Terminal The TERMINAL command is not directly involved with editing. the GET statement will not load a workfile under its original name if it is in use by another user. LSN = 18 It is displayed each time someone attempts to load the file as a workfile. you will rarely need to change the defaults provided by the system administrator.

) The standard value is 80.. Setting the value to 2 or higher automatically sets WAIT. If WRAPAROUND is TRUE. this option is always FALSE. and it displays each character as it is sent from CANDE. HARDCOPY This means that the terminal is not a screen device. In this case. not counting the “status line” at the bottom.06 . The terminal can only function in single line mode. this <character> is appended at the end of the line. The default wrap character is the backward slash (\). such as those generated by the LIST or FIND.2). Range: 0 – 255 (lines). MAXOUTPUT This means the same as BUFFER. This feature is not used by page mode editing. To indicate that the line has been wrapped. (Same as LINE. FIND:PAGEMODE. Range: 25 – 255 (characters).) UNBUFFERED This means that the terminal does not have buffering capability. An UNBUFFERED terminal cannot use CANDE page mode editing. WRAPAROUND Tells CANDE how the terminal behaves after receiving the last character of a line. After PAGE lines have been written. above. It is irritating on hardcopy devices. you will want to set WRAPAROUND to FALSE when using page mode. SCREEN This means that the terminal is a screen device.) LINE The number of characters in each line of the screen. WAIT This instructs CANDE to pause after each page of output. If WRAPAROUND is FALSE. the lines will be displayed in a jumble. Setting the value to 0 or 1 automatically sets CONTINUOUS. This is useful on screen devices where you need to read the output before continuing. (See HARDCOPY. By default. the terminal automatically moves to the next line when a line is filled. (See CONTINUOUS.) The number of characters in each line of the screen. CANDE will wait for a “null input” before continuing. WIDTH Volume 9. Otherwise.22 \ Gregory’s A-Series Technical Journal DOWN The default number of lines “down” from line 2 that the current line is to be displayed when using the PAGE. CANDE ensures that no single output transmission exceeds the MAXOUTPUT of the terminal. It is for report-style outputs. In this case. Range: 25 – 255 (characters). (Same as WIDTH. CANDE must append a carriage return and line feed to each line of a page mode output. FORMSCAPABLE If you set this option to TRUE. and +FIND commands. the terminal does not move to the next line when a line is filled. A “page” is the number of lines set by PAGE. (See SCREEN. Range: 0 – (PAGE size .) The standard value is 80. It denotes that the terminal is buffered and the maximum number of characters the terminal can store. "<character>" If a line of output exceeds the line width of the terminal. The standard value is 24.:TEXT commands. Range: 0 – 9168 (characters). CANDE will add characters which will jump the cursor past the NEXT+ when sending a page mode output. If you set your line width to a value smaller than that of your physical terminal. CANDE wraps the line to the next. In this case. PAGE The number of lines on the screen. it means that your terminal understands TD830-style escape sequences. CANDE does not append a carriage return/line feed to each line when writing page mode output to the terminal. The output is printed onto paper or some permanent medium.

as reported by the TERMINAL command. CANDE formats page mode output — and interprets the input — based upon these specifications. you can use page mode editing. Columns of the workfile not displayed are not affected by any edits. and CANDE will not correctly interpret your input. The total number of lines your terminal can display is the minimum of: • • the PAGE specification. The capabilities of your terminal are determined by the MAXOUTPUT (or BUFFER). 1995 . and PAGE options. Thus. but you cannot edit by trying to use a line width that is larger than the real line width of your terminal. If you set WRAPAROUND to FALSE. changes applied in page mode are only applied to the data that is displayed on the screen. It is very critical that your LINE and PAGE specifications. If your TERMINAL specifications do not match those of the device you are using. LINE (or WIDTH). the page display output by CANDE will be incorrect.2.CANDE: Editor Improvements / 23 TERMINAL BUFFER < number of characters > CONTINUOUS DOWN < number of lines> FORMSCAPABLE TRUE FALSE HARDCOPY LINE < number of characters in the line > MAXO UTPUT < number of characters > PAGE SCREEN UNBUFFERED WAIT WIDTH < number of characters in the line > < number of lines> WRAPAROUND TRUE FALSE " < character> " Figure 3 Syntax for the TERMINAL Command To successfully use page mode editing. MAXOUTPUT ∋ LINE If the number of lines is adequate. and SCREEN is true. you can use a line width that is smaller than the true line width of your terminal in page mode editing. September. As implemented in SSR 41. your terminal must be a screen device capable of displaying at least 3 lines of output. you can edit using a smaller line width. match the true dimensions of your terminal.

you can put your TERMINAL preferences into a <startup file>. This command tells CANDE that your terminal supports TD830-style screen instruction codes. If you need to set the LINE. FIND. The line width and page specifications must not exceed the physical characteristics of your terminal for page mode editing to work correctly. However. the single command: TERMINAL DOWN 4 will set that as a default for the duration of the CANDE session. or you can combine it all together into a single command such as: TERMINAL LINE 80 PAGE 24 SCREEN Note that there is no comma or other separator between the different attributes. you must either use the VOID command or the DELETE command. you will court disaster. if you lie to CANDE and set your line width (via the TERMINAL command) larger than your actual line width. it shifts it to the right. Similarly. TERMINAL FORMSCAPABLE TRUE activates an option of page mode that was implemented in an earlier release. they would be 80 columns wide and 24 lines in height. CANDE will automatically position the cursor after the NEXT+ on each screen of page mode output. To avoid confusion. There are only two TERMINAL specifications that cannot be automatically set by your site administrator: DOWN and FORMSCAPABLE. the DOWN specification used with the previous FIND is discarded. For the PAGE command. TERMINAL DOWN <integer> sets a “default” DOWN specification for your FIND. remember that they are only in force for the duration of your session. This value becomes the default specification that is used unless a DOWN specification is included with the PAGE. If you log off (via BYE or HELLO). and SCREEN attributes. On a standard terminal. and session options are all defined as you want them each time you start a new CANDE session. I’ve chosen different wording. or +FIND command. all of the page mode “screens” shown in this article are 53 columns wide and 12 lines in height. When you make changes with the TERMINAL command. and your DOWN and FORMSCAPAPBLE specifications will revert to 0 and FALSE. This is a file similar to a DO file except that it is automatically executed whenever you begin a CANDE session. For FIND and +FIND. it applies to the current command and all subsequent +FIND commands used on the same search. 3 4 The CANDE Operations Reference Manual states that @+ “shifts the column range of records to the left.” In my opinion. To delete a line from the workfile. Only in rare cases will you need to make any changes. 2 Moreover. PAGE. when you transmit the page back in. Certainly my view of the text moves to the right. CANDE will get very confused and your changes will not be accepted. you can use a DOWN specification in each of these commands. Through TERMINAL DOWN you can set a more permanent DOWN value. As we stated previously.06 . Volume 9. respectively. each CANDE window will start with the site-assigned defaults for TERMINAL. not the left. +FIND. Text may be wrapped around when displayed to you. For formatting purposes only. If you always want to use the same values. you can do it using three separate commands. if you always want your page mode displays to be offset 4 lines down the screen. if you are running multiple CANDE windows under COMS. Thus. If you set FORMSCAPABLE to true. When a new FIND command is entered. and you will have to change each window individually. This can make it easier to page through a series of screens you are not updating. CANDE does not change or delete lines that you have deleted from your screen. This rule also applies to any session options you set (such as GETWARN) and any <escape character> you define. and PAGE commands.24 \ Gregory’s A-Series Technical Journal Most of the TERMINAL attributes will be set for you by your system administrator. The next article in this series describes how to use <startup file>s to ensure that your TERMINAL. the TERMINAL specifications will revert to the siteassigned defaults. ESCAPE. depending upon your terminal and its option settings. It is not adequate for lines that are deleted. 1 Note that this technique is fine for lines that are added and lines that are changed. For this reason. that specification applies only to the one command.

1 RALPH had the look and feel of B6700 CANDE. for CANDE to recognize it. we used a timeshare service (Remote Computing Corporation [a. it will be executed each time you boot the machine. To designate a file as your <startup file>. It may contain any CANDE command that is valid in a DO file. However. Once those two steps were complete. when I was a programmer apprentice at Pacific Bell in Sacramento. Unisys added a similar feature to CANDE. A <startup file> is just like a DO file. you give it a specific name. Typically. To begin the search. your file was automatically executed each time you logged on. The operating system shell on that system was one developed by RCC named RALPH. but that can be changed through the ?STUP operator command. To use this feature in RALPH required two steps: 1. RCC]) which sold computer time on a Burroughs B5500. Note that SPLIT. The three ways to log on that activate the <startup file> are: • • • You open a CANDE dialog from COMS through the ?ON command. You start a new session using the HELLO command. CANDE appends your station name to the <startup name>. One of those enhancements was a feature whereby you could instruct RALPH to automatically execute a series of commands each time you logged on. I don’t remember if CP/M™ had this feature.2 These commands could be any legal RALPH commands. as DO files now can. though some were added prior to that release. A few years later this concept became more commonplace when it was introduced onto micro-computers.5 Once you have given your file the proper name. The first file found in this sequence is executed as the <startup file>. Your terminal is connected directly to CANDE through an NDLII protocol and you start a dialog. the first file CANDE will look for is: September. 2. The file must be on your boot drive. you must assign it your site-defined <startup name>.3 In Mark 3. All of these exist in SSR 41. it will become active the next time you log on. Startup Files Twenty-one years ago. The <startup file> is executed each time you log on to a new CANDE session. CANDE is both an editor and a system shell. RALPH had a few enhancements over CANDE. and so forth do not cause the execution of the <startup file> because session options are retained when you change sessions using these commands. When CANDE searches for your <startup file> it performs an 8-step search. but that is the only restriction. you can store any sequence of shell commands in a file titled AUTOEXEC. and your <family specification> is DISK = CONTINUUM OTHERWISE DISK.7. You first created a file containing the commands to be executed. The shell commands provide access to the various functions of the A-Series computer. but in those days no one cared about such things. 1995 . your station name is PSJC10. CHARGE.BAT. In this article and the next we will present several shell enhancements that have been added since the publication of The Complete CANDE Primer.4 The CANDE implementation requires that you create a file of CANDE commands. In CANDE. Thus.CANDE: Session Control Features / 25 CANDE: Session Control Features we said at the beginning of this issue. Then. just like the RALPH implementation. In MS-DOS. The CANDE default for the <startup name> is CANDE/STARTUP. but MS-DOS™ continues to have it to this day. You then used a special RALPH command which stored that file as your “log on” file.a. they configured your session with the options you normally used when working.. California. this file is called a <startup file>. if the <startup name> is CANDE/STARTUP.2. If it is there. It may not use parameters.k.

and even some special purpose options. if your usercode is Q. PSJC11 is set up as a 132-character line terminal. you could do the following: MAKE CANDE/STARTUP #WORKFILE CANDE/STARTUP: SEQ 100TERM PAGE 24 LINE 80 SCREEN SAVE #UPDATING #WORKSOURCE CANDE/STARTUP SAVED Volume 9. if you ever work from home. Since we ended the last article in this series with a discussion of the TERMINAL command. For example. This enables you to have several different <startup file>s which execute other files in order to set your session preferences. but need a couple of differences. A <startup file> can contain a DO command. looking under *. To make your terminal page-mode capable each time you log on. there are several options available through the TERMINAL command. However.06 . For example. However. let’s start our examples there. your network administrator is of the old school. you can choose the option that best fits your working habits. This leads us now to a discussion regarding the content of your <startup file>s. whether you always come in on the same station or whether you never know what station you will be coming in on. If CANDE cannot find the <startup file> using the four steps given above. and he configures all of the dial-in lines as hardcopy terminals with a page size of 1 line. To date. while PSJC10 is an 80-character line terminal. such as that set through the ESCAPE. you know your terminal can handle CANDE page mode. In this case. more options are added. You are able to tell CANDE to set these options itself so you don’t have to be bothered with doing it manually. CONTINUE. or connect through station transfer from one A-Series host to another. By using <startup file>s. several through the SO and RO commands. Each time CANDE is improved. the search would be: (Q)CANDE/STARTUP *CANDE/STARTUP (Q)CANDE/STARTUP *CANDE/STARTUP ON ON ON ON CONTINUUM CONTINUUM DISK DISK Thus. the search will be in the same four locations for a file with the <startup name> alone. then under your usercode on the alternate family. if you want mostly the same options set on stations PSJC10 and PSJC11. For example: #FILE CANDE/STARTUP/PSJC10 100 TERM LINE 80 PAGE 24 WAIT 200 DO CANDE/PREFERENCES #FILE CANDE/STARTUP/PSJC11 100 TERM LINE 132 PAGE 24 WAIT 200 DO CANDE/PREFERENCES Thus. and since you use a screen device.26 \ Gregory’s A-Series Technical Journal CANDE/STARTUP/PSJC10 ON CONTINUUM under your usercode. Suppose you are a regular user of a dial-in line. Using the above example. CANDE has a backup plan to address this situation. using a dial-in connection. and PDIR commands. <Startup file>s allow you to tell CANDE what your session preferences are each time you log on. Fortunately. It will then progressively do the remaining steps of the standard system four-way search. All of the other options for the two terminals are the same. your station name may vary when you log on. and finally under * on the alternate family. the four names searched will be: (Q)CANDE/STARTUP/PSJC10 *CANDE/STARTUP/PSJC10 (Q)CANDE/STARTUP/PSJC10 *CANDE/STARTUP/PSJC10 ON ON ON ON CONTINUUM CONTINUUM DISK DISK If you always work at the same terminal — and always connect directly in using the same station name — CANDE will find your <startup file> and execute it. you could create two <startup file>s and have them each perform a DO on a common file. you can have CANDE automatically configure all of these options to exactly what you want during your session. CANDE will attempt another search without appending the station name.

SCREEN. For example. you could do the following under usercode Q: MAKE CANDE/PREFERENCES #WORKFILE CANDE/PREFERENCES: SEQ 100TERM PAGE 24 LINE 80 SCREEN 200TERM DOWN 4 FORM TRUE September. WRAPAROUND = TRUE. WAIT. and have the other <startup file>s execute it. Here is where the DO option also comes in quite handy.0182) AT A00SJC2 #YOU ARE PSJC10/CANDE/1(17) #SESSION 0436 18:16:02 Friday.7 If you work under several different usercodes.4 IO=1.2 (41. In particular. you can either put it in this file or put it in a file that you execute via a DO command in your CANDE/STARTUP file. DOWN = 4. PAGE = 24. just create one file with the preferences. FORMSCAPABLE = TRUE. MAXOUTPUT = 1920. Whatever you choose. you will have to put a <startup file> under each usercode. For example: HELLO Q/HUMAN #END SESSION 0434 ET=10:31. and the corresponding responses. CANDE/STARTUP. as it executes them. you could add the line: 200TERM DOWN 4 FORM TRUE TERMINAL commands are cumulative. This is easily done by adding three more lines:6 300ESC HEX = ~ 400CONT = % 500SO GETWARN = SET Now save this file. MAXOUTPUT = 1920. if you would like your default DOWN specification to be 4 lines and you want CANDE to position the cursor for you after the word NEXT when working in page mode. and make sure that in-use files are loaded as untitled workfiles.CANDE: Session Control Features / 27 Providing your terminal has 80-character lines and 24 data lines on the screen.3 #USER = Q 18:16:02 06/30/95 #MicroA:27910 CANDE SSR 41. FORMSCAPABLE = FALSE. a default <continuation character>. MAXINPUT = 1920. and all of these options will automatically be set each time you log on. June 30. Following this.4 PT=3. and properly set your terminal attributes. WRAPAROUND = TRUE. CANDE will execute your <startup file>. SCREEN. Each time you log on from this point forward. MAXINPUT = 1920. CANDE will display each of the commands. you might now want to set a few other options as well. 1995 .1 features in the previous article. DOWN = 0. so the second command does not cancel the settings of the first one. The complete file is: #FILE CANDE/STARTUP 100 TERM PAGE 24 LINE 80 SCREEN 200 TERM DOWN 4 FORM TRUE 300 ESC HEX = ~ 400 CONT = % 500 SO GETWARN = SET # When you log on. 1995 (PST) # #FILE (Q)CANDE/STARTUP ON CONTINUUM # TERM PAGE 24 LINE 80 SCREEN #LINE = 80. this will do the job. After reviewing the new 4. you might want to set a default <escape character>. "\" ESC HEX = ~ #ESCAPE HEXADECIMAL = ~ CONT = % #CONTINUATION CHARACTER = % SO GETWARN = SET #GETWARN SET You might also want to add a default print destination or other option as well. PAGE = 24. "\" TERM DOWN 4 FORM TRUE #LINE = 80. To save having to update lots of files every time you want to change your startup preferences. WAIT. secure it public.253.

If DO can process the file successfully. it will work as a <startup file>. As we said earlier.28 \ Gregory’s A-Series Technical Journal 300ESC HEX = ~ 400CONT = % 500SO GETWARN = SET SAVE #UPDATING #WORKSOURCE CANDE/PREFERENCES SAVED SECURITY CANDE/PREFERENCES PUBLIC IN # (Q)CANDE/PREFERENCES ON CONTINUUM SECURITY CHANGED MAKE CANDE/STARTUP #WORKFILE CANDE/STARTUP: SEQ 100DO (Q)CANDE/PREFERENCES ON CONTINUUM SAVE #UPDATING #WORKSOURCE CANDE/STARTUP SAVED Now copy this CANDE/STARTUP file to every usercode you work under. You can resume processing of the <startup file> by entering: ?GO Alternatively. (When doing this. you can discontinue processing of the rest of the file by entering any other CANDE command. If you want users to apply your defaults to their sessions. include it in your <startup file>! If you are a site administrator and want to establish a standard set of default preferences for all of your users. RESTART NAME: CANDE/STARTUP/RESTART The startup facility is an excellent tool for optimizing your working environment under CANDE. be sure to note that some commands. the site manager can change that name (or disable the startup facility entirely). For more information.06 . If you have a program that you want run every time you log on. regardless where you are working. The <startup file> may contain any CANDE command that is legal in a DO file. processing stops and the message: #QUEUED INPUT PENDING is displayed. Of course. The syntax for this command is: ?STUP For example: ?STUP # STARTUP NAME: CANDE/STARTUP. save the file as *CANDE/STARTUP ON DISK and be sure to secure it PUBLIC IN! Then each user who does not have his own <startup file> will automatically inherit your system-wide one. the command is first displayed. You can force all users to use your system-wide <startup file>. This includes all CANDE commands except for control commands (those that begin with question marks). After that. As they Volume 9. they will not be able to use their own as well. the name CANDE/STARTUP is the default <startup name>. as normal. Through the ?STUP command. have them insert DO statements in their files which execute your <startup file> first. you can test your <startup file> using the DO command. particularly CONT. Since the <startup file> is nothing more than a <DO file> (sans parameters). you can create a *CANDE/STARTUP file on whatever pack family is visible to the largest number of users.) It is perfectly acceptable to use the RUN command in a <startup file>. there is always the potential for abuse (or stupidity. There is also an inquiryonly ?STUP command that is available to all users. if everyone at your site has an <alternate family> of DISK. depending on how you look at it). This command will tell you if the startup facility is enabled and what the <startup name> is. followed by the CANDE error message. If the <startup file> contains an invalid command. if you do so. Your preferences will now be set to the same values.8 However. see endnote #6. may not work in the same manner if executed twice. For example.

5 RECORDS. This process is all documented in the aforementioned book. 1995 (PST) #AUTORECOVER 170 # #WORKFILE CANDE/PREFERENCES: SEQ After the interruption. you might experience the following: GET CANDE/PREFERENCES #WORKFILE CANDE/PREFERENCES: SEQ. This file is a temporary copy of your edited workfile that is entered into the disk directory so that it will be saved in the event of a halt/load or other unexpected interruption. Instead.0182) AT A00SJC2 #YOU ARE PSJC10/CANDE/1(17) #SESSION 0450 19:23:37 Friday. CANDE has always supported the “recovery file” feature. the original file is never actually touched. This feature.9 preserves your workfile edits as they are entered. The merged file is stored in another file called CANDE/TEXTnnn. or in some combination of both. When CANDE comes back up. Automatic Recovery of Work AUTORECOVER is a feature that was added in Mark 3. as described in the Complete CANDE Primer. If the workfile was updated. it also automatically restarts the last program you were running. your edits are saved either in the tank file. the original file is removed. CANDE goes down for some reason. do not create a CANDE/STARTUP file that contains the single command BYE and nothing else. you are back where you left off. If a workfile is recovered through AUTORECOVER. This makes it easy for CANDE to respond if you decide to discard your changes. you can also use the LIST:ANF command to view what changes have been preserved. and you log on: Q/HUMAN #MicroA:27910 CANDE SSR 41. If there are unsaved edits. For example. When you enter REMOVE (against the workfile). 1995 . it creates a recovery file which you can retrieve via the RECOVER command. your updates are saved in a special file called the tank file. CANDE is back up. If you entered a RUN. but to automatically GET it for you the next time you log on. using the above sequence: ?SHOW 600PD (PRINTDISPOSITION=CLOSE) Of course. the original file is still left untouched and stored on disk with its original name. and it was still in progress at the time of the interruption.9 CANDE. AUTORECOVER not only recovers your workfile automatically. the CANDE/TEXTnnn file is removed. It also sets your various environmen September. Both methods will help you determine where you left off and how successful CANDE was in saving all of your work. you can use the MATCH command to compare it with the original file before saving it. CANDE does not make any changes to the original. Each time you see the #UPDATING message. When you first start editing a workfile. UTILITY. or COMPILE command. SAVED 350CONT * 600PD (PRINTDISPOSITION=CLOSE) After these two lines have been transmitted in. June 30. leaving the original file untouched. your edits are copied from the tank file and merged with the data in the original file. You can display that command via the ?SHOW command. AUTORECOVER restarts the program for you. and the CANDE/TEXTnnn file is saved in its place.253.CANDE: Session Control Features / 29 warned in the old RALPH user’s manual. Thus. However. in the CANDE/TEXTnnn file. until the SAVE command is entered. You can continue editing from there. If the system halts or CANDE terminates anywhere during this cycle. For example. When you enter a SAVE command. This will make it extremely hard for you to log on in the future. CANDE will also store the last command entered into your saved command queue. The purpose of this feature is to provide a means for CANDE to automatically recover user work that is in progress at the time of a system or CANDE failure. The AUTORECOVER enhancement directs CANDE to not only create the recovery file.2 (41. Sometime later. it determines the state of your workfile. with AUTORECOVER enabled.

30 \ Gregory’s A-Series Technical Journal tals (FAMILY. ALL — AUTORECOVER is always attempted for all users.253. if any. If you are using a COMS window to access CANDE. and your usercode has the CANDEAUTORECOVER option set. If either of these are true. you must log on to the same station you were on at the time of the interruption using the same usercode. For example: #MicroA:27910 CANDE SSR 41. you can only take advantage of autorecovery if the USERDATA option CANDEAUTORECOVER is set on your usercode. If your site is running with RECOVERSESSION set to ALL. Any deviation will result in a normal session startup. If it is not. They are the usercode and the station name. you will go through normal session startup. Volume 9. your session AUTORECOVER option will be automatically set each time you log on. Through the CANDE control command RECOVERSESSION. you must go on to the same dialog number from the same terminal. Also note that two other items are involved in determining if CANDE will do an automatic recovery. you cannot use autorecovery. Thus. Entering SO AUTORECOVER in this case will not return any error. 1995 (PST) #AUTORECOVER 190 # #FAMILY DISK = CREAM OTHERWISE ICE #PRINTDEFAULTS: PRINTDISPOSITION = EOJ #NO WORKFILE #RUNNING 2334 Your ability to use AUTORECOVER is determined by your site administrator. and you must do any recovery action manually through the RECOVER command. will still be available as a recovery file through the RECOVER command. Each setting is displayed as part of the AUTORECOVER procedure. However. <Startup file>s are not executed if an automatic recovery takes place. Without one of these configurations. if your session begins with it disabled. If the option is set when an interruption takes place. (The workfile. If it is set. You can turn the option off by resetting it (RO AUTORECOVER) and turn it back on again by setting it.06 .) Restart Files If you use the AUTORECOVER feature.2 (41. June 30. REQUESTED — AUTORECOVER is available on an individual basis based upon the usercode of the user. your administrator has three choices: NONE — The AUTORECOVER feature is completely disabled. you may as well skip this section and the rest of this article. if your session begins with AUTORECOVER enabled. You are not able to use this feature. If it is not set when an interruption takes place. To achieve automatic recovery. all of this material applies to you. The syntax for using this session option is: SO ? RO AUTO RECOVER This session option only works if CANDEAUTORECOVER is set on your usercode or the site is running with RECOVERSESSION set to ALL. and you also use <startup file>s. testing reveals that no autorecovery will take place should an interruption occur. you cannot turn it on. If your site is running with RECOVERSESSION set to NONE. There are only two ways in which you can have AUTORECOVER enabled when you start a session: either the entire site runs with RECOVERSESSION set to ALL. you cannot participate in autorecovery. watch out for a potential conflict. you have the option of participating in autorecovery. or the site runs with RECOVERSESSION set to REQUESTED.0182) AT A00SJC2 #YOU ARE PSJC10/CANDE/3(19) #SESSION 2332 21:13:07 Friday. you will go through autorecovery. and it will tell you that autorecovery is enabled. However. If your site is running with RECOVERSESSION set to REQUESTED. PRINTDEFAULTS) to the settings you had prior to the interruption. You exercise the option to participate in autorecovery through the session option AUTORECOVER. you can manually turn it off.

and CONT commands. For example. it is processed first. PRINTDEFAULTS) that differ from those in effect at the time your session was interrupted. (Currently. Then the workfile is recovered and/or the interrupted task is restarted. PRINTDISPOSITION=CLOSE) 200LANGUAGE ENGLISH SAVE #UPDATING #WORKSOURCE CANDE/ENVIRONMENTALS SAVED SECURITY CANDE/ENVIRONMENTALS PUBLIC IN # (Q)CANDE/ENVIRONMENTALS ON CONTINUUM SECURITY CHANGED MAKE CANDE/STARTUP #WORKFILE CANDE/STARTUP: SEQ 100DO (Q)CANDE/PREFERENCES ON CONTINUUM 200DO (Q)CANDE/ENVIRONMENTALS ON CONTINUUM September. It may not contain any CANDE editing commands that would affect the workfile being recovered. The difficult part is that certain session attributes are not restored during an automatic recovery. LANGUAGE. The <restart file> is almost the same thing as a <startup file>. ESCAPE. a <restart file> may contain a DO command. 1995 . performed only from the <startup file> which sets your PRINTDEFAULTS and other environmental attributes. and TERMINAL settings.CANDE: Session Control Features / 31 The logic behind this is simple. Then you can have another. It should not contain environmental commands that are restored during autorecovery. It may contain your typical session configuration commands. which sets your terminal specifications. the <startup file> might itself run a program. Thus. As with the <startup name>. your site administrator may set the <restart name> to anything he chooses. you can have a kernel file. The default <restart name> is CANDE/STARTUP/RESTART. For example: MAKE CANDE/PREFERENCES #WORKFILE CANDE/PREFERENCES: SEQ 100TERM PAGE 24 LINE 80 SCREEN 200TERM DOWN 4 FORM TRUE 300ESC HEX = ~ 400CONT = % 500SO GETWARN = SET SAVE #UPDATING #WORKSOURCE CANDE/PREFERENCES SAVED SECURITY CANDE/PREFERENCES PUBLIC IN # (Q)CANDE/PREFERENCES ON CONTINUUM SECURITY CHANGED MAKE CANDE/ENVIRONMENTALS #WORKFILE CANDE/ENVIRONMENTALS: SEQ 100PD (DESTINATION="LP20". FAMILY. after an automatic recovery. you will be back to the default <escape character>. this means the CONVENTION. The answer to this is the <restart file>. like CANDE/PREFERENCES given above. To address these requirements you still need some sort of <startup file> to handle session recovery as well. such as TERMINAL. The <startup file> may set environmental variables (FAMILY. It is a sequence of CANDE commands stored in a DO file. It first searches for all possibilities under: <restart name>/<station name> It then searches for a file named just: <restart name> If a file is found in any of these searches. which could interfere with the resumption of the program to be restarted or with the recovery of the workfile. This still allows you to use the same <startup file> under each usercode and the same <restart file> under each usercode. CANDE uses the same logic to find the <restart file> that it uses to find a <startup file>. and PRINTDEFAULTS specifications. Like <startup file>s. <continuation character>.) It should not contain any commands which process a task. Moreover. This could potentially cause the restarted execution of a program to run in the wrong environment. The <restart file> is stored under the <restart name>.

the commands not only set session options. Donald J.7. 1986. March 12.. you now have the tilde character (~) defined as your <escape character>. pp. the line: 400 CONT = % will cause CANDE to merge lines 400 and 500 into one command. 9-191 – 9-194. after this <startup file> is executed. 1 The name was an acronym. this feature is a cross between the “log on” file and the “system supervisor” file. but I do not remember what the letters stood for. Gregory. To guarantee that the CONT command works in all situations. Part One of this series. (For more information on this. 1995 issue of the Journal. 4 Unisys Corporation. Perhaps someone in the audience knows? 3 In the MS-DOS and other micro-computer cases. you can always precede it with a command to cancel any existing <continuation character>. but after all of these years. producing erroneous results. they also set operating system options. Mark 3. pp. I cannot remember the name of the command for this feature.06 . and you will have identical session attributes and environments in all of your workplaces. which will be published in the October. 2 Sorry. 205 – 207. If you now LIST or PAGE the <startup file> you will see the following at line 300: 300 ESC HEX = ~~ Since the tilde is now your <escape character> two tildes will appear on your screen for every one tilde in your file.32 \ Gregory’s A-Series Technical Journal SAVE #UPDATING #WORKSOURCE CANDE/STARTUP SAVED MAKE CANDE/STARTUP/RESTART #WORKFILE CANDE/STARTUP/RESTART: SEQ 100DO (Q)CANDE/PREFERENCES ON CONTINUUM SAVE #UPDATING #WORKSOURCE CANDE/STARTUP/RESTART SAVED Now copy CANDE/STARTUP and CANDE/STARTUP/RESTART to each of your usercodes. 6 Beware with the <continuation character>! If you have a <continuation character> already set. In the MS-DOS case. 1987. pp. 177 – 181. Gregory Publishing Company.0 Documentation Changes (D Notes). cf. the Complete CANDE Primer.) 8 Details for doing this are described in the section on the ?STUP command in our next issue. 5 The ?STUP command is documented in Part Five of this series. That command is: CONT * 7 Note that.. 9 Volume 9.

1 Unisys documented the utility program *SYSTEM/PDIR for general use. *SYSTEM/PDIR could be run through CANDE’s UTILITY command (or RUN command). But most important above all. If you are familiar with SYSTEM/PDIR. Moreover. in Mark 4.b. having the system do all of this work is just ridiculous. such as LFILES. Fortunately. however. There are some subtle differences between the operation of CANDE FILES and SYSTEM/PDIR. 1995 . has been to have these highly important features become an in-built part of CANDE. (N. so external commands don’t always have a consistent feel with the rest of CANDE. The FILES command does not fire off any additional tasks to provide all of these features. Wildcard and pattern match searching is now available. is that it initiates a separate task each time it is used. In Mark 4. In-built commands. integrated part of CANDE. How to search another pack family for file titles. Three important new features were added to the FILES command: • • • The report is now expandable and may include a variety of file attribute information. and allocating array space in which to format said report are three of the most expensive things you can do on an A-Series computer. listing just file names and their associated types. and the parameters to that program provided the specifications of the search. These are: • • • • How to search a directory under your usercode for file titles.CANDE: File Searching / 33 CANDE: File Searching ne of the most common functions needed in a shell program is the ability to search a directory of files. and (b) using file attributes in search conditions. and SYSTEM/PDIR was never retrofitted with those same enhancements. on the other hand. are superior to external commands. September..2 The lifelong dream of CANDE users. This saves a lot of overhead since firing up a task. listing a large number of file attributes for each file. opening a remote file to write the report. It’s just that new options were added to that procedure to support the CANDE FILES command. the LFILES report can be configured to list just file attributes of interest. The FILES command has provided a short report. runs out of the GRIND stacks. so it responds much more quickly. A-Series CANDE had Unisys-supported system software giving it the ability to search for files by (a) using wildcard characters in the search target. however. a lot of the material in this article will look familiar. However. How to search another usercode (if you’re privileged) or the system node (*) for file titles. For something as simple as listing the files in one’s directory. Unisys made everyone’s dream come true. The penalty for using LFILES. There are additional reasons why in-built commands are superior. Searching by file attribute value is also now available. CANDE has addressed this need through two commands: FILES and LFILES.) The LFILES command provides a much larger report. We previously documented this program in our June. Historically. for several reasons. these features are all a built-in. such as FILES. A “file type” in CANDE is the same as the FILEKIND attribute in the MCP. In-built commands all recognize your CANDE session settings. Much of this information is not passed from CANDE to any tasks it runs. particularly your TERMINAL configuration. not just the file type (FILEKIND). For the first time in history.1 FILES. The most obvious is that no task is fired up when an internal command is used. You must have a full understanding of how to use these features before reading the material in this article. 1995 issue.1. both use the same internal MCP procedure (ASERIES_INFO) to get their reports.3 FILES Command Basics In the Complete CANDE Primer we presented the fundamentals of the FILES command. How to limit the depth of the search within the directory tree.

there are enough differences between it and FILES that we decided to provide a completely new document on FILES. The next three specify what files are included in the report.4 Volume 9.34 \ Gregory’s A-Series Technical Journal Although we documented SYSTEM/PDIR in depth in June. Report Options You now have several options for formatting your FILES report. Though the material overlaps in many areas. this option is unchanged from before and is documented in the Complete CANDE Primer. 1 SINGLELINE LONGFORMAT 1 RES NON ALL 1 < depth> Note the colon (:) that must appear after the <FILES command> and before the first <output option>. The last one. <depth> controls the depth in the directory tree that is searched.06 . FILES provides several options that are not available in PDIR. FILES is also tailored to the specific workings of CANDE and provides a much more natural fit into the CANDE environment. These options are available to all variations of the FILES command. Report Layout Options The first two options specify the layout of the report. according to the syntax: <FILES command> : <output options> The possible <output options> are specified using the following syntax: . it is not exactly the same. Report options are selected by following the FILES command with one or more <output options>.

and your report fits into an 80-column line. LONGFORMAT is your alternative to SINGLELINE. LONGFORMAT prints the file title first. If the number of attributes you request in your report does not fit into a single output line. For example: September. A sample of this output is shown in figure 2. A sample output using the SINGLELINE option is shown in figure 1. the FILES command will place each file name on a single output line followed by your selected attributes. the format of the report will depend upon the type of request you enter. followed by your attribute list in the format <attribute> = <value>. CANDE uses LONGFORMAT automatically. 1995 . you will get the old “one node at a time report”. If you do not specify either <output option>.CANDE: File Searching / 35 FILES SYM/F=:S SYM/F= ON CONTINUUM File Name Filekind Records Sectors CreationTime --------------------------+------------+------------+------------+-----------SYM/FORM SYM/FORM/SAMPLE1 SYM/FALCON SYM/FSRCOPY/1 SYM/FSRCOPY/2 SYM/FUPDATE SYM/FORMTEST SYM/FILEMATCH/DATA SYM/FILEMATCH/TEST SYM/FILESEARCH SYM/FINDWARNINGS SYM/FORMINFOTEST SYM/FALCONSUPPORT SYM/FILEDIRECTORY 14 FILES FOUND # ALGOLSYMBOL COBOL74SYMBO DCALGOLSYMBO ALGOLSYMBOL COBOL74SYMBO ALGOLSYMBOL ALGOLSYMBOL COBOLSYMBOL ALGOLSYMBOL DCALGOLSYMBO DCALGOLSYMBO ALGOLSYMBOL DCALGOLSYMBO ALGOLSYMBOL 1558 42 1158 131 119 322 443 13 86 1601 462 45 568 84 784 28 588 70 56 168 224 14 56 812 238 28 294 42 07/30/1992 05/10/1992 11/27/1991 04/19/1994 04/19/1994 11/12/1991 05/30/1992 12/15/1992 12/15/1992 11/12/1991 05/23/1994 05/10/1992 04/07/1992 03/20/1995 Figure 1 Sample FILES:SINGLELINE Report If you specify SINGLELINE. This report shows only the name and type of each file. If you request a FILES report without using any wildcard characters.

If your site uses Unisys’ ARCHIVE/BACKUP to back up your files. . RECORDS. RE . . AI . and CREATIONTIME included. . . you can specify exactly which group of files you want to see. SAMPLE1 : COBOL74 . TEST : ALGOL . SECTORS. . . OUT : DATA . Using the corresponding keyword. .36 \ Gregory’s A-Series Technical Journal (Q) ON CONTINUUM . . . you will get the SINGLELINE report with FILES SYM/F=:L SYM/F= ON CREAM File Name Attributes -----------------------------+-----------------------------------------------SYM/FORM Filekind= ALGOLSYMBOL Records= Sectors= 784 CreationTime = 07/30/1992 @ 15:07:07 Filekind= COBOL74SYMBOL Records= 42 Sectors= CreationTime = 05/10/1992 @ 15:18:59 Filekind= DCALGOLSYMBOL Records= 1158 Sectors= CreationTime = 11/27/1991 @ 17:35:51 Filekind= ALGOLSYMBOL Records= Sectors= 70 CreationTime = 04/19/1994 @ 13:48:39 Filekind= COBOL74SYMBOL Records= 119 Sectors= 1558 SYM/FORM/SAMPLE1 28 SYM/FALCON 588 131 SYM/FSRCOPY/1 SYM/FSRCOPY/2 56 Figure 2 Sample FILES:LONGFORMAT Report the attributes FILEKIND. Showing Archived Files The next set of <output options> determine what files are included in the report. IN : DATA . For example: Volume 9. . . C74 . as shown in figure 1. . Those present in the archive log. are called nonresident. Those present on disk are called resident files. . . If you use the defaults CANDE is shipped with. You may choose one of the following:5 RES NON ALL The default is determined by your session option SHOWALLFILES. CCE . . . . . the default is RESident. ATTLIST : ALGOL . . . TEST . but not present on disk. both files present on disk and those archived to tape can be included in your FILES report.06 . TEST : ALGOL . . . . . C74TEST : COBOL74 . SAMPLE2 : COBOL74 If you request a report that uses wildcard characters in the search. . . IR : COBOL74 . . SYM . .

it will be included in the RESIDENT report. In the normal course of work. But when you remove that file. both of which are WFL commands. So long as that file is resident on disk. FILES SYM/PRINT=:ALL SYM/PRINT= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/PRINTS/DUMP SYM/PRINTS/DUMP/950128 SYM/PRINTS/LOAD SYM/PRINTS/LOAD/950130 SYM/PRINTS/EXPAND 5 FILES FOUND # ALGOLSYMBOL NULLFILE ALGOLSYMBOL NULLFILE ALGOLSYMBOL 2322 416 142 This report shows a combination report of both resident and non-resident files under our usercode. only the backup information is deleted. For example: FILES SYM/PRINT=:NON SYM/PRINT= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/PRINTS/DUMP/950128 SYM/PRINTS/LOAD/950130 NULLFILE NULLFILE 2 FILES FOUND # WFL ARCHIVE PURGE SYM/PRINTS/= FROM CONTINUUM #RUNNING 1327 #BOT 1328 (Q)WFLCODE ON CONTINUUM #1328 PK47 5 ARCHIVE RECORDS PURGED UNDER (Q)SYM/PRINTS/= ON CONTINUUM #EOT 1328 (Q) (Q)WFLCODE ON CONTINUUM # September. You can reduce the number of unwanted non-resident files in your directory by using two commands. If the target files are non-resident. The command WFL ARCHIVE PURGE <file name list> will delete the specified files from the archive tables. Any file that is present at the time the backup is run will become an archived file. If the target files are still resident.CANDE: File Searching / 37 FILES SYM/PRINT=:NON SYM/PRINT= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/PRINTS/DUMP/950128 SYM/PRINTS/LOAD/950130 2 FILES FOUND # NULLFILE NULLFILE This report shows just non-resident files under our usercode. Note that the non-resident files are identified by a FILEKIND of NULLFILE. they remain resident. this means that the files are deleted without any (convenient) means of later retrieval. it will switch to the non-resident state. 1995 . it is possible to accumulate a large number of non-resident files.

have been destroyed. the system will interpret “DESTROY” as a file name and give you a syntax error. and AUTORESTORE will not recover the file. Volume 9. you will no longer have any record regarding the specific tape the file is stored on.06 . you can do so with the WFL command: WFL REMOVE [DESTROY] <file name list> The square brackets around the keyword DESTROY are required. Take care that you only use ARCHIVE PURGE and REMOVE [DESTROY] to eradicate files that you are certain you no longer want ever again.38 \ Gregory’s A-Series Technical Journal FILES SYM/PRINT=:NON #NO MATCHING FILES FOUND # Note that all of the information on the two files SYM/PRINTS/DUMP/950128 and SYM/PRINTS/LOAD/950130 has now been removed from the FILES report. For example: FILES SYM/PRINT=:ALL SYM/PRINT= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/PRINTS/DUMP SYM/PRINTS/DUMP/950128 SYM/PRINTS/LOAD SYM/PRINTS/LOAD/950130 SYM/PRINTS/EXPAND ALGOLSYMBOL NULLFILE ALGOLSYMBOL NULLFILE ALGOLSYMBOL 2322 416 142 5 FILES FOUND # WFL REMOVE [DESTROY] SYM/PRINTS/EXPAND FROM CONTINUUM #RUNNING 1454 #1454 PK47 (Q)SYM/PRINTS/EXPAND ARCHIVE RECORD PURGED ON CONTINUUM #1454 PK47 (Q)SYM/PRINTS/EXPAND ON CONTINUUM REMOVED WITH DESTROY OPTION # FILES SYM/PRINT=:ALL SYM/PRINT= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/PRINTS/DUMP SYM/PRINTS/DUMP/950128 SYM/PRINTS/LOAD SYM/PRINTS/LOAD/950130 4 FILES FOUND # ALGOLSYMBOL NULLFILE ALGOLSYMBOL NULLFILE 2322 416 The file SYM/PRINTS/EXPAND is now completely obliterated. Otherwise. You must prefix these commands with the word WFL to execute them successfully. It does not even show up as an archived “NULLFILE” since both the file. the target files will no longer appear in any FILES report. Neither ARCHIVE PURGE nor REMOVE [DESTROY] are CANDE commands. neither command will directly affect the copy of the file that currently sits on the tape. If you have a resident file that you want to remove. However. and you want to eliminate all of the backup information on that file at the same time. After using this command. and all of its backup information. If a file has been backed up.

Example: FILES SYM/PRINTS/DUMP (Q) ON CONTINUUM . or a title expression that includes wildcard characters. Wildcard Name Searching The basic syntax for the FILES command is: FILES < selection expression > < file options> < file options> ON < family name > (CDROM) : < output options > Every construct after the word FILES is optional. It is primarily useful when requesting attribute information about a file. Then. as we will show when we discuss <file options> later in this article. if you want to change it for your sessions. If SHOWALLFILES is reset. PRINTS . The <selection expression> always specifies the candidate files by name. use: RO SHOWALLFILES As distributed. a file name. SYM . use the command: SO SHOWALLFILES To reset it. put your SO or RO command in both your <startup file> and your <restart file>.CANDE: File Searching / 39 SHOWALLFILES The set of files included in the FILES report by default is determined by the session option SHOWALLFILES. DUMP : ALGOL # 2. This identifies a single file. default action is to include only resident files. 1995 . Therefore. as appropriate. . you can either enter an SO or RO command. you get the default report which lists every file under your usercode in the “one node at a time” report format. It may be a directory name. To permanently set the option to your preference. The <selection expression> determines what files will be considered for inclusion in the report. complete <file name>. The possible options are: 1. September. Your site administrator can change that by setting the global CANDE option SHOWALLFILES. A single. If you omit them all. A <file directory>. . . you should first check to see what your local default is for this option. This option will revert to its default value each time you start a new session. This option can be set or reset at any time during your session. CANDE comes with the SHOWALLFILES option in the reset state. default action for the FILES command is to include all files in the report. To set SHOWALLFILES. The syntax is: SO ? RO SHOWALLFILES If SHOWALLFILES is set.

Otherwise. or many occurrences of any character. instead of returning a syntax error. . so it will not cross a directory boundary. and the question mark (?). Given the same list of files. . and the directory is ignored. 4. . DUMP : ALGOL . SYM . It ignores forward slashes (/). one. . It generates a list of the files under the specified directory. the tilde stops at a forward slash (/). PRINTS . . the command: FILES SYM/E= will give you this report (truncated on the right for formatting purposes): SYM/E= ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/EVALUATE SYM/EVALUATE/2 SYM/EVALUATEX/1 SYM/EVALUATE2 4 FILES FOUND # ALGOLSYMBOL ALGOLSYMBOL ALGOLSYMBOL ALGOLSYMBOL 61 66 66 66 Tilde (~): This character matches zero. just like the equal sign does.1. the FILEKIND for the file will be listed as DIRECTORY. However. If a match is found that consists of directory nodes only. It can be anything from a single equal sign (denoting all files under your usercode) to a complex expression involving wild card characters and pattern matching instructions. LOAD : ALGOL . CANDE will give you a directory report. if you have the files SYM/EVALUATE SYM/EVALUATE/2 SYM/EVALUATEX/1 SYM/EVALUATE2 under your usercode. one. These characters perform the following functions: Equal sign (=): This character matches zero. This is the primary enhancement of Mark 4. . the file is listed. EXPAND : ALGOL # 3. above).06 . so you can use it to span directory nodes. the report is the same as that given for the equal sign character. For example. Wildcard Characters The FILES command supports three wildcard characters: the equal sign (=). It allows you to generate a report given only some portion of the file name. It generates exactly the same report as that produced using the <file directory> option (#2. The old “one node at a time” style is not used when you do a wildcard search. . If a file and a directory have the same name. A list of <name>s containing wildcard characters or pattern matching expressions. For example: FILES SYM/PRINTS (Q) ON CONTINUUM .40 \ Gregory’s A-Series Technical Journal This is a directory name without the trailing equal sign. The full name of the file is returned. Reports using wildcard characters are always returned in either SINGLELINE or LONGFORMAT style. the tilde (~). A <directory name>. or more occurrences of any character. the command Volume 9. This is a directory name with a trailing /= appended. The significant thing about this is that you can now append the /= to a directory name and.

SYS/VERSION2/MATCHPACKS (same reason). it would not include SYSTEM/COMS (second node does not begin with M). It would match SYSTEM/MCP. FILES =SYS=M= This reports every file whose name contains the letters SYS and M within it. You can also use any number of wildcard characters in a single command. FILES =MCP= This reports every file whose name contains the letters MCP in any location. It would not match MY/SYS because the target constants are in the wrong sequence. Question mark (?): This character matches any single character in the file name. or OBJECT/SYSTEM/MCP (the first node does not begin with SYS). September.CANDE: File Searching / 41 FILES SYM/E~ will generate the report: SYM/E~ ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/EVALUATE SYM/EVALUATEX SYM/EVALUATE2 3 FILES FOUND # ALGOLSYMBOL DIRECTORY ALGOLSYMBOL 61 66 Note that the directory SYM/EVALUATE is not included in the report since there is also a file of the same name. 1995 . It would match REPORT/UNISYS/FTRS/MARC as well as SYSTEM/MCP and OLD/SYS/MATCHPACKS. but it would not match either SYSTEM/MCP or SYSTEM/MATCHPACKS. The only constraint is that SYS must appear before M. and SYS/AMERICA/1. FILES SYS=M This reports every file whose name begins with the three letters SYS and ends with the single letter M. Therefore. It does not match a forward slash (/) or a left or right parenthesis (( or )). SYS/MATCHPACKS. Thus. SYSTEM/X. SYSTEM/MCP412C or SYSTEMCPINFO. However. given the same list of files. any of the following are legal requests: FILES SYS=M= This reports every file whose name begins with the three letters SYS and contains an M somewhere in it. the command FILES SYM/EVALUATE? will produce the report: SYM/EVALUATE? ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYM/EVALUATEX SYM/EVALUATE2 2 FILES FOUND # DIRECTORY ALGOLSYMBOL 66 You can mix the wildcard characters together as much as you want in formulating your FILES command. It would include both SYSTEM/MCP and SYS/MATCHPACKS. FILES SYS~/M= It would report This reports every file that is stored under any directory whose name begins with the letters SYS where the second node of the file name begins with the letter M. It would match SYSTEM/M. It would not match OBJECT/SYSTEM/X because that name does not begin with the letters SYS.

Files under the SYSTEM/= or the SYM/= directory would be reported. None of the wild card characters match the left or right parenthesis of a usercoded file name. You must consider this when using wildcard searching where quoted names are involved. the entire node must be quoted. you cannot accomplish the same thing with FILES (V= This will give an error requesting a right parenthesis. All three will match a quotation mark. If the quoted node is several characters in length.06 . you can use wildcard characters to search for files under other people’s usercodes. any quoted name must be exactly a single node in the file title.6 Although supported. The key is that CANDE requires all of your quotation marks to be balanced. the slash is a part of the name. you can use the command FILES (=)= to list all of the files stored under any usercode on your current pack family. Many software products that analyze file titles will fail if the title contains an embedded period because Unisys internally uses a period to delimit the end of a title. Therefore. you must always supply them in multiples of two. and each pair denotes a single <name> in a file title. you could have a file name such as: MY/"$%@!"/FILE or: MY/"$%@!FILE" but you cannot have a file such as: MY/"$%@!"FILE Unquoted and quoted text must be separated by a slash so that they are separate nodes. the tilde (~). Therefore.8 the tilde and the equal sign both match a quotation mark ("). a node is either quoted or unquoted. According to the Unisys documentation. However. You can also use a wildcard character inside the parentheses to match several different usercodes. and the question mark (?) all retain their “wild” meaning inside the quotes. MY/"$%@!/FILE" is a name with two nodes: MY and "$%@!/FILE". But you cannot use a wildcard character to combine a usercode and a file name into a single pattern. Thus. the equal sign (=). If used inside the quotes. merely touching on their existence. Similarly.7 If you want to avoid these problems. If the node is quoted. Now the three wildcard characters. and SYM/TRAXSUPPORT.42 \ Gregory’s A-Series Technical Journal FILES S~M/= This reports every file that is stored under a directory whose name begins with S and ends with M. the request: Volume 9. Quoted Names We briefly mentioned quoted <file name>s in the Complete CANDE Primer. but the question mark does not. it may contain any graphic character. FILES S?M/=X= This reports every file under a three-letter directory that begins with S and ends with M where the file name also contains an X within it. but would not include SYSTEM/TRAX (too many letters in the first node) or SYMX (not enough directory levels). In other words. Wildcard Characters vs. FILES (V=)= will list all of the files stored under usercodes that begin with the letter V on your current pack family. This is not true. On the A-Series. it does not separate nodes. you must allow for that in your search specification. It would include SYM/XREF. Thus. If you are privileged. the use of quoted file names is not recommended — especially the use of file names that include embedded periods. SYM/TRAX. as a privileged user. However. Therefore. avoid the use of quoted names in file titles.

CANDE: File Searching / 43

will search for all single-node, quoted names under your usercode. It would match names such as "$%*", "A.B.C", and "*". It would not match any files with names larger than a single node, as in "SYS###"/X. It would also not match any names beginning with unquoted nodes, as in *SYSTEM/ALGOL or SYS/FILES. To match titles that have both quoted and unquoted nodes, you must use a wildcard expression that combines both. Now of course,

will match everything, quoted or unquoted, because the equal sign matches every character. The problem comes in when you want to use a quoted node at the beginning. In that case,

as we stated, only matches single-node names. To match other names, you would have to use another equal sign, as in:
FILES "="=

The first three characters limit you to file names where the first node is quoted. The second equal sign allows anything to follow that initial quoted node. Therefore, this expression would match both "$*%" and "SYS###"/X. However, it would not match *SYSTEM/ALGOL (the first node is not quoted) nor MY/"$%@!"/FILE (same reason). Note that expressions such as

are not valid. If you use quotes, they must be balanced inside the command, even though the wildcard character logically matches a quote. When searching with question marks, you have to supply enough question marks and place them properly to achieve a match. Suppose that you have a file titled SYS/"X.Y". If you list all of the files under SYS with the command:

the report will list SYS/"X.Y" in the company of other files where the second node is 3 characters long. A sample output might be:
SYS/~~ ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYS/GEN SYS/WFL SYS/"X.Y" SYS/XXX DCALGOLCODE DIRECTORY SEQDATA ALGOLCODE 772 1 7

If you try to find this file using question marks, and you use:

the file SYS/"X.Y" will not be included in the report. When searching with the question mark character, the second node is considered five characters long instead of three. Therefore if you enter:

then you get something like:
SYS/????? ON CONTINUUM File Name Filekind Records --------------------------+------------+------------+ SYS/"X.Y" SYS/ALGOL SYS/DCKEY SEQDATA DIRECTORY DCALGOLCODE 1 27

September, 1995

44 \ Gregory’s A-Series Technical Journal

Now the file is reported at the top of the list, where the quote (instead of the X) would come in the collating sequence. Again, CANDE requires that quotes be balanced in a command. Even though a question mark can match a quotation mark in a search, you cannot put one quotation mark in your command and expect to balance it with a question mark. For example, the command:

is invalid; CANDE will want an “ending quote.” You can, however, use question marks inside the quotes. For example,

is perfectly acceptable and will locate the file SYS/"X.Y". You can also do the reverse if your constant characters inside the quotes are letters or digits. For example,

is acceptable and matches our target file. However,

is not valid: CANDE will complain of an invalid file name and flag the period.

The Backslash Character
Since the three wildcard characters retain their function even inside quotes, you must take an extra step if you want to use any of those characters in their original meaning. To cancel the “wild” meaning of any of these characters, prefix the character with a backslash (\) character. Thus, while:
FILES "="=

will match all files that begin with a quoted node, the command:
FILES "\="=

only matches files whose first node is "=". This would match, for example, "="/DATA/ONE, but it would not match "%"/DATA/ONE (wrong character) or "=3"/DATA/ONE (too many characters). If you want to search for a file whose name includes a backslash character, you must use two backslashes in your request. For example:
FILES "\\"=

will successfully locate "\"/SYSTEM/ALGOL. However,
FILES "\"=

is invalid. The backslash character must be followed by another character, and that character will be given its literal meaning. If the character is anything other than an equal sign, a tilde, or a question mark, the backslash is simply redundant.

Pattern Matching in Unquoted Names
You can narrow the candidates of a FILES search on a character by character basis through pattern matching. Pattern matching allows you to specify a select list of characters you want in the reported file titles. This list of characters is considered a single <pattern character>. The <pattern character> must match one single character in the title for the title to be included in the report. The <pattern character> is defined by enclosing one or more characters inside square brackets ([ and ]). For example, if you are looking for all of the files under your usercode that begin with the letters A, B, or C, you could use the command:

Volume 9.06

CANDE: File Searching / 45 Note that although three characters are given between the brackets, the entire expression matches only a single character in the file titles: in this case, the first character. This expression would match the titles ABC, A12, B/123, and CBA. If you omit the equal sign, as in:

the request will only match three possible candidates: A, B, and C. In this case, you are requesting a search for all one-character file or directory names that begin with A, B, or C. You may use as many <pattern character>s in your request as you like. Each <pattern character> represents a single character. For example:

matches all two-character file or directory names that use the letters A, B, and C. This will match the names AA, AB, AC, BA, BB, BC, CA, CB, and CC. It will not match any other names. The characters inside the brackets are limited to letters and digits unless you enclose the entire <pattern character> in quotes (which we’ll deal with momentarily). Blanks may optionally be used inside the brackets for readability purposes; they are ignored. Therefore, the commands:

are all equivalent and identical to:

If you use lowercase letters inside the brackets, they will be converted to uppercase automatically. Letter case is ignored in A-Series file names (unless the node is enclosed in quotes), so the following are also equivalent:
FILES [abc][DE] FILES [Ab C][de] FILES [ABC][DE]

For some reason that, as far as I can tell, is rather arbitrary, you are limited to 17 characters within any single <pattern character> definition. Fortunately, you can use character ranges inside your <pattern character> definition. This allows you to specify a large number of characters with a minimum of typing. To create a character range, use a hyphen between two characters, as in:
FILES [A-Z][Ø-9]

In this example, the first <pattern character> is the list of all characters in the collating sequence between A and Z. The second <pattern character> is the list of all characters in the collating sequence between the digits 0 and 9. This request would therefore match names such as: A1, C7, Z4, Q5, and so forth. It would not match 1A, 9F, AA, or 35. (The actual results vary depending upon the collating sequence you are using. For the remainder of this article, we will stick with the EBCDIC collating sequence, which is the A-Series default.) When specifying a range, the first character must be lower in the collating sequence than the second. Thus,

is valid because K is higher than A in the EBCDIC collating sequence. The reverse,

will not work; it will return an error. The EBCDIC collating sequence puts the digits at a higher location than the letters. Therefore,

is a valid request for all letters and digits (and some stuff in between). However,

(where Ø represents the number zero) is not valid because Z is lower than Ø.
September, 1995

If you specify A-Z. R. Again. R. It would report DATA/ONE. FILES [R-T A-C X-Z]= also works and produces the same results. including those in the gaps. For example: FILES [R-T PQ F-J]= uses the two ranges R through T and F through J plus the two single character P and Q. R through T. I. S. H. but not ALPHA/ONE. Q. For example: FILES [[:ALPHA:]]= reports every file whose name begins with a letter. and 0 through 9 a through z and A through Z a through z A through Z 0 through 9 All printable characters excluding those in the [:ALNUM:] class. To do this. digits. T. The negation applies to all of the characters listed in the <pattern character>. In ASCII. If you want to include an entire class of characters in the <pattern character>. C. For example. You can specify the ranges in any order. Volume 9. where each unit is either a single character or a range. the digits precede the letters. then the reverse will be true. For example.46 \ Gregory’s A-Series Technical Journal If your system collating sequence has been set to some flavor of ASCII. letter case is not pertinent. it is important when dealing with quoted names. The command will match any file name that begins with one of the letters A. that denotes just the upper case letters. so [Ø-Z] will be valid. A through Z. you can specify that using a name. and Z. X. use an exclamation point (!) as the first character of the <pattern character>. B. For example: FILES [A-C R-T X-Z]= This uses three ranges: A through C. Y¸ or Z. The possible character classes are: Character Class [:ALNUM:] [:ALPHA:] [:LOWER:] [:UPPER:] [:DIGIT:] [:GRAPH:] Characters Included a through z. Just put them adjacent to each other. However. When constructing a <pattern character> using ranges.06 . It includes all other files. and X through Z. It will match any file whose name begins with F. If you specify [:UPPER:]. You also have the option of specifying a character range and/or list of characters that are not to be included in the report. FILES [!A-M XYZ]= excludes all files whose names begin with A through M. There is a subtle difference between specifying the range A-Z and the character class [:UPPER:] when working in EBCDIC. S. G. X. and underscores in their names. you are limited to a total of 17 units. hyphens. For example: FILES [!A-C]= This lists every file under your usercode whose name does not begin with the letters A. To do this. A-Series file names use uppercase letters only. This distinction is not important when using unquoted names. B. use the sequence: [:<class name>:] This sequence is used inside the first pair of square brackets. or T. since these can only have letters. that denotes the inclusion of all characters between hex "C1" and hex "E9". Y. and [A-9] will not be. or C. The EBCDIC collating sequence has gaps between the letters I and J and the letters R and S. optionally separating them with blanks. You can use several character ranges in a single <pattern character>. You can also intermix character ranges with single characters to specify just the characters you want. J. P. The lowercase options are for quoted file names only. when dealing with unquoted file names.

However. If you want to search for names that contain a hyphen in quotes. that is one character long. FILES "[$!]"= will give you all files that begin with "$" or "!". your range of characters is much greater than is possible with the unquoted <pattern character>. Therefore. without a usercode. do not put it first in the expression. a command such as: FILES "[$*%]"= will not include files under the global node.". ". The command: FILES *= would report *SYSTEM/ALGOL but not "*"/SYSTEM/ALGOL. You can use either of these characters in your FILES command without enclosing it in quotes. enclosed in quotes. the <pattern character> may include any graphic character in the collating sequence. and the blank can be a valid character for starting a range. FILES "[!$]"= will give you all files that have a single character quoted name except for those which begin with "$". Similarly. You can also specify ranges using the graphic characters. There is no way to specify a right square bracket (]) in a <pattern character>. 1995 . Thus. unquoted A-Series file names can contain hyphens and underscore characters. Moreover. The right square bracket always delimits the end of the <pattern character>. Note the important distinction between the two file names: *SYSTEM/ALGOL "*"/SYSTEM/ALGOL The first one denotes a file stored globally. Thus. lowercase and uppercase letters are no longer equivalent. Inside all <pattern character>s the hyphen (-) and the exclamation point (!) have special meanings. and "+". in the report. The Hyphen and the Underscore Standard. For example: "[$%&][*a]" would match file names such as "$a" or "%*". "(". "%"¸ or "&". If the <name> is 2 characters long. such as *SYSTEM/ALGOL. It would match files whose names were "$".CANDE: File Searching / 47 Pattern Matching in Quoted Names When enclosed in quotes. FILES "*"= would report "*"/SYSTEM/ALGOL but not *SYSTEM/ALGOL. If you want to use the exclamation point as an exclamation point. specify it at the very beginning of the list so that it will not be confused as a range specifier. Inside a quoted <pattern character> all characters are valid. you need 2 characters inside the quotes. For example: September. The quoted <pattern character> is simply one that is enclosed in quotes. including the blank. Quoted nodes and unquoted nodes are completely different things. as in: "[$%&]" This represents a <name>. The second denotes a file under your usercode where one of the nodes is an asterisk enclosed in quotes. and you would use different search patterns to locate them. These are completely different file names. "[". "<". FILES "[ -+]"= (note the blank prior to the hyphen) will report all files whose names begin with " ". For example. FILES "[-%]"= denotes file names that begin with "-" or "%". For example.

06 . Altogether.48 \ Gregory’s A-Series Technical Journal FILES ?-? is perfectly valid and will report the file X-Y. but it will not locate the target file either. The determination of where to search is made at the directory level. The request: FILES XSYSTEM/[ST]= will give a much faster response than: FILES X=[ST]= even though you might only have one directory under your usercode whose name begins with the letter X. If you know that all of the files you are looking for are under the directory XSYSTEM. However. and SEARCH are considered <file options>. Optimizing your Search Now that wildcard searching is supported. CANDE cannot always start at the top of your directory and list the files a page at a time as it finds them. a simple FILES report can take a long time to produce. Therefore. Now it must often take the entire list and discard all unwanted ones before it can write line one of the report. the quotes cause the match to fail. If you have many files under your usercode. CANDE adds a new option — SEARCH — which determines where CANDE will look for the files. For the most part. and the faster the FILES request will perform. SORT. CANDE complains about the pattern. Unlike the old. you cannot include a hyphen or an underscore in an unquoted <pattern character>. The command FILES "X[_-]Y" is certainly legal. and SORT options available in the PDIR program are also available to FILES command users. The first request only analyzes files in the directory XSYSTEM. In the syntax of the FILES command. I have not found a syntax that will solve this problem. SELECT. There are. The target file is not a quoted file name. un-wildcarded method. some interesting enhancements as well. The overall syntax is: Volume 9. therefore. They must appear before any ON <family name> part or any <output options>. In addition. File Options The SHOW. SELECT. the more complete directory nodes you can supply on the left-hand end of the request. CANDE may have to do quite a bit of analysis before your FILES report is complete. You can shorten the amount of time spent locating files by specifying as many constant directory nodes as you can at the left-hand end of your request. however. The following are both illegal and will not locate the file X-Y: FILES X[_-]Y FILES X"[-_]"Y In the first case. then you should specify that in your command. for example. these options work in CANDE just as they do in PDIR. They may be used alone or in combination with a wildcard specification. The second is simply an invalid file name. while the second analyzes all of the files under your usercode. SHOW. the fewer files will be candidates for a match.

you will either get the traditional report with one node per line and the FILEKIND. Thus. As the syntax diagram above shows. lastly. the default area searched will be your entire usercode. the search will be done on your current primary pack family. Depending upon your <selection expression>. The PDIR program requires that SHOW come first. adding the abbreviations that CANDE accepts. They are also the same as used in the PDIR program. they must be enclosed in a single set of braces ({}). Note that there are no commas separating the attributes in the list — only spaces. and how those files are ordered. The left brace denotes the start of the <file options>. then SELECT. directory. SORT. If you do not specify an ON <family name> part. RECORDS.9 If the list of file attributes is small enough. SECTORS. the <file options> then further filter that list down to the ones that are finally reported on your terminal. Otherwise. what attributes are reported. which is different from the PDIR program. In CANDE FILES. The SHOW Specification We described the default report format produced by the FILES command at the start of this article. in this issue. you can specify these clauses in any sequence you desire. you can choose the specific file attributes you want included in the report.CANDE: File Searching / 49 FILES < selection expression > < file options> < file options> ON < family name > (CDROM) : < output options > To distinguish <file options> from other parts of the syntax. This is done through the syntax: SHOW < attribute name > < file attribute expression> ALL The list of valid <attribute name>s is the same as that used in the SELECT and SORT specifications. the <selection expression> determines the original domain of valid file titles. it will be written using LONGFORMAT. and the date portion of CREATIONTIME. Through the <SHOW specification>. the <file options> must be the last item in the command before the optional ON part and <output options>. the report will be written using the SINGLELINE format. 1995 . For example: September. The syntax for the <file options> is: { < SHOW specification> <SELECT specification> < SORT specification> < SEARCH specification > } Note that the order of the options is unimportant. The specifications given in your <file options> determine what files are listed in your final report. We have reproduced that list. so long as you only specify each one a single time. or wildcard expression — in the FILES command. and. If you do not specify a <selection expression> — a name. or you will get a SINGLELINE-formatted report showing the attributes FILEKIND.

listing every attribute (except for a few that have both mnemonic and integer formats. This will give you a report in the LONGFORMAT form. the attributes are listed in the sequence that you specify in the <SHOW specification>. The syntax for a <file attribute expression> is: OR AND < attribute name > = > < >= <= <> != < value> The relational operators are defined thusly: Volume 9. The <file attribute expression> option directs CANDE to “show” the file in the report only when the specified condition is fulfilled. in which case only the mnemonic format is given). The NAME will always be printed first. If other attributes are specified. the command: FILES SYS/PRINTS/E= {SHOW SECURITYTYPE SECURITYUSE MAXRECSIZE BLOCKSIZE AREAS AREALENGTH} produces: SYS/PRINTS/E= ON CREAM {SHOW SECURITYTYPE SECURITYUSE MAXRECSIZE BLOCKSIZE AREAS AREALENGTH} File Name Attributes -----------------------+----------------------------------SYS/PRINTS/EXPAND SecurityType= SecurityUse= Maxrecsize= Blocksize= AreaLength= PUBLIC IN 30 270 15120 Areas= 1 1 FILE FOUND # In both cases. they are superseded by the ALL specification. If you want to include all of the file attributes in the report.50 \ Gregory’s A-Series Technical Journal FILES SYS/PRINTS/E= {SHOW SECURITYTYPE SECURITYUSE} generates the report: SYS/PRINTS/E= ON CONTINUUM {SHOW SECURITYTYPE SECURITYUSE} File Name SecurityType SecurityUse --------------------------+------------+-----------------SYS/PRINTS/EXPAND 1 FILE FOUND # PUBLIC IN On the other hand. specify SHOW ALL. even though it need not be specified. The report is useful if you have forgotten an attribute name or its usage.06 . The syntax allows ALL to be used in combination with other attributes.

AND OR Joins two relations. and at least one must be true. SECTORS. The value of the file attribute must be greater than the requested <value> for the file to be included in the report. (More information regarding OR and AND follows in the discussion on SELECT. and CREATIONTIME). If you used a <SELECT expression> instead. >= The value of the file attribute must be greater than or equal to the requested <value> for the file to be <= The value of the file attribute must be less than or equal to the requested <value> for the file to be included in the report. as in: FILES = {SELECT EXTMODE <> EBCDIC} you would get a list of the non-EBCDIC files. Both forms of the <SHOW expression> may be used in a single command so you can tailor the output exactly to your liking. For example. in the next subsection.CANDE: File Searching / 51 = > < The value of the file attribute must be equal to the requested <value> for the file to be included in the report. != Same as <>.) This works in the same manner in the <SHOW expression> as it does in the <SELECT expression> (described next). For example. <> The value of the file attribute must not be equal to the requested <value> for the file to be included in the report. and both must be true. and the report shows just the name of the file and the EXTMODE. It is provided in the <SHOW expression> to reduce the amount of typing you need to do in order to both select and show the same attribute. but the attributes shown in the report would be the default ones (FILEKIND. included in the report. The value of the file attribute must be less than the requested <value> for the file to be included in the report. 1995 . FILES = {SHOW FILEKIND EXTMODE <> EBCDIC SECTORS} generates the report: = ON CONTINUUM {SHOW FILEKIND EXTMODE <> EBCDIC SECTORS} File Name Filekind Extmode Sectors --------------------------+----------------+-------+------- September. RECORDS. Joins two relations. FILES = {SHOW EXTMODE <> EBCDIC} generates the report: = ON CONTINUUM {SHOW EXTMODE <> EBCDIC} File Name Extmode --------------------------+-----------------------SYS/X SYS/AI/TEST SYS/RE/TEST2 SYS/C74/TEST1 SYS/C74/CIRCLE SYS/C74/MATHTEST1 SYS/GEN SYS/XXX SYS/COMS/DIALOGSUPPORT 9 FILES FOUND # SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE Only files with a non-EBCDIC EXTMODE are selected for the report.

though they may fulfill the requirements of the outer <selection expression>. but the report includes the FILEKIND. only the file name and the sectors value would have been reported. are rejected. but it lists all of the attributes for each file displayed. that monster file that you swear is out there needlessly using up all of your disk space.000 sectors. Thus. you can select the files you want and include other attributes as well in the display using a single <SHOW expression>. with a description of the various parts. Of these. FILES SYM/= {SHOW ALL FILEKIND = DCALGOLSYMBOL} displays only DCALGOLSYMBOL files in the directory SYM. If the target size is 50. is given on the previous page. The simplest relation is one involving a numeric-valued file attribute. the most commonly wanted search has got to be the search for the “big offender” — i. you can list all of your files that are above a certain size.. all others. The SELECT Specification Through the <SELECT specification> you can use a series of file attribute relations to determine what actual file titles are included in your report. (SECTORS just happens to be one of the default ones.52 \ Gregory’s A-Series Technical Journal SYS/X SYS/AI/TEST SYS/RE/TEST2 SYS/C74/TEST1 SYS/C74/CIRCLE SYS/C74/MATHTEST1 SYS/GEN SYS/XXX SYS/COMS/DIALOGSUPPORT 9 FILES FOUND # COMPILERCODEFILE ALGOLCODE ALGOLCODE COBOL74CODE COBOL74CODE COBOL74CODE DCALGOLCODE ALGOLCODE DCALGOLCODE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE 45 36 72 18 18 81 774 9 432 The selection is still done based upon the EXTMODE.) Had SHOW been used instead of SELECT. Only files that fulfill the attribute requests specified are included. the command is: FILES {SELECT SECTORS > 50000} A possible response would be: = ON CONTINUUM {SELECT SECTORS > 50000} File Name Filekind Records Sectors CreationTime ------------+-----------+---------+------------+-----------SYSTEM/MCP 1 FILE FOUND # MCPCODEFILE 84557 84564 04/20/1995 Note that the attributes reported are the default ones. the EXTMODE.e. For example. This will select files based upon your <file attribute expression> but report all of each file’s attributes. To test for a boolean-valued attribute. and the SECTORS count. you must use a complete relation. The syntax for the <SELECT specification> is: SELECT < file attribute expression> The syntax for the <file attribute expression>.06 . You can also use the <file attribute expression> in combination with the keyword ALL. Using a simple SELECT expression. use either <attribute> = TRUE or <attribute> = FALSE Volume 9.

The wildcard characters are the same three presented earlier (i.CANDE: File Searching / 53 As shown. You would not get the same results with: FILES {SELECT FILEKIND = "DCALGOLSYMBOL"} This command would be accepted and processed. in 24-hour notation. if you would like a listing of all of the DCALGOL source and object files on a pack family. use the <SELECT specification>: SELECT FILEKIND = DCALGOL= Similarly. However. The date-related attributes are ALTERTIME. the equal sign. HH is a two-digit hour. you want to obtain a list of all of the files in your usercode that have been changed in some manner today — and “today” is September 15. You may use wildcard characters in your string target. MM is a two-digit minute. A simple example is: FILES {SELECT FILEKIND = DCALGOLSYMBOL} This expression lists all of the files under your usercode that have a FILEKIND of DCALGOLSYMBOL. If. CREATIONTIME. 1995 — use the <SELECT specification>: TIMESTAMP = 19950915= For example: FILES {SELECT TIMESTAMP = 19950915=} The report would look like: = ON CONTINUUM {SELECT TIMESTAMP = 19950915=} File Name Filekind Records --------------------------+------------+------------+ O/FACS/T/CATALOG S/FACS/T/CATALOG ERR/S/FACS/T/CATALOG September. For string-valued attributes. LASTACCESSTIME. in the format: YYYYMMDDHHMMSSdddd where: YYYY represents a four-digit year. All other files are ignored.. be sure to note that all of the date and time values are given as strings. MM is a two-digit month. for example. if you would like to locate all of the codefiles on a pack family. and TIMESTAMP. you can abbreviate TRUE and FALSE to a single letter. DD is a two-digit day of the month. The target string must not be enclosed in quotes. For example: FILES DATA/= {SELECT INUSE = T} This would restrict the report to just those files in the DATA directory that are in use. Similarly.e. This format allows you to use wildcard characters when searching for date-related values. it would report that no such files exist since none of the FILEKINDs are represented by the word DCALGOLSYMBOL in quotes. dddd is a four-digit number providing fractions of a second. FILES DATA {SELECT INUSE = FALSE} reports those files that are not in use. and they have the same meanings as before. 1995 ALGOLCODE ALGOLSYMBOL DATA 4641 18853 1 . and the question mark). simply specify the target string after the relational operator. For example. use: SELECT FILEKIND = =CODE If you want to select files by any of the date attributes. the tilde. SS is a two-digit seconds value.

You can apply more than one condition to your FILES search. The syntax and operation is the same as described earlier for file name searching.2” as the start of another attribute expression. as in: FILES {SELECT RELEASEID = SSR?41. if the target you are searching for contains quotes. For example.06 . if you want to find only the files under your usercode that are of type DCALGOLSYMBOL or DMALGOLSYMBOL.2 (41. join the different conditions together with AND or OR operators. then you must use quotes that match those of your target. you could locate it using the following command: FILES X= {SELECT NAME= ="Y.253.Z" under your usercode. You cannot use blanks in the target string at all. the SSR 41. Pattern matching is also supported for the string-valued attributes. For example. if you want to find all of the files that have not been opened since the beginning of the year. you could use: FILES {SELECT FILEKIND = D[MC]ALGOLSYMBOL} Although you must not enclose your target string in quotes.0327)} you will get a syntax error as CANDE interprets the “41. to find all of the files under your usercode that haven’t been touched this year and are over 500 sectors in size. Parentheses cannot be used in a SELECT expression. use: FILES {SELECT SECTORS > 500 AND LASTACCESSTIME < 1995=} To further refine the list by excluding all files that are under the directories SYMBOL and SYSTEM.0327). To do this. To avoid this problem. For example.2 (41. use: FILES {SELECT SECTORS > 500 AND LASTACCESSTIME < 1995= AND NAME <> SYMBOL/= AND NAME <> SYSTEM/=} You may intermix AND and OR operations in the same SELECT request.Z"} In this case. you must substitute a wildcard character to handle them.0327)} This will successfully find the file.2?(41. you must use a wildcard expression. so you are stuck with the default evaluation rules. the quotes are part of the target. This means that if you use an expression such as: SELECT LASTACCESSTIME > 1991= AND LASTACCESSTIME < 1995= OR SECTORS > 500 the expression LASTACCESSTIME < 1995= OR SECTORS > 500 Volume 9. so they must be specified in order to locate a match.253. use the command: FILES {SELECT LASTACCESSTIME < 1995=} The trailing wildcard accounts for all of the extra positions (down to the fractions of a second) that are stored as part of the date. If you attempt to locate it through: FILES {SELECT RELEASEID = SSR 41. If your target contains blanks.54 \ Gregory’s A-Series Technical Journal OLD/SYM/FACSMANAGER SYM/FACSCOPIER SYM/FACSMANAGER SYM/FACSSUPPORT 7 FILES FOUND # DMALGOLSYMBO DMALGOLSYMBO DMALGOLSYMBO DMALGOLSYMBO 2236 1033 2236 1865 Similarly. if you have the file X/"Y.253. The ORs are evaluated first and then the ANDs. For example.2 version of SYSTEM/ALGOL has a RELEASEID of SSR 41.

if you specify: – <attribute name> the report will be in descending order by that attribute. If you are using a SELECT expression. The command would be: September. construct your SELECT condition using either all ANDs or all ORs. As we mentioned earlier. and you want to include that attribute in your report. with SHOW substituted for SELECT. You can override this ordering with a <SORT specification> and generate instead a report that is ordered by any combination of file attribute values. The syntax for the <SORT specification> is: SORT + < attribute name > Again. you may specify as many different attributes as you like. Suppose. SHOW supports the same syntax as SELECT. By default. you will need to include a SHOW condition as well. and use SHOW when you want the attribute included in the report. Therefore. Simply substitute the word SHOW for SELECT. to locate all of the files last opened before the start of the year that are over 500 sectors in size. Use only spaces to separate the items. If you specify: + <attribute name> the report will be written in ascending order by that attribute. that you want to obtain a list of all of the files under your usercode that are over 500 sectors in size. This will be true unless the attribute whose relation you’ve specified is included in the default report. and you’ve got it! For example. if you want to locate files based upon some attribute. As the diagram shows. this is the same list of <attribute name>s that you can use in a SHOW or SELECT clause. for example. date. the report is ordered in the same manner as a FILEDATA report: first by the length of each directory node. and you want to see the actual file attribute value which fulfilled your condition. and then alphabetically. and the result of that will be ANDed with LASTACCESSTIME > 1991 to determine whether or not the file is included in the report. For easily predictable results. use: FILES {SHOW SECTORS > 500 AND LASTACCESSTIME < 1995=} This is the same command given above. The generated report looks like this: = ON CONTINUUM {SHOW SECTORS > 500 AND LASTACCESSTIME < 1995=} File Name Sectors LastaccessTime --------------------------+----------+--------------------DBF/TESTGEMCOSDB SYM/DEPOT/FEEDTPMCS SYM/IXLOG SYM/ZOLLE COMS/DUMP/032093/183340 5 FILES FOUND # 4096 868 532 546 1400 05/15/1993 12/21/1994 12/16/1993 12/21/1994 03/19/1994 @ @ @ @ @ 16:38:58 16:49:26 11:47:07 16:42:01 18:35:05 Therefore. you do not need to specify it twice. and show the name. 1995 . There are no commas used if more than one attribute is specified. use SELECT when you want to use a relation but not include it in the report. and sector size in the report. and you want that report sorted with the largest files at the top.CANDE: File Searching / 55 will be evaluated first. The SORT Specification The <SORT specification> determines the order of the report.

you can list your files in order by type — first the codefiles.2 documentation CD into a CD-ROM drive that is connected to your A-Series system. They perform the same function as the RES. For example. There is no longer any excuse for losing track of your files! Lastly. For example. if you sort by LASTACCESSTIME. and ALL <output options>.SECTORS} File Name Sectors --------------------------+-----------------------OLD/SYM/TPMCS/TPMCSSUPPORT SYM/TPMCS/TPMCSSUPPORT DBF/TESTGEMCOSDB SYM/SITENETSUPPORT SYM/SITENETSUPPORT/930512 SYM/TPMCS/JANUS TOURIST/S/TP/Z100 SYM/TPMCS/LAPIN 5614 5614 4096 3738 3724 2058 2044 1568 Since you can sort on any file attribute. the <output options> are ignored. and you enter the command: FILES = ON LINC152_PTX {SEARCH CDR} you will get a report that begins thusly: *= ON LINC152_PTX {SEARCH CDR} File Name Filekind Records --------------------------+------------+------------+ *BOOKLIST *H/"ACCEL. etc. NON.56 \ Gregory’s A-Series Technical Journal FILES {SHOW SECTORS > 500 SORT –SECTORS} A partial report would look like this: = ON CONTINUUM {SHOW SECTORS > 500 SORT . sort by the NAME attribute. For example: FILES {SORT +NAME} The SEARCH Specification The <SEARCH specification> allows you to specify the global domain of the FILES command via the syntax: SEARCH RES IDENT NON RESIDENT ALL CDROM USERCODEONLY The first three values deal with archived files. For example. starting on page 9-207. if you want a report that is in true alphabetical order by file name. you can quickly locate files that haven’t been touched in years. then the source files. see the subsection titled “Showing Archived Files”. FILES {SEARCH RESIDENT}:NON reports just the resident files.06 . If your SEARCH clause conflicts with your <output options>. respectively.300" DATA DATA 2312 842 Volume 9. you can obtain a variety of different reports that were previously difficult to obtain. if you insert the LINC 15. The CDROM option tells CANDE to list the files on an ISO standard CD-ROM. If you sort by FILEKIND. For more information on them. then the data files.

(Not all are. FILES commands that use <file options> are processed by the MCP procedure ASERIES_INFO.300" *H/"BYID. When <file options> are specified.CANDE: File Searching / 57 *H/"ACCESS. these two do not return the same results. the disk in the CD-ROM drive must be named. SEARCH USERCODEONLY inhibits this default action. Side-Effects of the File Options There are side-effects to using <file options> in your command.300" *H/"BARCHART. With a simple FILES command.300" *H/"BOOL. For example. both return the same results.300" *H/"ACTON. on the other hand. while a <directory name> does. However. 1995 . CANDE will give you a report on the *SYSTEM directory (on your pack family). if you include any <file options> in your command. The command: FILES ON STORAGE(CDROM) searches a CD-ROM disk named STORAGE that is formatted in A-Series directory format. the commands: FILES <file directory> and FILES <directory name> mean the same thing.300" *H/"BARON. A <file directory> does not use the trailing /=. if you enter: FILES SYSTEM/= {SHOW FILEKIND = NEWPCODE} and there is no SYSTEM directory under your usercode. Default action is to search the global (*) directory if the directory you specify in your command cannot be found under your usercode. SEARCH USERCODEONLY instructs CANDE to only search for your target files under your usercode. As stated at the beginning of this article. expects a disk that uses an ISO directory structure. so beware. Again.300" DATA DATA DATA DATA DATA DATA DATA DATA 468 404 1352 1698 288 950 269 983 You need to supply the correct name in the command for CANDE to identify what CD-ROM you want searched. Moreover. SEARCH{CDROM}. as those are in Library/Maintenance format. I have noticed a particular inconsistency when using a <file directory> with <file options> as opposed to a <directory name> or a wildcard expression in the same context.300" *H/"ADVISORS. the rules are as follows: September. this option does not work with a system software distribution CD-ROM. specify: FILES SYSTEM/= {SHOW FILEKIND = NEWPCODE SEARCH USERCODEONLY} Now CANDE will only look under your usercode. use the ODT (or MARC) command: PER CD Unfortunately. If you want to prevent that action. neither one works with a CDROM in Library/Maintenance format. Note that specifying {SEARCH CDROM} is completely different from putting the modifier (CDROM) after a <family name> in your FILES command. The final option.300" *H/"BYSORT. while those without <file options> are processed by the old CANDE logic.) To obtain the name of the disk.

If a <file directory> is given (i. §8. only the directory name is returned. June. was moved from the GRIND stacks to a new stack called the SERVANT stack.. however.e. Gregory’s A-Series Technical Journal. You must use a three-letter token of RES. these words may be fully spelled out as RESIDENT and The Complete CANDE Primer. If a <directory name> is given (i. Gregory Publishing Company. 5 NONRESIDENT. This is not true.. Donald J. 9 SYSTEM/PDIR requires commas between the attributes. And while you’re at it. op.06 . Wrap-up There are additional features available in the FILES command which are beyond the scope of this article. 17 – 18. We will discuss this in Part Five of this series in the next issue of the A-Series Technical Journal.. Keep this in mind when specifying <file options> in your FILES commands. 6 7 The Common Scan Routines will properly recognize an embedded period in a quoted file name. or ALL. pp. send Unisys a thank-you note for implementing such a great feature in CANDE! 1 The LFILES command runs the program *SYSTEM/FILEDATA. Volume 9.. Therefore.2). In particular.4. For a complete description of the FILES command. According to the CANDE Operations Reference Manual. none of the files under that directory are reported. the Complete CANDE Primer. pp. NON.2. 9:04. 2 Gregory.58 \ Gregory’s A-Series Technical Journal 1. the files under that directory are reported. 1986. 1995. 2. 9-109 – 9-120. A-Series CANDE Operations Reference Manual. form #8600 1500-200. “PDIR: the Modern Way to Search for Files”.e. This is one of the few parsing libraries that properly handle quoted file titles. see the Unisys CANDE Operations Reference Manual. don’t do it! 8 Unisys Corporation. there are additional pattern matching features available which support characters not in the standard USA character set. Donald J. vol. The work. “CANDE Commands: FILES: Selecting Files with Directory Name Nodes: Using the ? (Question Mark) Wild-Card Character” (Doc ID #13256 in SSR 41. Most programs attempt to identify the end of a title by “scanning for a period”. 3 4 Gregory.. This is a bit of inconsistency caused by the retention of the old logic in combination with the new logic. which will fail if you have a period inside quotes in your file title. cit. no /=). Section 3. plus several more pattern matching and wildcarding examples. the /= is included).

400 300COMPILE OBJECT/P1 WITH ALGOL LIBRARY. Responses are returned to the user’s terminal. Before execution. PAGE = 24. The <DO file> may contain any CANDE command except control commands. This feature enables the CANDE user to save a series of instructions in a disk file and submit them. MAXINPUT = 1920. While useful in a few limited contexts. That feature is parameters. WAIT. Each line of the script is then executed in turn as it comes to the top of the queue. When the sequence completes. 1995 .CANDE: Using Parameters with ‘DO Files’ / 59 CANDE: Using Parameters with ‘DO Files’ eginning in the Mark 2. The script runs from the user’s terminal. 700 600COMPILER DATA CARD 800 700$$ SET MERGE RESET LIST 900 800?END JOB 1000 START 1100 REMOVE September. A simple example of a <DO file> is: 100 TERM DOWN 4 200 ESC HEX = ! If these two lines are stored in a disk file named SCRIPT/1. All behavior is the same as if the user entered the commands from the terminal rather than from a disk file. That script would be: 100 MAKE WFL/COMPILEIT JOB 200 100?BEGIN JOB COMPILEIT. Suppose we want a quick and easy way of submitting compiles into WFL job queues so we can avoid using the on-line COMPILE command in CANDE. CANDE takes the contents of SCRIPT/1 and inserts it into the user’s input queue. each line is displayed to the user. MAXOUTPUT = 1920. SCREEN. We discussed the ‘DO file’ facility in depth in the Complete CANDE Primer. We gave a simple example of a static script in the previous section. CANDE is ready for the next input from the user. is also displayed. TITLE=P1). But effective scripting requires one very important ingredient that the CANDE ‘DO file’ feature has been lacking until now. we can write a simple script to process a single program. as shown in the above example. The Need for Parameters The original implementation of the ‘DO file’ feature provided only for static scripts. Let’s now tackle a more complex script. WRAPAROUND = TRUE. 500 400COMPILER FILE SOURCE 600 500 (KIND=DISK. "\" ESC HEX = ! #ESCAPE HEXADECIMAL = ! When the DO command is entered. FORMSCAPABLE = FALSE. Through effective scripting. The CANDE response would be: #FILE (Q)SCRIPT/1 ON CONTINUUM # TERM DOWN 4 #LINE = 80. you can eliminate repetitious work and thereby save yourself hours of time. The material which follows is written under the assumption that the reader is familiar with that in the CANDE Primer. to CANDE for execution. 300 200QUEUE = 2. Unisys gave CANDE users the ‘DO file’ feature. DOWN = 4. then the command: DO SCRIPT/1 would cause them to be executed. Scripting provides an excellent solution to a very large number of problems. The response to the command.8 release. as a script. this does not address the general problem.1 There are several options available with the DO command which are discussed in that book. if any. Without the parameter facility.

05 .60 \ Gregory’s A-Series Technical Journal This script. (You have to save it because the script itself MAKEs a workfile. 300COMPILE OBJECT/P1 WITH ALGOL LIBRARY. You might also want to change other things about the file. of course. numbers. Then. which has the syntax: 99 < parameter name > < default spec> . 200QUEUE = 2. so the script will not successfully run if you have a workfile loaded. 400COMPILER FILE SOURCE 500 (KIND=DISK. you will begin to accumulate many little files all for the same purpose but with different program names. called SCRIPT/2. 600COMPILER DATA CARD 700$$ SET MERGE RESET LIST 800?END JOB START #UPDATING #RUNNING 6624 #JOB 6625 IN QUEUE 2 # REMOVE # #6625 BOJ #6625\6626 #6625\6626 #6625\6625 COMPILEIT BOT ALGOL OBJECT/P1 EOT (Q) *ALGOL OBJECT/P1 EOJ (Q) JOB COMPILEIT The problem with this setup is that if you want to compile a different program. An example execution of it is: #FILE (Q)SCRIPT/2 ON CONTINUUM # MAKE WFL/COMPILEIT JOB #WORKFILE WFL/COMPILEIT: JOB 100?BEGIN JOB COMPILEIT. The syntax for a <parameter declaration> is: PARAMETERS ( < parameter specification> ) : SUBCHAR < param delimiter > The word PARAMETERS and the left parenthesis (() must both appear on the first line of the <DO file>. TITLE=P1). Declaring Script Parameters To use parameters in your <DO file>.) If you decide to keep both versions of the DO file. or underscores (_). the other characters may be letters. Thus. The remaining text may be spread across multiple lines of the file. when you want to use a file you made weeks previously. Each <parameter name> may be up to 63 characters in length. This is done through the <parameter specification>. you may not even remember which file contains the instructions you want! The answer to this. and then DO it. use the REPLACE command to change the program name. hyphens (-). save it. the following are all valid <parameter name>s: Volume 9. Inside the parentheses you define a series of parameter names and optional default values. The <parameter name> must begin with a letter. creates a WFL job that will compile the source file P1 and create the codefile OBJECT/P1. you have to load this file. you must first declare those parameters at the beginning of the <DO file>. is to use parameters in your <DO file>. leading to the proliferation of more little <DO file>s.

DO SCRIPT/4 ("LINE 80 PAGE 24 WAIT") This substitutes the text LINE 80 PAGE 24 WAIT for #PARAM1#¸ creating the command TERM LINE 80 PAGE 24 WAIT and submits that to CANDE. WAIT. The need for quotes is determined by the parameter type. you must supply a value for the parameter. MAXOUTPUT = 1920. There are four possible parameter types: integer. "\" Note that the 4 has been substituted for the text #PARAM1# in the file. MAXINPUT = 1920. Just insert the parameter name into the script and surround it with <param delimiter> characters. PAGE = 24. It is not limited to a single token in that command. the parameter to SCRIPT/4 was enclosed in quotes. so whatever you type for the parameter’s value will be inserted to create the CANDE statement. SCREEN. real. Thus. if we have a file called SCRIPT/4 that contains just: 100 PARAMETERS (PARAM1) 200 TERM #PARAM1# we could do either of the following: DO SCRIPT/4 ("DOWN 4") This substitutes the text DOWN 4 for #PARAM1#¸ creating the command TERM DOWN 4 which is submitted to CANDE. WRAPAROUND = TRUE.CANDE: Using Parameters with ‘DO Files’ / 61 P1 PARAMETER1 PARAMETER-1 PARAM_1_STRING We will discuss the use of the <default spec> in a later section. 1995 . For example: 100 PARAMETERS (PARAM1) 200 TERM DOWN #PARAM1# When you submit this file. DOWN = 4. That value will be used wherever the <parameter name> appears. The rules for defining each possible constant are as follows: September. boolean. and string. you could enter: DO SCRIPT/3 (4) The resulting execution would be: #FILE (Q)SCRIPT/3 ON CONTINUUM PARAMETERS (PARAM1) # TERM DOWN 4 #LINE = 80. Whatever you enter as the parameter’s value (through the DO command) is literally inserted in place of the parameter when the command is submitted to CANDE. if the above file is called SCRIPT/3. Thus. Thus. which CANDE infers from the usage of the parameter. Using Parameters in the Script Using a parameter in a <DO file> script is extremely simple. Parameter “Types” As you may have noted. Each may receive a constant value when you enter the DO command. The substitution will be a literal one. and the command executed was: TERM DOWN 4 A parameter can substitute for any part of a CANDE command. we now have a much more flexible script because the parameter substitutes for part of a command rather than just a single token. The default <param delimiter> is the pound sign (#). FORMSCAPABLE = FALSE. while that to SCRIPT/3 was not.

With the <default spec>. The syntax for the <default spec> is: = DEFAULT < parameter name> & < string constant> < integer constant> < real constant> < boolean constant> The equal sign is required. (There is no provision for specifying an exponent. however. quotes are optional. For the other constants. Thus. SCRIPT/4 could only be executed with the parameter value enclosed in quotes.05 . the default value of 4 is used instead. If a quote is to be included inside the string. A string constant may be any sequence of characters enclosed in quotes. if the parameter is not specified. It may be from 1 to 12 digits in length. as in: DO SCRIPT/4 ("DOWN 4") Specifying Default Values As noted earlier. Instead. you must separate the string into separate segments and use the ampersand (&) to join them together." String constants must be enclosed in quotes. You cannot split a <string constant> over different lines in a <DO file>.) A boolean constant is either the keyword TRUE or FALSE. This value will be used if no value is supplied in the DO command. In our previous examples. SCRIPT/3 could be executed with either of the following commands: DO SCRIPT/3 (4) DO SCRIPT/3 ("4") However. It may be prefixed by an optional sign (+ or –). you can use any of the following commands to set your default “down” specification to 4: DO SCRIPT/5 DO SCRIPT/5(4) DO SCRIPT/5("4") Now it is no longer an error to omit the parameter. you can give the parameter a default value. The following variation of SCRIPT/3 illustrates the use of a <default spec>: 100 PARAMETERS (PARAM1 DEFAULT = 4) 200 TERM DOWN #PARAM1# If this file is called SCRIPT/5. while SCRIPT/4 required a string parameter. consider the following modification to SCRIPT/4: 100 PARAMETERS (PARAM1 DEFAULT = 200 "LINE 80 " & Volume 9. the PARAMETERS clause permits you to include a <default spec> as part of a <parameter name> definition. CANDE will then treat the entire expression as a single string value for one parameter. If you have a single <string constant> that requires more than a single line. For example: "This pair of quotes here ("") represents a single quote to CANDE.62 \ Gregory’s A-Series Technical Journal • • • • An integer constant is a number composed entirely of digits. A real constant is the same as an integer constant except that it may contain an optional decimal point inside the number. The keyword DEFAULT is optional. you must substitute two quotes where you want the quote to be. SCRIPT/3 used an integer parameter. For example.

100 PARAMETERS ( 200 PROGRAMNAME) 300 MAKE WFL/COMPILEIT JOB 400 100?BEGIN JOB COMPILE/#PROGRAMNAME#. 500 200QUEUE = 2. follows below. in some cases we might need to use DCALGOL. 200QUEUE = 2. However. The September. TITLE=P1). The shading depicts the lines which were revised from the original.CANDE: Using Parameters with ‘DO Files’ / 63 300 "PAGE 24") 400 TERM #PARAM1# CANDE joins the two segments "LINE 80 " and "PAGE 24" into the single <string constant>: "LINE 80 PAGE 24" This value is then used as the default for the TERM command if no parameter is specified. Building a Compile Utility We began this article with an example <DO file> that would build a WFL job and initiate a batch compile of a program. The revised <DO file>. or NEWP. 300COMPILE OBJECT/P1 WITH ALGOL LIBRARY. In this case. Suppose we also want to specify the compiler through a parameter as well. we can turn this into a more general-purpose <DO file> that can compile a variety of programs and set various options in the process. 1995 . To begin with. TITLE=#PROGRAMNAME#). use the command: DO COMPILE/SCRIPT/1 ("P1") The results will be: #FILE (Q)COMPILE/SCRIPT/1 ON CONTINUUM PARAMETERS ( PROGRAMNAME) # MAKE WFL/COMPILEIT JOB #WORKFILE WFL/COMPILEIT: JOB 100?BEGIN JOB COMPILE/P1. 600 300COMPILE OBJECT/#PROGRAMNAME# WITH ALGOL LIBRARY. 700 400COMPILER FILE SOURCE 800 500 (KIND=DISK. we want the default compiler to be ALGOL. DMALGOL. now called COMPILE/SCRIPT/1. Using the parameter feature. we will make the program name a parameter. 400COMPILER FILE SOURCE 500 (KIND=DISK. 900 600COMPILER DATA CARD 1000 700$$ SET MERGE RESET LIST 1100 800?END JOB 1200 START 1300 REMOVE To compile program P1 with this <DO file>. 600COMPILER DATA CARD 700$$ SET MERGE RESET LIST 800?END JOB START #UPDATING #RUNNING 6634 #JOB 6635 IN QUEUE 2 # REMOVE # #6635 BOJ COMPILE/P1 #6635\6636 BOT ALGOL OBJECT/P1 #6636 PK47 (Q)OBJECT/P1 REPLACED ON CONTINUUM #6635\6636 EOT (Q) *ALGOL OBJECT/P1 #6635\6635 EOJ (Q) JOB COMPILE/P1 Now we have the ability to change the program name at any time.

But we could also use: DO COMPILE/SCRIPT/2 ("P1". Volume 9. 900 600COMPILER DATA CARD 1000 700$$ SET MERGE RESET LIST 1100 800?END JOB 1200 START 1300 REMOVE Now if we use the command: DO COMPILE/SCRIPT/2 ("P1") we will get the same results as with COMPILE/SCRIPT/1. 100 PARAMETERS ( 200 PROGRAMNAME. You can add as many variations as you like by adding more parameters. you can also use parameters inside lines that become part of a <data deck> that is later read as input to the WFL job. 300COMPILE OBJECT/P1 WITH DCALGOL LIBRARY. TITLE=P1). 200QUEUE = 2. 250 COMPILERNAME = "ALGOL") 300 MAKE WFL/COMPILEIT JOB 400 100?BEGIN JOB COMPILE/#PROGRAMNAME#. This could be another parameter with a default value. CANDE will literally paste the value you supply with the DO command into the file when processing it. so P1 is compiled with the ALGOL compiler. Again. the changes are highlighted.64 \ Gregory’s A-Series Technical Journal simplest answer is to create a second parameter that has a default value of "ALGOL". you might want to make the queue specification at line 500 (of the <DO file>) changeable. called COMPILE/SCRIPT/2. Therefore. 700 400COMPILER FILE SOURCE 800 500 (KIND=DISK. COMPILERNAME = "ALGOL") # MAKE WFL/COMPILEIT JOB #WORKFILE WFL/COMPILEIT: JOB 100?BEGIN JOB COMPILE/P1. It can be in any context. For example. would be as follows.05 . TITLE=#PROGRAMNAME#). the results are: #FILE (Q)COMPILE/SCRIPT/2 ON CONTINUUM PARAMETERS ( PROGRAMNAME. 600 300COMPILE OBJECT/#PROGRAMNAME# 650 350 WITH #COMPILERNAME# LIBRARY. 500 200QUEUE = 2. The default value for COMPILERNAME is "ALGOL". The file. One of the more interesting things you can do with these parameters is use them when building a <data deck> for the WFL file. CANDE doesn’t care where in the <DO file> the parameter is used. 600COMPILER DATA CARD 700$$ SET MERGE RESET LIST 800?END JOB START #UPDATING #RUNNING 6642 #JOB 6643 IN QUEUE 2 # REMOVE # #6643 BOJ COMPILE/P1 #6643\6644 BOT DCALGOL OBJECT/P1 #6644 PK47 (Q)OBJECT/P1 REPLACED ON CONTINUUM #6643\6644 EOT (Q) *DCALGOL OBJECT/P1 #6643\6643 EOJ (Q) JOB COMPILE/P1 And program P1 has now been compiled with the DCALGOL compiler. 400COMPILER FILE SOURCE 500 (KIND=DISK. "DCALGOL") In this case.

consider COMPILE/SCRIPT/3: 100 PARAMETERS ( 200 PROGRAMNAME.CANDE: Using Parameters with ‘DO Files’ / 65 You can put this feature to good use by providing a few parameters whereby the user can supply <compiler options> to the compile job. TITLE=P1). COMPOPTION3 = "%") # MAKE WFL/COMPILEIT JOB #WORKFILE WFL/COMPILEIT: JOB 100?BEGIN JOB COMPILE/P1. 400COMPILER FILE SOURCE 500 (KIND=DISK. COMPOPTION1 = "%". TITLE=#PROGRAMNAME#). 900 600COMPILER DATA CARD 1000 700$$ SET MERGE RESET LIST 1010 710$$ #COMPOPTION1# 1020 720$$ #COMPOPTION2# 1030 730$$ #COMPOPTION3# 1100 800?END JOB 1200 START 1300 REMOVE We will use a DO command with only two sets of <compiler options>. The DO command is: DO COMPILE/SCRIPT/3 ("P1". 1995 . "RESET XREF XREFFILES") The result is: #FILE (Q)COMPILE/SCRIPT/3 ON CONTINUUM PARAMETERS ( PROGRAMNAME. COMPOPTION2 = "%". 200QUEUE = 2. 600 300COMPILE OBJECT/#PROGRAMNAME# 650 350 WITH #COMPILERNAME# LIBRARY. The default for these parameters would be blank or the single character "%" so they would be ignored by the compiler if not used. 700 400COMPILER FILE SOURCE 800 500 (KIND=DISK. "SET LIST STACK LINEINFO NOBINDINFO". "DCALGOL". 600COMPILER DATA CARD 700$$ SET MERGE RESET LIST 710$$ SET LIST STACK LINEINFO NOBINDINFO 720$$ RESET XREF XREFFILES 730$$ % 800?END JOB START #UPDATING #RUNNING 6651 #JOB 6652 IN QUEUE 2 # REMOVE # #6652 BOJ COMPILE/P1 #6652\6653 BOT DCALGOL OBJECT/P1 #6653 PK47 (Q)OBJECT/P1 REPLACED ON CONTINUUM #6652\6653 EOT (Q) *DCALGOL OBJECT/P1 #6652\6652 EOJ (Q) JOB COMPILE/P1 September. 270 COMPOPTION2 = "%". For example. 260 COMPOPTION1 = "%". 300COMPILE OBJECT/P1 350 WITH DCALGOL LIBRARY. 250 COMPILERNAME = "ALGOL". 500 200QUEUE = 2. 280 COMPOPTION3 = "%") 300 MAKE WFL/COMPILEIT JOB 400 100?BEGIN JOB COMPILE/#PROGRAMNAME#. COMPILERNAME = "ALGOL". so the third parameter will take its default value.

this sequence works. is not enclosed in quotes. and everything that follows the colon on a single line of your <DO file>. If you do. In a large number of contexts.. you may omit any combination of the optional ones in your DO command."SET LIST") This will compile program P1 with the ALGOL compiler. 100 PARAMETERS ( 200 PROGRAMNAME. you must use it in a context that will give you error free results for every combination that your <DO file> is designed to handle.66 \ Gregory’s A-Series Technical Journal Since the ALGOL compilers do not complain about lines that begin with two dollar signs and are followed immediately by a comment character (%). If you are processing a <DO file> that uses several optional parameters. To use the SUBCHAR part. as shown in the above examples. Changing the Parameter Delimiter The character used to identify parameter usage in the <DO file> is called the <param delimiter>. you must put the right parenthesis. Recall that the syntax for a <parameters declaration> is: PARAMETERS ( < parameter specification> ) : SUBCHAR < param delimiter > The optional SUBCHAR part allows you to redefine the <param delimiter> to any character of your choice. The ones you omit do not have to be at the end of the list. However. For example. setting the LIST option. To redefine it. For example.05 . 300 COMPILERNAME = "ALGOL") 400: SUBCHAR @ does not work. To omit a parameter in the middle of the list. however. This character must not be used for any other purpose inside the file. you will not run into any conflict with this character. All uses of a parameter must be unconditional. 300 COMPILERNAME = "ALGOL" 400 ) : SUBCHAR @ will work because all four elements are on the same line. There is no way to code an expression such as: If COMPOPTION3 = "%" then don’t include it. to process COMPILE/SCRIPT/3 using the default value for COMPILERNAME but including a "SET LIST" instruction in COMPOPTION1. you must specify a different character in your <parameters declaration> at the start of the <DO file>. If you fail to do this. use the command: DO COMPILE/SCRIPT/3 ("P1". Volume 9. you will need to redefine the <param delimiter> as another character. If it happens to be used out of context. CANDE will reject your <DO file> with the message: #SYNTAX ERROR IN DO FILE RECORD #DO FILE ABORTED AT LINE <line number> The default <param delimiter> is the pound sign (#). The <param delimiter> character. If you want to use COMPOPTION3 at all within your <DO file>. the colon. use two adjacent commas. the SUBCHAR specification is completely ignored. Other variations result in a runtime error. CANDE will either ignore your SUBCHAR specification or give you a runtime error. the sequence: 100 PARAMETERS ( 200 PROGRAMNAME. This is fortunate because there is no testing facility provided in the CANDE ‘DO file’ feature.

Again. 100 PARAMETERS ( 200 PROGRAMNAME. 280 COMPOPTION3 = "%" 290 ) : SUBCHAR @ 300 MAKE WFL/COMPILEIT JOB 400 100?BEGIN JOB COMPILE/@PROGRAMNAME@. pp. the file below. you would have to change the <param delimiter> to some other character that was not used anywhere in the file. 700 400COMPILER FILE SOURCE 800 500 (KIND=DISK. 530 230 BEGIN 540 240 REMOVE OBJECT/#FYLENAME. September. Gregory Publishing Company. the Complete CANDE Primer. The WFL syntax for doing this requires that you use a pound sign. 276 – 280. Donald J. 580 280 600 300COMPILE OBJECT/@PROGRAMNAME@ 650 350 WITH @COMPILERNAME@ LIBRARY. 260 COMPOPTION1 = "%". You could not use this inside a <DO file> and use the default <param delimiter>. In COMPILE/SCRIPT/4. we had to make sure that all of the parameters were now delimited by the new character — the at sign (@).. BEGIN REMOVE OBJECT/#FYLENAME. 560 260 570 270CLEANUP ("@PROGRAMNAME@"). Instead. we substitute the at sign (@) as the <param delimiter>. 900 600COMPILER DATA CARD 1000 700$$ SET MERGE RESET LIST 1010 710$$ @COMPOPTION1@ 1020 720$$ @COMPOPTION2@ 1030 730$$ @COMPOPTION3@ 1100 800?END JOB 1200 START 1300 REMOVE After changing the <param delimiter> character through the SUBCHAR specification. 270 COMPOPTION2 = "%".CANDE: Using Parameters with ‘DO Files’ / 67 Suppose that your <DO file> contains a WFL subroutine where a string expression must be used in a REMOVE statement. 1986. the changes are highlighted. 550 250 END. 500 200QUEUE = 2. 1995 . 510 210 520 220SUBROUTINE CLEANUP (STRING FYLENAME). For example: SUBROUTINE CLEANUP (STRING FYLENAME). END. 250 COMPILERNAME = "ALGOL". 1 Gregory. TITLE=@PROGRAMNAME@).

A-Series users were able to get software documentation on line from a standard set of reference files authored by Unisys Corporation. Now the syntax and usage details of every CANDE command are at any user’s fingertips. Moreover.1 When you enter help mode. Only commands related to the Help facility and control commands (those preceded by a question mark) are valid. and the display area. The top line is the command line. the feature is extremely fast to both enter and exit. Thus. However. you begin by entering the command: HELP This places your session into help mode. Help Mode To get on-line help through CANDE. Because CANDE was invented long before COMS and MARC. and other Unisys products. its use is not recommended as it will have deleterious side-effects should you enter the command thinking you are in help mode when you actually are not!) Although help mode acts differently than normal CANDE. and this always has to be memorized.5 release. enter either: EXIT or QUIT (The command BYE will also get you out of help mode. the error message line. This line gives you a list of prompts. you receive a screen such as that given in figure 1 (shown on the next page). You can enter any Help System command on this line. For the first time in history. There are two ways to enter a command on this line. all others return an error message.1 software release Unisys gave CANDE users on-line help. In doing so. it did not come with on-line help support. To exit help mode and return to normal CANDE functions. being a command-oriented software product. so you can use it to access documentation on MARC. entering help mode does not fire off a task. When COMS and MARC first became available. And the best part is that anyone can use this feature at any time — without firing up a task. IDC. the option line. they were distributed with a new on-line “help” system.68 \ Gregory’s A-Series Technical Journal CANDE: The Help Facility elp first became a standard feature of the Unisys A-Series computer line in the Mark 3. You can type the command and press the {xmit} key. they implemented a robust Help facility with many user-friendly features. Alternatively. This is probably the slickest part of the implementation. Volume 9. Help Screen Layout Help mode is the first TD830-specific feature in CANDE. You may type any of these commands on the command line and {xmit} it to execute the command.06 . On-line help provides the easiest way for a user to obtain the needed command syntax. In the Mark 4. CANDE behavior is similar to what you would expect if you had run a program. and you can do so as often as you wish without incurring system overhead. The second line is the option line. CANDE expects its users to know proper command syntax. is far more needful of on-line help than MARC or any of the other form-based software products. While in help mode. This screen is divided into four segments: the command line. this Help facility is compatible with the other Unisys documentation files. you can position the screen cursor over any command already displayed there and press the {specify} key. showing the valid help mode commands. The entire feature is handled by a CANDE worker. Yet CANDE.

REFERENCES -| | | | |. There are a couple of others not listed that we shall also describe. You then use the Help System commands to move forward and backward within this information or to move on to other topics.: -.PRINTER -| | | | | | |.TOPICS -----| | | | | |. this line will be filled with underscores all of the way across the screen. The remainder of the screen contains the help information. For the most part.) September. If the most recent command was not in error. You select a topic. this will also execute the command. The third line is where the Help System will report any error messages. and the first page of information on that topic is displayed as shown in figure 1. The following examples illustrate the various commands.* ---------------------------------------------------| | | |.= --<book name>--------------------------------------| Figure 1 Initial Screen Response to the HELP Command You may also position the cursor over any of these commands (on the option line) and press the {specify} key.IN --<book name>-| | | | | |.KEYS -------| |. the operation of the Help System is very straightforward. Using the Help Mode Commands The prompts on the option line list most of the commands you may use.CANDE: The Help Facility / 69 + 6.29 HELP COMMAND + . (The screens are abbreviated for formatting purposes.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ HELP Command Command Line Option Line Error Message Line Display Area (for remainder of screen) Syntax -.? ---------------------------------------------------| | | |.HELP ------------------------------------------------------------| | | | | |-<keyword>--------------------------| |. 1995 . through the HELP command.

command moves the display one page back.. the prompt in the upper left-hand corner will change to a –. Had we not reached the start of the document.28.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ HELLO Command Syntax -.PRINTER -| | | | | | |.REMOVE ----------------------| <book name> --<help book file name>------------------------| | | |.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ | | |. you move that number of lines. the + command will not change the display. If the entire document fits on one screen. above.29 in the file.by itself. In this case.: -. + 6. you advance 1 page at a time. entering a + command will leave the data portion of the screen unchanged.29 and you enter the BACK command. If you are at the end of a document.06 . If you enter a number after the + or .REFERENCES -| | | | If you enter a + or a .29 HELP COMMAND + . For example.HELLO ------------------------------------% ---| | |-<usercode>--------------------| | | |. The section of help text prior to 6. + 6.HELP ------------------------------------------------------------| | | | | |-<keyword>--------------------------| |.TOPICS -----| | | | | |. The screen to the right shows what happens if you enter the command when viewing the screen given at the bottom of page 9-236.29 is 6. the screen in figure 1 shows that we are currently viewing the documentation on the HELP command.29 HELP COMMAND + . The explanation of Entering a .KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ HELP Command Syntax -.symbol. so the prompt in the upper left hand corner automatically changes to the + symbol. The BACK command moves you to the help text that precedes the item you are currently viewing. + 6. and this section documents the HELLO command. as shown on the right. you end up at screen 6.KEYS -------| |. --------------| | | |-------<password>-| | | |.IN --<book name>-| | | | | |.: -. that prompt would remain a -. which is screen 6. However.28 HELLO COMMAND + . the – command returns us to the start of the document.70 \ Gregory’s A-Series Technical Journal Entering a + command moves the screen display one page forward. Therefore. which is shown at right. This is the page that follows the one given in figure 1.ON --<pack name>-| Explanation The HELP command enables you to access any help book generated by the A Series Help Utility./ -| Volume 9.28. if you are currently at screen 6.

CANDE: The Help Facility / 71 The FORWARD command moves you to the section of text which follows the one you are currently viewing.* ---------------------------------------------------| Thus. so you can back up as far as 10 steps if you need to.29 HELP COMMAND + .: -. and enter the FORWARD command.28.? ---------------------------------------------------| | | |. your current screen is discarded and you step back to the screen you had previously: in this case. This command is useful if you make a mistake because you can easily back up a step.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ HELP Command Syntax -.30: documentation on the INSERT command. September.INSERT -----/1*\---------------------------<file title>------| -| | | | | |-<sequence range list>-| | | | | | |----------------<sequence range list>-| | | | | | |-<file title>-| | | | Thus. For example.30 INSERT COMMAND + . 1995 . + 6.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ INSERT Command Syntax |<------------------------------------------------| | | -. and you enter the BACK command once. we move to screen number 6. Use PREV to return to a screen you were previously viewing.29. + 6.29. you can use these commands to get to your target.HELP ------------------------------------------------------------| | | | | |-<keyword>--------------------------| |. screen 6. use BACK to sequentially page backward through the help file.PRINTER -| | | | | | |. if you begin at screen 6. you end up at screen 6. If you cannot remember a keyword or topic that describes what you want. If you then enter the PREV command. The PREV command moves you back to your previous screen.TOPICS -----| | | | | |.KEYS -------| |. If we start again with the screen in figure 1.REFERENCES -| | | | |. The system stores the most recent 10 screens. the BACK and FORWARD commands give you the ability to move sequentially through all of the pages of the help file.IN --<book name>-| | | | | |. but you remember something close to it.

Enter on the command line: HELP <keyword> + KEYS LIST OF KEYWORDS + . later in this article The TOPICS command lists the contents of the help file in order by section.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ CANDE Commands Volume 9. you can always return to the place that you were by immediately entering a PREV command.2 PREREQUISITES 4 GENERAL INFORMATION 4. The parent screen is the screen + 6 CANDE COMMANDS + .3 BREAK CONDITION 4. As you may have noted. 2.1 STARTUP FILES AND RESTART FILES 4. Enter the KEYS command to bring up the first page of keywords. Page through the listing using + and .2 MULTIPLE COMMANDS 4. When you find the topic you want. A keyword search brings you to the section of text which defines that keyword. “Rules for Keyword Searching”.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ TOPICS LIST OF TOPICS 1 FRONT MATTER 2 TRADEMARK INFORMATION 3 INTRODUCTION 3.6 INPUT QUEUE MANIPULATION 4. To locate the documentation for an item by its keyword. These are discussed in the section.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ <ALPHANUMERIC CHARACTER> <BASE> <CHARACTER> <CODE VISIBILITY MNEMONIC> <COLUMN> <COMPILER NAME> <COMPILER TYPE> <CONTROL CHAR MNEMONIC> <DIGIT> <DIRECTORY NAME> <DIRECTORY TITLE> <DLM> <DOMAIN NAME NODE> <DOMAIN NAME> <EBCDIC CHAR OTHER THAN QUOTE> <EBCDIC OTHER THAN APOSTROPHE> <END COLUMN> <FAMILY NAME> <FILE DIRECTORY> <FILE NAME> <FILE TITLE> <HOST NAME> <HYPHEN> <ID CHAR> <IDENTIFIER> <INC> <INTEGER> <IP ADDRESS NODE> <IP ADDRESS> <LETTER> <LSN RANGE> <LSN> <MIX NUMBER LIST> <MIX NUMBER> <NAME> <NLS> <NUMBER> <OPTION LIST> <PASSWORD> <PERIOD> <SEQUENCE NUMBER> <SEQUENCE RANGE LIST> Option 2 is easier if you already know what the keyword is.1. Each keyword only references one section of help text. there are no commands available for moving from one “hit” to the next in a keyword search.5 SAVED TEXT QUEUE MANIPULATION 4.1 USER IDENTIFICATION AND LOGGING ON 4.2 ACCESSCODES AND RECOVERY FILES 4.commands. CANDE will return the screen which matches that topic entry.1. and press the {specify} key. + TOPICS LIST OF TOPICS + . place the cursor over it and press the {specify} key.until you find the keyword you want. You can scroll through the list of topics using the + and .3 ACCESSCODE TASK ATTRIBUTE 4.72 \ Gregory’s A-Series Technical Journal The KEYS command returns a list of the keywords in the help file. The PARNT command moves you to the “parent” of the screen you are currently viewing. There are a number of rules and conventions that apply to the usage of keywords when using the HELP <keyword> command.1.06 .4 RESPONSE TO CANDE COMMANDS 4. This is because each keyword search has a maximum of one reference.1 AUDIENCE 3. Each entry gives the screen number and title for that section. you can use one of two methods: 1.7 ATTRIBUTES OF CANDE FILES If you press {specify} in the wrong place when on a KEYS or TOPICS screen. Place the cursor over the keyword.

CANDE: The Help Facility / 73 whose number has one less node than your current screen.14 COPY OR ADD COMMAND 6.3. you can easily get a topics list for that section by entering the SUB command. user library manipulation.2 ADD COMMAND 6. and simple examples. Entering the SUB command while on this screen will return an error. These help files are referenced by topics in the current help file. text editing.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ 6.17 DESTNAME COMMAND 6.5 BACKUPPROCESS COMMAND 6.7 BYE COMMAND 6.21 EXCLUDE COMMAND The REF command lists help files that contain additional information.29 (or any screen in the 6.29 HELP COMMAND + . Section 6 of the CANDE help file discusses the CANDE commands.11 CONNECT COMMAND 6.6 BIND COMMAND 6.1. The SUB command lists all of the subtopics.18 DISCARD COMMAND 6. but the first node is always number 6.4 APASSWORD COMMAND 6. As shown at right. 1995 REFERENCES LIST OF REFERENCES + .KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ [MARC HELP TEXT] .7 BYE COMMAND 6.3 ALTER COMMAND 6.11 CONNECT COMMAND 6.1 ACCESS COMMAND 6. which is screen number 6. which belong to a particular screen.10 COMPILE COMMAND 6. such as node 6. Many of the inner nodes.17 DESTNAME COMMAND 6.19 DO COMMAND 6. if any. Commands for which the syntax diagram terminates with a percent sign (%) must appear alone on the input record to CANDE or as the last command of that input record.). This section contains the CANDE commands for task initiation. Commands for which the syntax terminates with a vertical bar (|) may appear in sequence on the input record.6 BIND COMMAND 6.5 BACKUPPROCESS COMMAND 6.18 DISCARD COMMAND 6.15 DCSTATUS COMMAND 6.12 CONTINUE COMMAND 6. do not have any sub-topics. The RLTD command lists all of the topics that are “related” to the current topic.15 DCSTATUS COMMAND 6. You can read other help books using the CANDE HELP command. if you are currently viewing the help screen for any CANDE command.9 CHARGE COMMAND 6. the CANDE help file currently has references to the MARC help file.1 will return a listing of just those three topics.2 ADD COMMAND 6. explanation. However.n series).9 CHARGE COMMAND 6.13 CONVENTION COMMAND 6. The example at right shows the parent of screen number 6.KEys BAck FOrwrd PRev TOpics REf PArnt RLtd SUb QUit ________________________________________________________________________________ 6. the parent will be screen 4.12 CONTINUE COMMAND 6. If you are currently at an outer node. SUB 6 CANDE COMMANDS + .20 ESCAPE COMMAND The example shown here illustrates this. Entering SUB while on screen 4. + 6.1 has three sub-topics.20 ESCAPE COMMAND 6. The parent of screen 4.8 CHANGE COMMAND 6.16 DELETE COMMAND 6.16 DELETE COMMAND 6.1 is screen 4.3 ALTER COMMAND 6. While in help September. entering the RLTD command will return a list of all of the CANDE commands. and so forth.1. That is what was done to obtain the screen shown at right.19 DO COMMAND 6.29). such as screen 6. This means all of the screens that have the same number of nodes as the current screen and whose parents are the same number.14 COPY OR ADD COMMAND 6.8 CHANGE COMMAND 6.10 COMPILE COMMAND 6.4 APASSWORD COMMAND 6. Therefore.29.1 ACCESS COMMAND 6. Each command has its own node number at level 2. It shows the screen returned if you enter the RLTD command while on the help screen for the HELP command (screen 6. The commands are presented in alphabetical order along with the railroad syntax structure. work file creation. you may have noticed from the TOPICS screen shown earlier than screen 4.13 CONVENTION COMMAND 6. each command separated from the following command by a semicolon (. If your current screen is number 4.

The second format changes help files for you. CANDE will re-send a fresh copy of your current screen. The command ‘HELP’ by itself is a shorthand for the command: HELP HELP This is important to know. If you have received less than 10 outputs from the new help file. the command will return an error. you remain within that new help file. This will close your current help file and open up the new one that you have chosen. These are: HELP <keyword> and HELP <keyword> IN <help file> The first. routes you directly to the help screen for a particular topic. It then looks for the keyword you’ve requested in that help file. because if the <help file> you are using does not have the token “HELP” as a keyword. Once you change help files. as described previously under the KEYS command. This command looks for the keyword in your current help file. the easiest way to do this is to go to the REF screen. EXIT and BYE are accepted as synonyms. and press the {specify} key. 2. Otherwise. place the cursor over the file that you want. Use the REF command to list related help files and select one from there using the {specify} key. To go directly to help information on a particular topic. you can return to the old one by entering a series of PREV commands. Use another HELP <keyword> IN <help file> command. It closes your current help file and opens the new one you’ve specified (if available).06 . All of the commands you enter are executed against that help file. For example. your other options for changing help files are: 1.74 \ Gregory’s A-Series Technical Journal mode. Two forms of the command HELP are also supported while in help mode. Searching for Help on a Specific Topic You may enter help mode using any of the commands shown in the following syntax diagram: HELP < keyword> KEYS TOPICS REFERENCES IN < help file> The option you choose determines the first screen presented. HELP DO will bring up documentation on the DO command. which exits help mode and returns you to normal CANDE functions. The last command shown in the option line is QUIT. One command not listed on the option line is REFRESH. If you enter this command. Volume 9. use the HELP <keyword> syntax.

In particular. (*HALT/LOAD. For example. but the keyword <FILE DIRECTORY> uses four tokens: two words. you must use this syntax when searching for any control command. In particular. and once as a composite keyword using the format: <command name> COMMAND This is very annoying because you cannot use any command abbreviations when searching for references on CANDE commands. a left angle bracket. you can abbreviate keywords providing your abbreviation is unique. to find the documentation on the ?DS command. 1995 . One unfortunate oversight in the current CANDE help book seriously affects the usefulness of keyword abbreviations. the abbreviation feature currently has only a limited use at present. For example. you simply use the word. CANDE will then recognize everything between the asterisks as a single keyword. The rules are different when using composite keywords. If the abbreviation you use maps to more than one keyword. This provides an easy way to jump to references where the keywords are quite lengthy. It is useful when you have a long term that can be easily abbreviated. including the angle brackets. GLOSSARY TERM*). use the command: HELP *?DS* Abbreviating Keywords A few shorthands have been provided to improve the convenience of the help system. as in: HELP CHANGE to avoid the error and get the information you want. however.CANDE: The Help Facility / 75 Rules for Keyword Searching Composite Keywords Some keywords consist of a single word. and a right angle bracket. you must surround the keyword with asterisks. so you can use HELP HA to locate it. to look up a reference using a single-word keyword. there is only one keyword that begins with HA. The question mark is considered part of the keyword. HELP FILES will bring you documentation on the FILES command. All of the CANDE commands are entered twice in the book: once under their single-word names. All of the control commands — those beginning with a question mark — are listed as composite keywords. For example. the keyword FILES is a single word. Others consist of multiple words or a combination of words and special characters. In this case. A keyword that consists of more than a single word is called a composite keyword. Thus. For example: HELP *<FILE DIRECTORY>* Note that the complete keyword. was specified inside the asterisks. you get an error message. As you may have noticed from the preceding examples. if you enter something like: HELP CHAN you will get the error message: !!!KEYWORD NOT UNIQUE (MORE THAN ONE FOUND WITH MINIMUM ABBREVIATION) You must use the complete command. For example. Therefore. September.

help book files are kept under the *BOOK directory on your resource family. This command is only valid from the normal CANDE environment. or any special characters.) This file contains the information we have shown throughout this article. Printing HELP Information The commands shown in the diagram on page 9-241 may be suffixed with the option: : PRINTER This fires off a task which prints the requested help information. abbreviate the keyword <FILE DIRECTORY> to just <FILE D. As a general rule.06 . For example: HELP DO:PRINTER #RUNNING 5157 # This command does not put you into help mode. There is no facility from within help mode for printing the help information. The correct command would be: HELP *<FILE D* An asterisk must appear on both sides of the abbreviation. Abbreviations may be used in both your initial HELP command and in any use you make of the command HELP <keyword> while in help mode. Any of these files. you can just type the abbreviation. use the command: Volume 9. you will get an error message. Changing the Help ‘Book’ The files containing help information are called help books.76 \ Gregory’s A-Series Technical Journal You can also abbreviate composite keywords. except for those with ‘SHORTHELP’ in the title. For example: FILES *BOOK/= ON DISK:S *BOOK/= ON DISK File Name Filekind Records --------------------------+------------+------------+ *BOOK/RD/ENGLISH DATA *BOOK/IDC/ENGLISH DATA *BOOK/IDC/SHORTHELP/ENGLISH DATA *BOOK/IMG/ENGLISH DATA *BOOK/IMG/SHORTHELP/ENGLISH DATA *BOOK/COMS/ENGLISH DATA *BOOK/MARC/ENGLISH DATA *BOOK/MARC/SHORTHELP/ENGLISH DATA *BOOK/CANDE/ENGLISH DATA *BOOK/MARCUS/ENGLISH DATA 63 4594 1121 1823 318 3675 34009 8294 11519 2709 Sectors CreationTime This report lists some of the *BOOK files you can find on your system. However. for example.2 To select a file as your default help book. If you omit the right-hand one. then you must surround the entire abbreviation with asterisks. You remain in normal CANDE mode when it completes. if the abbreviation is a single word. if the abbreviation requires two or more words. may be read using the HELP command. You can. You can list the ones available through the FILES command. (The last node will vary depending upon the language in use on your machine. As just shown. CANDE has a default help book called *BOOK/CANDE/ENGLISH.

To change your session help book back to CANDE’s default. CANDE is delivered with *BOOK/CANDE/ENGLISH ON DISK as the default help book. To change CANDE’s default help book back to the plant-specified default.CANDE: The Help Facility / 77 HELP = <help file> For example: HELP = *BOOK/MARC/ENGLISH CANDE will respond with: #SESSION HELP BOOK = *BOOK/MARC/ENGLISH ON DISK From this point forward. The second line reports the default help book title for CANDE. Only if the tankfile is reinitialized will the help book title revert to the default of *BOOK/CANDE/ENGLISH ON DISK. 1995 . It will remain in force even if CANDE is taken down and brought back up. use the command: ?BOOK * Then you get the response: September. you will use the MARC help book. you can set CANDE’s default help book. use the command: HELP * The response will be: #SESSION HELP BOOK = *BOOK/CANDE/ENGLISH ON DISK #DEFAULT HELP BOOK = *BOOK/CANDE/ENGLISH ON DISK These commands that deal with the help book do not put you into help mode. They simply change the default help book you will access when you next enter help mode. For example: HELP = *BOOK/MARC/ENGLISH ON HELPPACK If you want to know what your current help book is. every time you enter help mode. you can append an “ON <familyname>” clause to the command. Any change made via the ?BOOK command is therefore permanent. You may change this using the ?BOOK command. The syntax for this command is: ?BOOK < help file> ON < family name > * For example: ?BOOK *BOOK/CANDE/ENGLISH ON HELPPACK The response will be: #DEFAULT HELP BOOK = *BOOK/CANDE/ENGLISH ON HELPPACK The help book title is saved in the tankfile. use the command: HELP ? The response will be along the lines of: #SESSION HELP BOOK = *BOOK/MARC/ENGLISH ON DISK #DEFAULT HELP BOOK = *BOOK/CANDE/ENGLISH ON DISK The first line reports that you’ve changed your session’s default help book to *BOOK/MARC/ENGLISH. If the help book is not on either your primary or alternate pack families. This change will remain in force until you either log off or change it again through a HELP command. Changing the Default Help Book If you have CANDE control station privileges.

Moreover. This feature has now been provided in a form that is very easy to use. ?BOOK is documented in the CANDE Operations Reference Manual instead of the CANDE Configuration Reference Manual in both the 41. entering and exiting help mode is a low-overhead operation.3 Conclusion The help facility provides a valuable improvement to the CANDE product.78 \ Gregory’s A-Series Technical Journal #DEFAULT HELP BOOK = *BOOK/CANDE/ENGLISH ON DISK Again. The command for accessing the help information is easy to remember. 1 To date. all CANDE features have been compatible with the lowliest of TTY terminals.2 documentation CD’s. CANDE has long needed on-line documentation. As a command-oriented product. this command is part of CANDE “site management. As a result. This is not true of the Help facility. Volume 9. Its use is restricted to control-capable users only. which uses the SPECIFY key of the TD830. so it belongs in the CANDE Configuration Reference Manual.2 and 42.” It is not intended for general use. this feature should address a great many needs for CANDE documentation at a large number of A-Series installations. 2 You can also create your own help files using the Help Utility. 3 For some reason. Any file compatible with *SYSTEM/HELPSUPPORT can be processed through CANDE’s HELP command.06 .

However. you can start it with the simple command: START In this case.CANDE: Other Improvements / 79 CANDE: Other Improvements here are a couple of minor enhancements to CANDE that. Therefore. You used START in the same manner as you do today. For example: START ("XYZ") #UPDATING #RUNNING 7816 #JOB 7817 IN QUEUE 11 # #7817 BOJ TESTIT #7817 DISPLAY:XYZ. CANDE would refuse to load it. and the largest sequence field CANDE uses is 8 characters in length. since all CANDE files must use sequence numbers. The new official limit is 549.1 In Mark 2. If you used CANDE. in Mark 4.048. However. it provided a rather isolated environment from the rest of the system.0. However. The second is an improvement in CANDE’s ability to handle large workfiles. only the START <file name> version of the command would accept parameters. Unisys has finally made it possible for you to start a WFL job that requires parameters without first saving it. you were required to first save the file. you could run programs “on line” through the RUN command.813. Now. the START command was enhanced so that users could pass parameters to WFL jobs. there was no interaction between CANDE and WFL. there was no provision for submitting a WFL job and monitoring it from a CANDE session as there is now. September. With these topics.575 records. I suspect the real limit is 99. In Mark 3. WFL jobs were submitted on punched cards through card readers or through ODT commands. Parameters in the START Command When CANDE was first developed. do not rate an entire article apiece. CANDE gave the error message: #FILE HAS TOO MANY RECORDS CANDE was quickly patched so that it would load larger workfiles. START (<parameter list>) will start a job from a saved or unsaved workfile. #7817\7817 EOJ (Q) JOB TESTIT CANDE File Limits This next feature is from the SSR 42.1 SYMBOL/MCP contains more than 1. As soon as the file crossed that boundary.6 release. The new variation. if you were writing a WFL job that used parameters.7 the START command and the job monitoring commands were added to CANDE. but not a workfile.999 records.887 records. you use the command: START <file name> If the file is loaded as a workfile. the workfile can be either saved or unsaved. and submit it into a job queue by entering the command START. Up through the Mark 2.1.755. enter your WFL commands. The SSR 42. The first is an improvement to the START command.999. If the file is saved on disk. we will conclude our series on the recent improvements to CANDE. 1995 . You create a file of type JOB or DATA. while important. Then you could use: START <file name> (<parameter list>) to get it going.1 release.

06 . such a job could not be monitored from the CANDE station. However. or FORTRAN that would start a WFL job through the ZIP statement.80 \ Gregory’s A-Series Technical Journal From a CANDE terminal you could write a program in ALGOL. 1 Volume 9. COBOL.

The remaining methods are required for sites that run with the NOCOMSCTRL CANDE option set to TRUE. In many ways. • • • Set system SECOPT CLASS = UNSPECIFIED. With NOCOMSCTRL set to FALSE.) Set CANDE option NOCOMSCTRL to FALSE. Of course. This can be achieved using any one of the following methods. is more convenient when NOCOMSCTRL is FALSE. and use a SECOPT CLASS of S0. and over exuberant software theorists or purists. CANDE provides a model that many other software product designers (both on A-Series and on other machines) could certainly learn from! This article describes how to manage CANDE. You can achieve control station status in COMS by logging on: a) with a COMSCONTROL-capable usercode.1 It was also developed before the invention of A-Series Libraries. 1995 . (This is the default if you are not running InfoGuard. which are listed from most convenient (also least secure) to least convenient (most secure). you must also use one of the following methods. If you are not running InfoGuard. it is very easy to manage and tune. the usercode you log onto CANDE with is immaterial: it may be any usercode (privileged or non-privileged. and DATACOMSUPPORT — which must always be present. Log on to CANDE with a CANDECONTROL-capable usercode. and you cannot turn it off. control-capable or not control-capable). Therefore. If you have done any one or more of the three. Method 2. CANDE will grant you control station privileges if you are working from a COMS control station. If you are running with InfoGuard. S1. It is intended for the Site Administrator. GENERALSUPPORT. method #1. marketing types. Once installed. above. Method 1. However. you must set this option through the CANDE command: ?OP + NOCOMSCTRL and then you must take CANDE down and up for it to take effect. c) to any station that is defined as a SPO in the Network Definition Language II (NDLII) or through the Interactive Datacomm Configurator (IDC). This product was written back in the days when engineers were allowed to develop products without interference from budget-conscious managers. Thus. It describes the various CANDE environmental options and how to configure them for the best performance.CANDE: Site Management / 81 CANDE: Site Management nisys’ A-Series CANDE product is one of the simplest products to install and support that you will find around. nearly all of CANDE’s options can be configured on line. Log on to COMS with a COMSCONTROL-capable usercode. you must have “control” status over CANDE. and it uses no special support libraries of its own. To do the activities described in this article. or have your system security class set to UNSPECIFIED. installation is a breeze. you must access CANDE through a COMS window. b) to a station that is defined as a Control Station in COMS Utility. Method 3. Have someone that is currently on a CANDE control station manually designate your CANDE station as a control station through the command: September. These security classes force NOCOMSCTRL to true. The product is dependent only upon system modules — such as the MCP. These methods will also work if NOCOMSCTRL is FALSE. or S2.

you have the privilege and responsibility of tuning CANDE for your site. Each of these options is turned on (or “set”) through the command: ?OP + <option name> Each can be turned off (or “reset”) through the command: ?OP – <option name> Next is the report on CANDE log stations. SAVED TEXT DEPTH=10. The next two sections show “on/off” options you can set through the ?OP command. the <station name> must include the window and dialog name. GRINDLIMIT=2.0182) AT A00SJC2 16:26:50 Friday.2 (41. These are your primary tools for tuning CANDE to the specific requirements of your installation. Volume 9.2 This command is: ?INFO It gives you a report in the following format: #MicroA:27910 CANDE SSR 41. LAISSEZFILE=0. COMPILESPERCENT=100%. These are monitoring stations which report various user activities as they take place on CANDE. These include some very critical options that can determine how well CANDE performs on your machine. QUIT=25.WORK=80. The report wraps up with newsfile. schedule.82 \ Gregory’s A-Series Technical Journal ?CONTROL <station name> If you are on a CANDE window through COMS. The first section provides CANDE identification information. MAXTASKS=200. CANDE also provides a single command that lists nearly all of the CANDE options and their current values. and startup information.253. After that comes a report of various multi-valued CANDE options. TANKING=UNSPECIFIED #SERVANTLIMIT = 4 # NO NEWSFILE #SCHEDULE LIMIT=10 NO USERLIMIT # STARTUP DIRECTORY: CANDE/STARTUP # RESTART DIRECTORY: CANDE/STARTUP/RESTART #RECOVERSESSION = ALL Each section of the report begins with a pound sign (#). FACTORS . Method 4. CANDE Runtime Options CANDE supports a large number of runtime options. August 18. For example: ?CONTROL PSJC10/CANDE/7 is required if the user is on dialog #7 of the CANDE window. 1995 (PST) #OPTIONS SET: ALLMSG LOWMEMORY NOJOBSUMIO #OPTIONS RESET: DUMPOK KEEPSTA DIALLOGIN ALLLOGIN CATDEFAULT CATALOGOK SECDIALIN SECPSEUDO SECALL USECOMSPRIV NOCOMSCTRL NOGETWARN SYSDUMPOK LASTLOGON PASTBATCH LEADINGNUM SHOWALLFILES #THERE ARE NO LOGSTATIONS # MAXSTATIONS=200. which is not possible for a BNAv2 supported terminal. Once you have CANDE control status. using any of the commands discussed in this article. originating from station PSJC10. MAXGRINDS=10. Designate the station as a SPO station in the NDLII or through the Interactive Datacomm Configurator (IDC).06 . This is useful only if the station connects directly to CANDE without going through a COMS window.

To change this value. MAXGRINDS specifies the absolute maximum number of grind stacks that may be executing at any single instant. we will provide additional information about these options. GRINDLIMIT is a bit more immediate than MAXGRINDS. the value given to GRINDLIMIT cannot exceed that specified for MAXGRINDS. and so forth. ENVIRON calls itself multiple times to set up separate “working environments” for the CANDE users. As distributed. (The MAXWORKS variable is zero-based. use the syntax: ?GRINDLIMIT = <number> To query the current value. described above.) According to the CANDE Configuration Reference Manual. and a number of dependent stacks. CANDE must be taken down and restarted for the command to take effect. When a grind stack is executed. use: ?GRINDLIMIT Thus. The maximum value you can set MAXGRINDS to is 13. You must take CANDE down and up before the new value will take effect. MAXGRINDS tells CANDE how many structures it needs to have available to handle the largest number of grind stacks that will be running. GRINDLIMIT specifies the maximum number of grind stacks you want running at the moment. but its value may be changed at any time. You can lower GRINDLIMIT to any value between 1 and MAXGRINDS. Tuning CANDE Performance The options described in this section directly affect the performance of CANDE. In the worst case. called SYSTEM/CANDE. use either ?INFO or the command: ?MAXGRINDS You can enter a change to MAXGRINDS at any time. The CANDE options MAXGRINDS and GRINDLIMIT determine the number of grind stacks CANDE will execute. The dependent stacks process the editing and “shell” commands that CANDE users are so familiar with.CANDE: Site Management / 83 All of these options are documented in the CANDE Configuration Reference Manual3. To change the GRINDLIMIT. the only thing it does is call procedure ENVIRON. September. but it is more limited in power. CANDE will never run more than GRINDLIMIT grind stacks at any given instant. All of the rest of the work is done inside that procedure. These are called the grind stacks. The main stack handles all of the data communications activity. When CANDE comes up. 1995 . You have two commands. GRINDLIMIT also specifies the maximum number of grind stacks that may execute. meaning that there are 6 CANDE “Workers” available in each grind stack that is executing. MAXWORKS is set to 5. They can also have an effect upon the overall performance of your system as well. Certainly it is easier to change the number of grind stacks. The number of times ENVIRON calls itself is determined by a DEFINE in CANDE called MAXWORKS. The grind stacks appear in the mix with the names CANDE/STACK01. However. your change will not take effect immediately. In the discussions which follow. However. CANDE/STACK02. it is more efficient to change the number of grind stacks than to change the number of Workers per grind stack. Grinding out the Work(ers) The CANDE architecture consists of one main stack. use the command: ?MAXGRINDS = <number> To query its value. and within ENVIRON is one called WORKER. We will also describe why the options exist and what results you can expect from various settings. which allow you to do that at runtime. it initiates one or more copies of procedure GRIND as separate tasks. and the change takes effect immediately. Within this procedure is one called ENVIRON. and they handle all of the CANDE user commands. Inside the symbolic for CANDE you will find one procedure named GRIND.

To move on to the next page of output. This is a good setting for a machine with very limited resources (especially memory). You would have to change MAXWORKS to another value and recompile CANDE. such as that work done by the LIST. CANDE must retain all of its information about what the user is doing so it knows how to begin processing the next page of output. the user must enter a “null input” — an input of no characters or an input that is all blank. It keeps this information in a Worker. he will receive the message #WAITING FOR WORKER If this message is appearing much too frequently. I strongly recommend that both MAXGRINDS and GRINDLIMIT be set to at least 3. CANDE divides its work into four general categories: • • • Session management. directory activities. Only Worker #0 can handle commands falling into the first three categories. Worker #0 of that stack will process session log on. with 24 or more megabytes. File manipulation is handled by workers #1 through #5 of the other grind stack. and bring it back up. and it splits the chores between them. During this pause. • CANDE assigns different work to its Workers and its grind stacks based upon the category a particular command falls into. If CANDE does not have sufficient Workers available when a user requests an “internal function”.06 . Volume 9. Then CANDE will separate its functions so that the user functions and the overhead functions are not done by the same grind stacks. In all of these additional grind stacks only Workers #1 through #5 are used. and various editing commands. File manipulation. increase both MAXGRINDS and GRINDLIMIT. This will give you greater freedom to tune your environment through the GRINDLIMIT command. Task management. On our Micro A. Directory management. take CANDE down. you must patch the source file for CANDE. FILES. and the running of Work Flow Language (WFL) processes (such as the COPY command or any command that begins with the word WFL). and the running of external processes. When this is the case. With this setup. the running of internal programs (such as BACKUPPROCESSOR or LFILES). File manipulation is handled by Workers #1 through #5 of the third. such as that work done through the SECURITY or REMOVE commands. Session log on. more grind stacks are run.4 You will have to experiment to determine the best number for your site. As demand increases. I’ve been able to get plenty of good service out of CANDE by changing MAXGRINDS and GRINDLIMIT without messing around with MAXWORKS. These additional grind stacks provide additional workers to do file manipulation activities. set MAXGRINDS to a large number (such as 10). If you have the available resources. If GRINDLIMIT is higher than 3. This puts all of the CANDE functions into a single grind stack. Session log on and directory activities are performed through Worker #0 of one grind stack. which can be set to any value between 1 and MAXGRINDS without having to interrupt CANDE. each page of output is followed by a pause during which the user may read the output. Workers #1 through #5 are reserved for handling exclusively the file manipulation work. Workers #1 through #5 do the file manipulation activities. CANDE fires up exactly 2 grind stacks. Only when the user completes or aborts the command is the Worker liberated for other use. directory activities. If GRINDLIMIT is set to 3. your CANDE service will be very poor if you have more than just a handful of CANDE users. and the running of external processes are all processed out of worker #0 of one grind stack. The division of the work between the various grind stacks is determined by the number of grind stacks run. thereby tying up that Worker. which has only 12 megabytes of memory. This is rarely done and is certainly not a Unisys-approved procedure. such as the processing of log on or log off requests. The running of external processes is done through Worker #0 of a second. we use a GRINDLIMIT of 2. Several of the CANDE commands generate more than one screen page of output. When GRINDLIMIT is set to 2. FIND. CANDE fires up 3 grind stacks. CANDE is distributed with default values of 1 for both MAXGRINDS and GRINDLIMIT. such as the running of user programs. CANDE starts off with an initial setup of 3 grind stacks. However.84 \ Gregory’s A-Series Technical Journal To change the number of Workers per grind stack. as described above.

It is important to note that. NEXT. however. The alternative is to use: ?DS This command also aborts a list report. you can certainly leave it showing the output of a page mode command without adversely affecting CANDE Worker usage.PAGEFORMAT commands all hold a Worker in use between output pages. Once the servant stack completes the request. which is not the case when using ?BRK. Queued commands are marked “pending”. Activities that involve wildcard searching or involve sorting in any fashion are going to take time. during evaluation of the command. this value is wholly inadequate. CANDE gives each user the illusion that he is the sole user of the machine. the PAGE. The idea is to quickly process some activity and ship a report out to the user. FIND:TEXT. They then store the vital information in some station tables and relinquish the Worker after writing one screen of output to the user. each servant stack can only process one task at a time. Tell them to use the command: ?BRK to abort a list report without incurring an error. you will experience frequent occurrences of WAITING FOR WORKER. A more reasonable limit is September. which will have a grind stack Worker pick up the response and send it out to the user. 1995 . To avoid the situation where user A’s FILES command might noticeably interfere with user B’s LIST command. The number of servant stacks is controlled by the command SERVANTLIMIT. That Worker will then attend to other business. If there are no workers available. There is no time-slicing between the two users. Thus. It must process each task to completion before moving on to the next. FIND:PAGEMODE. During the reporting period. one of the users will wait while the other one is processed. Some commands simply cannot be processed that quickly. Like all internal commands. the page mode commands use a Worker to generate a single page of output. CANDE employs a different stack: the servant stack. it sends the report to a grind stack Worker and immediately moves on to the next request. while the LIST. if two people enter a command that uses a wildcard expression. In this case you have more of a training problem than a resource problem. Servant stacks receive their commands from the grind stacks. The syntax for setting the limit is: ?SERVANTLIMIT = <number> The number may be set to any value between 1 and 49. Servant stacks handle lengthy activities. By doing this fast enough. Each new input to one of these commands is handled by the first Worker available. As we said before. You must train your CANDE users to either finish or “break” their list reports when leaving their terminals. The important difference is that the Worker is not tied up during the processing of the command — only during the reporting phase. the Worker determines that a lengthy activity is requested. If. FILES. the output is queued so the servant stack can move on to service the next request. and FIND:TEXT. However. Servant stacks operate in a fashion similar to grind stacks. and only one servant stack is available. it also invokes CANDE’s error recovery logic. The servant stack will complete the work and queue the response. the Worker will be in use.CANDE: Site Management / 85 Thus. It will then notify CANDE. GRIND’s Servants Grind stacks are designed to do short bursts of work. the command is: ?SERVANTLIMIT For some reason. while you do not want to leave your terminal in the middle of a list report. every internal command is processed by a grind stack Worker. To inquire about the current limit. as described above for the LIST command. Unless you have an entire ASeries machine dedicated to your personal use. and other page mode editing commands do not. CANDE is shipped with a default SERVANTLIMIT of 1. it will hand the request off to a servant stack. if your users are constantly leaving their screens in the middle of a LIST or FILES report. which may not be the same Worker that sent the previous page of output. Thus.

and it has 3 grind stacks running. Suppose you have set GRINDLIMIT to 5 and FACTOR WORK set to its default value. and one is not available. CANDE starts a new one right away. Therefore. Servant stacks do not have internal workers.86 \ Gregory’s A-Series Technical Journal somewhere between 5 and 10. This effectively means that all 5 workers must be busy before another grind stack will start. CANDE will use FACTOR QUIT to determine when to shut down extra grind and servant stacks. Once you’ve done this. This will continue until the limits you’ve specified by GRINDLIMIT and SERVANTLIMIT have been reached. Since 5 % . After stack #4 is running. The default value for FACTOR WORK is 80%. the results will change.85 = 4. and another one is needed. you would have to get 10 % . Now if you retain the same GRINDLIMIT but change the FACTOR.06 . When the number of workers doing file manipulation functions equals or exceeds the total number of workers multiplied by FACTOR WORK¸ CANDE starts a new grind stack. you will get a better feeling for a reasonable local limit. With a grind stack. the formula is: <threshold> = (<number of grind stacks> – 3) % <FACTOR QUIT> Volume 9. Instead. CANDE dynamically shuts down grind and servant stacks as usage drops off.8 = 4 CANDE will start up grind stack #4 when either 4 or 5 workers all have work to do. If you turn on LOWMEMORY. you would have to have at least 5 % . the user must wait until an existing one becomes available.25 workers busy before a new grind stack would start. As user demand increases. no additional servant stacks are started. If you set FACTOR WORK to 85%. After a grind stack or a servant stack is started. After your users start working heavily with the wildcard commands (particularly the FILES command). CANDE will fire up more grind stacks and servant stacks. Once grind stack #5 was up.8 = 8 workers all busy before grind stack #5 would be started. it remains in the mix indefinitely unless you’ve set the LOWMEMORY option. CANDE has just begun execution. the user will get the message: #WAITING FOR A SERVANT Managing the Grind and Servant Stacks If you have GRINDLIMIT set to 3 or higher. CANDE starts off with three grind stacks and one servant stack. The decision to fire up an additional grind stack is determined by the option called FACTOR. Each time a servant stack is needed. This gives you 5 workers for file manipulation. depending on the amount of memory you have available. use the command: ?OP + LOWMEMORY To set FACTOR QUIT. To enable LOWMEMORY. If the SERVANTLIMIT has been reached. there would be no further changes in grind stacks unless you changed the value of GRINDLIMIT. Each servant stack can only process a single function. the number of servant stacks is controlled strictly by the SERVANTLIMIT. Thus. use: ?FACTOR QUIT = <number> The default value for FACTOR QUIT is 25%. To set FACTOR¸use the command: ?FACTOR WORK = <number> This <number> represents a percentage value. if all servant stacks are busy.

If there are too many stacks. if you have 5 grind stacks running. setting the number manually is better than having CANDE change things automatically.25 = . CANDE will not drop the number of grind stacks below 3 (providing GRINDLIMIT 8 3).CANDE: Site Management / 87 When the concurrent activity drops below <threshold>. and FACTOR QUIT is 25%. Once down to 4.25 5 % . if you have 7 servant stacks running. 2 WORKERS. the <threshold> is calculated thusly: <threshold> = (<number of servant stacks> – 1) % <FACTOR QUIT> Since each servant stack handles only a single operation. a servant stack is terminated. If there are too few. You can always manually lower the number of active grind or servant stacks by changing GRINDLIMIT or SERVANTLIMIT. 40 STATIONS ACTIVE. For most sites.75 This means that servant jobs would have to drop to 1 before any servant stacks would be shut down. If response is slow. It provides an easy way to determine what CANDE is doing at a specific moment.5 = 2. So. you will get much better performance out of CANDE by letting your grind stacks and servant stacks remain at your specified limits. It is also the recommended setting unless you really have a serious system memory shortage.25 = 1. your <threshold> would be: (5 – 3) % . the calculation is simple.25 = .. except the calculation is simpler. 75 ATTACHED This command is available to all users of CANDE. Servant stacks operate in a similar fashion. For example. a grind stack is shut down.25 workers before CANDE would drop the number of grind stacks down to 3. CANDE would shut down 3 servants since you have to get down to 4 stacks before <number of servant stacks> % . 1995 .. Unless you have extremely little system memory and very few CANDE users on the system. As most people know. the <threshold> would be: 7 % . 0 COMPILES. the workload would have to drop to less than (4 – 3) % . If CANDE is constantly starting and stopping servants and grind stacks. The command is: ?OP – LOWMEMORY This is the default setting as shipped from the plant.5 Since there are 5 workers to a grind stack and 5 % . increase the limits. or you are waiting for a worker or a servant.5 the workload would have to drop to 2 workers or less before CANDE would drop the number of grind stacks down to 4. this command will give you an idea of how many other users you are contending with for CANDE resources. The syntax is very simple: ?COUNTS The report is: # 4 TASKS. one of the most expensive operations on the A-Series is the starting or ending of a task. and FACTOR QUIT is 25%. In this case. If the <threshold> drops below the number of active servant stacks. Once it did drop to 1. 1 SERVANTS WORKING. shut down a few by changing GRINDLIMIT or SERVANTLIMIT. You can get a report of the number of workers and servants in use at any time through the ?COUNTS command.25 7 1. September. To operate these limits in a manual mode. you will be burning up your processor doing a lot of overhead. reset the LOWMEMORY option. messages. and users are getting too many WAITING FOR.25 = 1.

.06 .5 Note that any change to MAXSTATIONS does not take effect immediately. To interpret the report. This is done through various internal data structures. not to mention the STRUCTURE BLOCK facility — were not available when CANDE was originally written. The number of resources available for users is controlled through the MAXSTATIONS option. Thus. use the command: ?WHERE An example report would be: C 6368 6374 . As a CANDE control user. Activity Indicator. the station is not a control station. Volume 9. it is very important to remember that each CANDE window denotes a separate count against MAXSTATIONS. require that CANDE be restarted before they take effect. Station name. described next. Q ON PSJC10/CANDE/1(17) Logical Station Number (LSN). If the field is blank. you can get a summary report of the CANDE users who are currently on line. C L 6368 FILE Usercode. many of the functions ALGOL programmers take for granted today — such as the resizing of multidimensioned arrays and EVENT ARRAYs. you are using 8 “stations” in CANDE. The <control station indicator> reports whether or not the user is on a CANDE control station.. if you open 8 CANDE windows. If more than MAXSTATIONS users attempt to log on. it must maintain information regarding what each user is doing. consider the illustration below: Control station indicator. Session Number.) MAXSTATIONS is limited to 255 — a value that is much too small in the current world of COMS windows and 96 mega-word operating environments. are dependent upon MAXSTATIONS. ALGOL RESIZE still does not support TASK ARRAYs. it is a control station. you are currently limited to 255 “stations”.. Because CANDE is so old. Log station indicator. use either the ?INFO command or: ?MAXSTATIONS If your users are accessing CANDE through COMS. To query the current value of MAXSTATIONS. to 25 as well. some CANDE specifications must be set before the program is started and. Nonetheless. Other CANDE options. it uses older technology in its memory management activities. You don’t have to run the numbers very far to see that it is very easy to use up a lot of CANDE stations very quickly. (This also forces MAXTASKS. As a result. In particular. If the field contains a ‘C’. particularly MAXTASKS. Since CANDE runs a dialog with each user.88 \ Gregory’s A-Series Technical Journal User Management CANDE must provide resources for each user. The syntax for setting it is: ?MAXSTATIONS = <number> The <number> denotes the maximum number of users CANDE will support at one time. To do this. To this day. 6379 6375 <2 Q ON PSJC10/CANDE/1(17) <1 EXAMPLE ON PSJC11/CANDE/2(18) LOGON ON PSJC12/CANDE/1(23) 6382 SAMSON ON PSJC13/CANDE/1(24) FILE DELILAH ON PSJC21/CANDE/1(31) Each line represents a different CANDE user. the extra users will be refused. CANDE is distributed with MAXSTATIONS set to the original 1973 limit of 25. and that is what you should set MAXSTATIONS to. You must bounce CANDE before the new limit will take effect. when changed.

Over time. additional CANDE functions have been added as separate tasks. a separate copy is run for each one. a remote file is opened to the user. If the user is logged on through a COMS window. out of a servant stack. If two or more users invoke the same function. the CANDE author has three choices: the function can either run out of a grind stack. September. This number is passed to all WFL jobs that are START-ed by this user. Through CANDE it is possible to edit.CANDE: Site Management / 89 The <log station indicator> reports whether a user is on a CANDE log station. The <activity indicator> reports any activity that is currently in progress at the station. The messages generated by a WFL job are automatically displayed at the job’s SOURCESTATION. This field will contain one of the following: LOGON — The user is in the process of logging onto the station. The <usercode> field reports the usercode the user is currently logged on with. a mix number — The mix number of a task the user is running. you have the ability to see who is on line and what they are doing at any time. so the highest value that will appear here is > 14. +— The user is editing a workfile. The <session number> is the CANDE session number of the user’s session. The <logical station number> is the number CANDE uses as the SOURCESTATION for all jobs started by this user. I/O — The user’s station has been assigned to a remote file that was opened by a “foreign task. it is a log station. compile. For many users this is still one of the fundamental benefits afforded by CANDE. If the field contains an ‘L’. task. This means: • • • CANDE runs the program as a separate. the window name and dialog number will be included in the <station name> (as shown here). A function implemented as a separate task uses the same mechanism as user-written programs. < number — It has been less than <number> minutes since the station was busy. Thus. If communication with the user is needed. and some of his edits have not yet been stored in the tankfile. or as a separate task. The <station name> field reports the station name as recognized by CANDE.) the first four letters of a CANDE command — The CANDE command the user is currently doing. This timer is limited to 15 minutes. 1995 . but dependent.” (Foreign tasks are described on page 9-254 in this article. > number — It has been more than <number> minutes since the station was busy. the station is not a log station. When implementing a new function. providing the usercode of the job matches the usercode on the station. and execute a program without experiencing the tedium of entering and exiting a separate file editor. or run the same program. Task Management User Task Limits The original tasking facilities of CANDE were included in order to provide one function: they allow users to compile and execute their own programs. If the field is blank.

.1 = 20. use the ?INFO command or: ?COMPILESPERCENT If COMPILESPERCENT is 100. the MAXTASKS value. ?COMPILESPERCENT = 10 means that 10% of the running tasks may be COMPILEs. When that limit is reached. There is no consideration given for task priority or task type (except in the case of on-line compiles). User programs must be started through the RUN or UTILITY commands. use either the ?INFO command or the command: ?MAXTASKS If a user attempts to run a process. The COMPILESPERCENT value is also specified by a control command. • A user cannot determine how long it will be before his task is executed. there is no need to bounce CANDE for this change. So if MAXTASKS is 200 and COMPILESPERCENT is 10.06 . the maximum number of concurrent compiles is the same as the maximum number of concurrent tasks: i.6 Because of the large number of verbs which are handled as tasks. the user must either wait (without any idea how long that wait may be) or ?DS his task in order to regain control of his terminal. All he gets is the annoying message: #WAITING FOR AVAILABLE TASK Volume 9. MAXTASKS limits the total number of tasks CANDE will run at the same time. all new requests for tasks are put into a “task queue. A user WFL job is started through the START or WFL commands. first-served basis. The management of CANDE tasks is controlled through a paltry two commands: MAXTASKS and COMPILESPERCENT.: ?COMPILESPERCENT = <number> The <number> is a percentage value.e. the single control feature provided by MAXTASKS is wholly inadequate. It is set via the ?MAXTASKS control command. To query MAXTASKS.90 \ Gregory’s A-Series Technical Journal The only real difference between CANDE functions that run as tasks and user programs which run as tasks is the command used to start the task. which has the syntax: ?MAXTASKS = <number> The <number> may be any value between 0 and 255. viz. The COMPILESPERCENT option sets a limit on the maximum number of compiles which may be done through CANDE at the same time. but it cannot exceed the MAXSTATIONS value. We strongly advise that no site use the MAXTASKS control as a tool for managing system resources. he receives the message: #WAITING FOR AVAILABLE TASK Upon receiving this message. and the maximum allowed number of tasks are currently in use. Each CANDE function has a verb of its own. To query the current value. CANDE commands which run a task are: ADD BIND EXECUTE START ALTER BACKUPPROCESS COMPILE COPY DCSTATUS LFILES LOG RUN UTILITY WFL WRITE Each of these commands requires the same amount of overhead in CANDE as that used to run a userwritten program. This limit is a percentage of the total number of tasks allowed via MAXTASKS. the maximum number of concurrent compiles is 200 % 0. For example. Here is why: • MAXTASKS puts a strict limit on the total number of tasks CANDE will run at the same time.” This queue is maintained strictly on a first-come. The good news is that changes to MAXTASKS take effect immediately.

so you must use this command at least once in order to start up the schedule facility. To do this. For example. you will experience delays when the task queue is full since LFILES runs the program SYSTEM/FILEDATA. you turn off the schedule facility. The results of the script are written to a disk file that the user can later view through the LIST command. September. If you use either IDE or the Editor. the new extensions to the FILES command eliminate this problem (providing you have a decently high SERVANTLIMIT). expensive programmers — should be able to submit WFL jobs through this command very quickly so they can liberate their terminals for additional CANDE work. If you set <limit> to zero. if you use: ?SCHEDULE 5 CANDE will limit your users to a total of 5 schedule sessions altogether. you have control over the entire schedule facility. use the command: ?SCHEDULE USERLIMIT <user limit> In this case. The <limit> determines the number of schedule sessions CANDE will process concurrently. and he cannot do any further work until his task is run. and separately via the SCHEDULE command. If you are still using the LFILES command. use the command: ?SCHEDULE <limit> The limit must be a positive number. Always run such tasks out of WFL jobs in job queues. As a site manager. competing with long running programs for a chance to execute. Until recently.8 A more advantageous plan is to set MAXTASKS to a very large number (such as 200). To determine the availability of the schedule feature. Encourage people to use the START command rather than the RUN command for all long-running programs — especially any programs that do not require an interactive dialog with the user. You can think of it as a mix limit on a job queue. it is stored in CANDE’s tankfile and applied to all future runs of CANDE. CANDE is distributed with the <limit> set to zero.CANDE: Site Management / 91 His terminal is marked busy. While the script runs. Once you’ve set a limit. Above all. ?SCHEDULE USERLIMIT 2 Using these combined specifications. Unfortunately. (This is one of the principal reasons why these products are not particularly popular with the ASeries community. Users — especially highly paid. For example. • The START command is blocked by MAXTASKS. all START commands will trudge through the task queue. CANDE treats START as a task. the user’s own terminal is available for other work since it is a completely separate CANDE session. You can also limit each individual user to a maximum number of concurrent schedule sessions. on the same level with RUN and LOG. An artificial “station” is created that serves as the user of the script. and declare (through management fiat) that all resourceintensive programs be run through the system job queues. never run programs in CANDE schedule sessions when there is a resource problem. CANDE limits each user to a maximum of 2 concurrently running schedule sessions and applies an overall limit of 5 concurrent sessions to the entire facility. This includes such matters as the maximum number of concurrent schedule sessions and the maximum number each user may run. the script is run as a completely separate CANDE session.7. <user limit> must be greater than zero. When the SCHEDULE command is used. If you are running at MAXTASKS capacity. Fortunately.9 Using Schedule Sessions CANDE users may compose a script of CANDE commands and submit it for execution in either of two ways: immediately via the DO command. it was impossible to get file information (aside from the file name and its FILEKIND) without running a task. 1995 . you are using up a MAXTASKS slot for each editing session of each user. Control of the facility is provided through the ?SCHEDULE command.) • • We strongly recommend that sites avoid using MAXTASKS altogether.

). CANDE/3 and CANDE/4. those schedule slots will be discarded and the number of concurrent sessions will drop through attrition until your new. Unfortunately. They will remain queued until a slot in the schedule becomes open. Queued schedule sessions. It is not intended as an alternate batch processor. So if you start a WFL job from a terminal that has a logical station number of 12. Complete documentation may be found in the CANDE Configuration Reference Manual. In particular. Volume 9.. The use of the schedule scripts therefore meant that many of these modeling programs were running simultaneously. A user may monitor the foreign tasks that are running under his usercode through a variety of CANDE control commands: ?M. the data center management there told these users to set up schedule scripts to run these programs. a CANDE user cannot view his currently running WFL jobs from any terminal except the one at which he entered the START command. Once the change is made. lower limit is reached. This restriction is very dated because in these days of multiple CANDE windows under COMS. higher limit until some of the schedule sessions finish. CANDE will retain the older.g. All tasks run out of CANDE schedule sessions are handled in the same manner as those run directly from a terminal. etc. we know of one site where many of the users continuously ran a data modeling program on their A-Series machine throughout the workday. ?MSG. Once again this is a change you must make to CANDE after you first install it since CANDE is distributed with ALLMSG reset. each CANDE dialog gets its own logical station number. The particular tasks the CANDE user can view through these commands is controlled by the CANDE option ALLMSG. via RUN or a similar command) which open a remote file to the originating terminal. To view the current setting. Foreign tasks are those which originate from a WFL job or from a different terminal on the network. and ?C. you cannot view that job from dialog CANDE/4. They allow users to create schedule scripts which run like WFL jobs. benchmark testing. though! Many installations make the mistake of thinking that the CANDE schedule facility is the same thing as the system job facility. ?LIBS. As they finish. Other Task Related Options CANDE supports two different styles of tasks: “native” tasks and “foreign” tasks. There are many additional functions of the ?SCHEDULE command.10 To get around this problem. Native tasks are those executed directly from a terminal (e. In order to avoid tying up their terminals. So if you open two dialogs. He can go on to other work while waiting for his script to run. Batch programs should still be run through the system job queues via WFL. these users wanted to run the program in a batch fashion. In other words. do not keep a user’s terminal busy. If ALLMSG is RESET. then you can only view that job if you enter your ?M. You should review this information if you intend to make extensive use of the schedule facility. ?MSG. Now the user can view any jobs that are running under his usercode from any terminal or CANDE window. turn on the ALLMSG option. ?LIBS. If you lower the limits below what is currently running. The command is: ?OP + ALLMSG Once ALLMSG is set. Be warned. but (because this same management insisted on using the MAXTASKS limit as well) regular on-line users were unable to process any LFILES or START commands without waiting upwards of 30 minutes for “available tasks!” The moral of all this is quite simple: the schedule facility is intended to allow users to run scripts of CANDE commands (file editing. unlike queued tasks. each one uses a “task slot” and counts towards the MAXTASKS limit. visibility to WFL jobs is controlled strictly by usercode. The STARTing terminal is identified through its logical station number (LSN). and so forth commands from the terminal with logical station number 12. use the ?INFO command. just to name a few. and you START a WFL job from CANDE/3.06 . both under the same usercode. You can raise or lower the limits at any time.92 \ Gregory’s A-Series Technical Journal A user can submit as many schedule sessions as he wants. these may or may not open a remote file. it is stored permanently in the CANDE tankfile. ?JA.

This limit has never been increased. Back in the 2. The answer to question #2 determines the maximum number of jobs that may simultaneously assign a user’s terminal to a remote file. regardless of the LAISSEZFILE setting. CANDE also allows programs to open remote files to any terminal or pseudo-station that is attached to CANDE. The “OK or DENY” question is only asked if the station is logged on. If you specify that a message is to be given. If you specify that CANDE is not to limit access. may be assigned to a user’s terminal at one time.6 system release. Should the user be informed that his terminal is being acquired by a foreign task? 2. Some individuals would write programs that simulated a CANDE log-on sequence and direct these programs to other users’ terminals. You must choose the value which best fits your local needs.12 The answer to question #2 can be specified in three ways: Should there be any limit? Should the limit apply to the terminal in all cases? Should the limit apply only if the terminal is logged on? If a limit is in force. This facility is controlled through the CANDE option LAISSEZFILE. If DENY is entered. PROG = <program name> This tells the user in no uncertain terms that an external program — either a program in a WFL job or one from another terminal — is attempting to acquire his terminal for an interactive dialog. only one input file may be assigned to a user’s terminal. The programs would quietly record the usercodes in a file for the benefit of the author and then release the victim’s terminal back so that he could resume his session. a facility was added to CANDE to notify users any time a foreign task attempted to open their terminals. which has seven possible values. This feature allows you to write multi-user transaction processing systems using standard remote files. CANDE prompts the user with the question: #RESPOND "OK" OR "DENY" The user must answer the question with either the command OK or DENY. If the answer is “yes”. They would obligingly “log on” by entering their usercodes and passwords to these programs. then up to 100 output files. Should CANDE limit the number of jobs which can simultaneously acquire the user’s terminal? 3. If you specify that CANDE is to limit access. The three aspects are: 1. Should the user be prompted with a question and allowed to decide whether or not his terminal is to be acquired? The answer to question #1 determines whether or not a message is posted to the user when a foreign task acquires his terminal. By reason of a separate rule that has been around since B6700 days. If the answer to question #3 is “no”. The other users would think CANDE had gone down and restarted. 1995 .CANDE: Site Management / 93 In addition to allowing users to view running jobs. CANDE allowed any program to open any terminal on its network without restriction.11 In order to counter this problem. the acquisition is refused. The following table lists the seven possible values of LAISSEZFILE and how each value answers these three questions: September. If you specify that no message is to be given. CANDE automatically postpones an acquisition request if the user at the target terminal is already running a program or processing a CANDE command. These seven values control three aspects of assigning a user’s terminal to a foreign task. CANDE announces the acquisition with a message that has the following format: #FILE <file name> OPEN: USER = "<usercode>". If OK is entered. All acquisition attempts are automatically allowed. It serves as an alternative to the COMS and GEMCOS on-line servers. from any combination of jobs. The answer to question #3 determines if the user is prompted to allow any foreign acquisition. then only one job can open output files to the user’s terminal at any given instant. this prompt is not displayed. the user will not be notified any time a foreign task tries to acquire his terminal. LAISSEZFILE sets a CANDE-wide rule for all tasks and all users. the acquisition is allowed.

94 \ Gregory’s A-Series Technical Journal
LAISSEZFILE Value 0 1 2 3 4 5 6 Announce Yes Yes Yes Yes No No No Limit to 1 Job All Stations if Logged On All Stations if Logged On All Stations if Logged On No Ask Yes Yes No No No No No

CANDE is distributed with LAISSEZFILE set to 0, which is the most secure setting for a general-purpose multi-user environment. Use the other values if your users would be confused by the messages and you regularly run jobs that acquire users’ terminals. Note that the value 6 causes CANDE to automatically make all terminal assignments without giving any notification — just as it used to in the Mark 2.6 release. When using foreign tasks, it is also wise to make sure that the ALLLOGIN option is RESET (which it is by default). If ALLLOGIN is SET, every station must be logged on before it can be used. In particular, if a WFL job opens a remote file to a terminal that is not logged in, and the ALLLOGIN option is SET, CANDE will deny the open request. In this case, the program will receive an end-of-file response when it attempts to use the terminal. If ALLLOGIN is RESET, on the other hand, CANDE will allow the assignment based upon the setting of LAISSEZFILE. If you use ADM EVENT PRINTLABEL via the REMOTESPO program in order to print tape labels, be wary of this side-effect. REMOTESPO will not work if it is directed to a terminal that is not logged in and the ALLLOGIN option for CANDE is SET.

Security-Related Options
CANDE maintains several different security features that enable users to function in a comfortable environment while at the same time maintaining control over what those users do. The options which help enforce security are DIALLOGIN, ALLLOGIN, SECDIALIN, SECPSEUDO, SECALL, USECOMSPRIV, NOCOMSCTRL, and the “log station” facility. In addition, certain privileges are accorded to users based upon how their usercodes are defined in the system’s USERDATAFILE. As mentioned in the previous section, ALLLOGIN specifies that all stations must be logged on to some usercode before they can be used. This includes use by a WFL job or REMOTESPO trying to write output to the station. This option is best left RESET unless you are sure it will not interfere with your overall operations.
DIALLOGIN works in the same manner as ALLLOGIN, except that it controls only dial-in stations. By SET-ing DIALLOGIN (recommended) and RESET-ing ALLLOGIN, you require that all dial-in stations log in but allow

tasks to use other stations without requiring that those be logged in. After gaining access to the system, a CANDE user’s privileges are determined by the particular usercode he has chosen to log on with. There are two USERDATA options the site administrator may set for usercodes that CANDE recognizes: PU and CANDECONTROL. If the PU option is set, that user is considered a “privileged user”, and he may access any file on the system. If the CANDECONTROL option is set, that user has the CANDE “control” privileges, as described at the beginning of this article. There are five CANDE options which provide different methods whereby the site administrator may restrict the privileges of PU-designated usercodes. If SECDIALIN is SET, no one who enters the system through a dialup line will be allowed privileged access. If SECPSEUDO is SET, the user who comes through a pseudo-station will not be allowed privileged access unless all four of the following conditions are met: • • • • He is coming from a COMS Window (not just a BNA station). The USECOMSPRIV CANDE option is SET. The user’s station is designated as privileged for COMS. The user’s usercode is marked as privileged in the system’s USERDATAFILE.

Any user who accesses CANDE through a COMS window is using a pseudo station and is, therefore, subject to the SECPSEUDO restriction. To access CANDE without going through COMS, the user must connect through an NSP/LSP, DCDLP, EDCDLP, or DCHA station. He can then use the MCS command to con
Volume 9.06

CANDE: Site Management / 95 nect directly to CANDE. Such a user would not be using a pseudo station and, therefore, not be subject to the effects of the SECPSEUDO command. If SECALL is SET, the restrictions mentioned above for pseudo-stations are applied to all stations. This would prevent any local user from obtaining privileged access by transferring his station through the MCS command. Both SECPSEUDO and SECALL require that USECOMSPRIV be SET in order to allow CANDE users to have privileged access to the system. To disallow privileged usercodes from doing any on-line activities via CANDE, set SECALL and reset USECOMSPRIV. Just be careful that you do not lock yourself out of your own system! The last security related option is NOCOMSCTRL. We discussed this option in detail at the beginning of this article. By default, a COMS user with control capability automatically assumes CANDE control capability when he logs onto CANDE through a CANDE window. The usercode he logs on with is immaterial. To change this behavior, set the NOCOMSCTRL option through the command:

With this option set, CANDE control capability is only conferred on users with CANDECONTROL status (or through the other means described at the start of this article). Note that when you change NOCOMSCTRL, you must bounce CANDE before the change will take effect.
NOCOMSCTRL is automatically set if your system’s security class is S0 or above. In that case, you cannot reset

it. As a CANDE control user, you can obtain a report of the number of control stations on CANDE through a single command. That command is:

It generates the following report:

This report is the same as that returned by the ?WHERE command except that it only lists control stations. All control stations are listed, including those which inherited control status from COMS. You can use the ?CONTROL command to designate a specific station as a control station. The syntax for doing this is:
? CONTROL < station name> < d:l:s> < lsn> ALL

The <station name>, <d:l:s>, and <lsn> are different ways of accomplishing the same thing: identifying the target station. (<d:l:s> is only valid on NDLII/IDC supported stations.) The command:
?CONTROL <target station>

gives CANDE control capability to the designated CANDE-owned station. The command:
?CONTROL – <target station>

removes control capability from the station. The command:

marks all stations as control stations. This is intended only for Unisys testing and is not recommended for general use. Once you do this, you will have to take CANDE down to undo it.

September, 1995

96 \ Gregory’s A-Series Technical Journal If the target station is a CANDE window under COMS, you must include the window name and dialog number in the command. For example:

Once you make a station a control station, it remains one until you remove the privilege through ?CONTROL –. Most importantly, the privilege is not dropped just because the user on the station logs off. You must explicitly remove the privilege if you do not want the next user on the station to have control privileges. For this reason, do not designate a dial-in line as a CANDE control station through the ?CONTROL command. You can give control privileges to any CANDE-controlled station. The station does not have to be logged on. The control station list is reinitialized when CANDE goes down. Therefore, use the ?CONTROL command only to designate temporary control stations. For permanent control stations (where logging on is not desired), do one of the following: • • If the station is an NDLII/IDC station that is controlled by CANDE, designate it as a SPO in IDC. If the station is a BNAv2 station, designate it as a Control Station in the Station Definition screen of COMS Utility. Then make sure that the NOCOMSCTRL option is reset in CANDE.

The “Log Station” facility provides the site manager with a means of tracking security violations and other user activity. There are a large number of options provided when using Log Stations which are described in the CANDE Configuration Reference Manual. Anyone interested in monitoring system security should review these options and set up some log stations accordingly.

Miscellaneous Features
One of the most valuable features of CANDE is the “saved command” feature. CANDE will save up to 20 previously processed commands for each user. The user is able to retrieve any of these saved commands and re-enter them again without having to retype them. The number of commands each user may save is controlled by the ?DEPTH command. The syntax for this command is:
?DEPTH = <number>

The <number> denotes the number of commands CANDE will save for each user. The user may retrieve, modify, or alter these commands as desired. To query the current “depth” value, use the ?INFO command or:

The response takes the format:

The value in use is reported as the SAVED TEXT DEPTH. For some reason, CANDE is distributed with SAVED TEXT DEPTH set to zero. This, of course, defeats the whole purpose of the feature. Although up to 20 commands per user may be saved, we achieve quite acceptable results using a SAVED
TEXT DEPTH of 10. This is our recommendation for setting the ?DEPTH command.

You may define a “news” file for CANDE. If you do so, CANDE will automatically pick up the first line of this file and transmit it to each user as he logs on. Each user may then read the remainder of that file by entering the NEWS command. To specify a News file, use the ?NEWS command. The syntax is:
?NEWS <file title>

For example,

The command takes effect immediately.
Volume 9.06

If the majority of the terminals on the network are TD-compatible. If the news file is more than a single screen long. One effect of setting this option is that users entering CANDE from COMS (via the ?ON command) will not automatically return to MARC upon logging off. The first line becomes the “headline”. However. 1995 . if new items are always appended to the end (the natural thing considering how CANDE editing works). it will be useful to put a highlight character into the headline. both resident and archived/non-resident files are included in the report.CANDE: Site Management / 97 When composing the news file. If this option is set. Therefore.) KEEPSTA — If this option is reset. This was fixed on Mark 4. be sure to add newer text at the start of the file (immediately after the headline). If you want CANDE to use the second interpretation when processing commands. and ALL options of the FILES command.1 so that CANDE now uses the first interpretation. Other important CANDE options can be briefly listed with appropriate recommendations. Users have no means of simply listing the end of the file. For example. LEADINGNUM — In some CANDE commands the syntax is sufficiently ambiguous that numbers could be interpreted as either sequence numbers or as parts of a file name. The original intent in CANDE was the first interpretation. CANDE performance will be improved. When set. most users will never read them — they will not read past the first page. They can alert users to potential unauthorized uses of their usercodes. therefore. Since a user can override this option through the RES. the recommended setting for SHOWALLFILES is reset. Set these if you use InfoGuard. b) Match line 1 of file X to line 1 of file Y. the station will remain on CANDE. only resident files are included in response to a user’s FILES command. (Events that would normally be written to the job summary are still written to the system log. September. even if it did not start there. they report the last activity done on the usercode to the user when he logs on. LASTLOGON — PASTBATCH — These options are only valid on a system running the InfoGuard security software. the code that was written followed the second interpretation.) The second consideration is that most readers will not want to reread the same information over and over. so no information is lost. SHOWALLFILES — This option controls the files that are reported by default through the FILES command. CANDE will automatically return any station to its original owner when the user of that station logs off. These are: NOJOBSUMIO — This option stops CANDE from writing a job summary. this option should be left reset. If SHOWALLFILES is set. putting the headline in “bright” characters has proven quite effective. turn on the LEADINGNUM option. two things should be borne in mind. they must enter a ?CLOSE command to exit any CANDE window. It should be set at all times. the command: MATCH 1X TO Y can be interpreted in either of two ways: a) Match all of file 1X to all of file Y. (In particular. For most purposes. something worthwhile should be put there. NON. If SHOWALLFILES is reset (the default).

supply two file names to the ?STUP command. To specify your own directories. CANDE/STARTUP/RESTART/=. you can: • • • Specify default directories – either the plant-supplied defaults or one of your own — in which users must put their startup and restart files. and <file name>/RESTART becomes the restart directory. CANDE looks for these directories under the usercode of the person logging on. Startup files are sought unRestart files are sought under the directory der the directory CANDE/STARTUP/=. You can disable it completely. Specify a particular directory or file that all users must use when they log on. just specify a <file name>. in the ?STUP command. The <file name> becomes the startup directory.98 \ Gregory’s A-Series Technical Journal Startup and Restart You have several options in controlling the Startup and Restart facilities of CANDE. To use your own file names. To re-enable the Startup/Restart facility. use the command: ?STUP <file name> When you do this. you have several options depending upon what you want for your users when they log on. use: ?STUP + This reinstates the feature using whatever startup and restart directory names were in use at the time the ?STUP – command was entered. You can also change the directory names that are used. As the CANDE site administrator. without any usercode prefix or packname suffix. In particular. For example. ?STUP STARTUP sets the startup directory to STARTUP and the restart directory to STARTUP/RESTART.13 This feature is entirely controlled through the ?STUP command. It also does not perform any autorecovery if a recovery file is found. If you want to specify your own restart directory as well. For example. you have complete control over the Startup/Restart facility. use: ?STUP * This restores the feature to the defaults as shipped from the plant. ?STUP STARTUP RESTART Volume 9. Specify a pack family that all startup and restart files must be put on. which has the syntax: ? STUP * + < file name> = REST = < file name> CANDE is distributed with both the Startup and the Restart facilities enabled. CANDE does not automatically process startup files.06 . use the command: ?STUP – When disabled. We discussed the Startup facility in part two of our CANDE update series. To reinstate the Startup/Restart feature using CANDE’s default directory names. To disable the Startup/Restart facility.

Thus. The actions performed in the startup file are all done under the user’s usercode and apply to his session. CANDE expects to find the startup and restart files under the user’s usercode using his default pack family specification. put a usercode or asterisk prefix on the <file name>. If you specify both <file name>s in the ?STUP command. For example: ?STUP STARTUP REST RESTART When you supply just a <file name>. These options are set in two places: September. You may optionally prefix the restart directory name with the keyword REST. Users will not be able to make their own startup files unless you include a DO command in your startup file that executes the user’s file. and RESTART the restart directory. All of the options specified above for the startup directory apply to the restart directory as well. you are directing CANDE to your own global startup file first. If you specify the startup directory via the command: ?STUP XYZ CANDE will search as follows for a startup file: (<usercode>)XYZ/<station name> ON <primary family> *XYZ/<station name> ON <primary family> (<usercode>)XYZ/<station name> ON <alternate family> *XYZ/<station name> ON <alternate family> (<usercode>)XYZ ON <primary family> *XYZ ON <primary family> (<usercode>)XYZ ON <alternate family> *XYZ ON <alternate family> The first 4 tries include the <station name> the user logs on with. You can also use this feature to automatically run a program each time the user logs on. Similar results can be obtained by prefixing the <file name> with a usercode in parentheses. If you specify: ?STUP *XYZ CANDE will only look for *XYZ/<station name> and then *XYZ on the user’s primary and alternate disk families. The searching will be: (<usercode>)XYZ/<station name> ON ICEPACK *XYZ/<station name> ON ICEPACK (<usercode>)XYZ ON ICEPACK *XYZ ON ICEPACK If you want to prevent users from making their own startup files.CANDE: Site Management / 99 makes STARTUP the startup directory. but only on family ICEPACK. For example: ?STUP XYZ ON ICEPACK Now CANDE will ignore the user’s family specification. Instead. There are also environmental options you can set to help your CANDE users. This is the configuration you want if you want users to make their own startup files. through the DO command. If you specify: ?STUP *XYZ ON ICEPACK CANDE will only look for *XYZ/<station name> and then *XYZ on the family ICEPACK. you can use this feature to set some global defaults for all users and. include an “ON <family name>” suffix in your <file name>(s). it will search under the user’s usercode for the startup file. This can be extremely useful when trying to make life easier for an unsophisticated CANDE user. the second 4 do not. External Configuration So far we have discussed how to use internal CANDE options to configure and tune CANDE. To limit CANDE’s searching to a particular pack family. you can use different options for the startup and restart features. For example: ?STUP (Q)XYZ ON CONTINUUM If you use an asterisk or usercode prefix. allow them to add more options as desired. 1995 .

[ Figure 1 Configuring the CANDE Window in COMS Utility • • in COMS. This will bring up a screen as shown in figure 1. create a window with a different name (using the same values for the rest of the fields) and then delete this window. default Window Activity screen.06 . . . . although I generally only use 5 or 6 at one time. . . Enter Inquire into the Action line of the screen. . all users who access the system via that software must connect first to COMS and access CANDE through a window.WINDOW ACTIVITY (MCS) Action: [INQUIRE CReate MOdify INquire DElete SEarch FIrst LAst NExt COMS ] (Press SPCFY for help) GO HOme PRevious DUmp Window Name. . This brings up an empty. enter the command W. . you will first need to go onto COMS Utility. or a DCHA (Micro A adaptor) board — can your station connect directly to CANDE. [8] Notify Open (Y/N) and Text [N] [ ] Notify On (Y/N) and Text . [N] [ ] Installation Data Name [NONE ] MCS Window specific fields: Truncated Results (Y/N).) Once onto Utility. . . (We discussed how to obtain both COMS and CANDE control capability on page 9-245 in this article. The fields of this screen are defined as follows. . . If your site is running on BNAv2. Only if you are connecting via a derivative of NDLII — i. the station connects through an NSP/LSP. Window Name: CANDE This is the name the user must use in order to access CANDE. . This requires that you have COMS control capability rather than CANDE control capability.100 \ Gregory’s A-Series Technical Journal W . [0 ] Maximum Dialogs. . To go to the Window Activity screen from the Utility Home menu. Your upper limit will be constrained by the number of users who have to share CANDE. If you want to use a different name. [N] MCS Title [SYSTEM/CANDE Remote Window Name . This gives each user up to two CANDE dialogs: CANDE/1 and CANDE/2. COMS includes one window named CANDE with two dialogs. .MCS Virtual Terminal Name [LSCANDE ] Maximum Users. .Direct R . .e.14 If you want to change the default specifications for your CANDE window. a DCDLP. . and type CANDE into the Window Name field. I prefer to set the number up around 8. an EDCDLP. . . . . COMS Considerations At most sites users access CANDE through COMS windows.. . . I find two dialogs to be not nearly enough. [M] D . . The changes take effect immediately upon entry. in the system USERDATAFILE. go to the Window Activity screen and enter your changes. since CANDE itself has an internal limit of 255 users. Window Type: M CANDE must be defined as an MCS window. . [CANDE ] Subaddress [ ] Window Type. . As delivered. [Y] Hostname or Domain Name [NONE ] ] ] Single Window (Y/N). . Volume 9.Remote-File M . . .

Then use that number or 4. But if the user is listing a file. such as a CP2000. Otherwise. It takes at least 4 dialogs for a programmer to get serious work done. you should be able to put this at a number like 4. Most of the time CANDE responds to blank input with a single pound sign (#). This rule applies although COMS itself may be running from a pack family that is not named DISK. If the user has a startup file. Unisys sets this field to Y by default for the CANDE window. However. Each MCS must have a unique title. If you create multiple CANDE windows at some time in the future. Any text you put in this field will be inserted into the user’s input queue for processing after log on. 6. MCS Title: SYSTEM/CANDE For the true CANDE window. a blank input will move him to the next page of output. make this title SYSTEM/CANDE.15 By default. If the codefile is on any pack family other than DISK. The safest course is to not let COMS send any automatic text to CANDE after a ?ON. or 8. for example. if your MCS Title reads: SYSTEM/CANDE ON ICE September. Divide the number of expected concurrent users into 256 to get a good starting number. so leave this field blank. When a user first opens a CANDE window. you can really mess things up if you give CANDE some canned text when the user goes back onto the dialog. The window itself will be dead. (MCS) REQUIRED This happens if CANDE is not already running when the first user attempts to go “?ON” to the CANDE window. If you expect to have more than 100 concurrent users. This means *SYSTEM/CANDE on the family specified in your DATACOMINFO file. without any pack family specification. that is the pack family named DISK. you will get the message: * 6488 10:58 COMS:SYSTEM/CANDE. Even supplying a default text of all blanks can be very annoying. If he is in the middle of a listing. use the value LSCANDE. whichever is larger. Similarly.CANDE: Site Management / 101 Virtual Terminal Name: LSCANDE This field is only valid for terminals that connect through a front-end datacomm processor. you will need to use different MCS Titles for each of those windows. a blank input may have serious repercussions. Maximum Dialogs: [choose your best fit] Ideally. They should know best. Notify Open: N Notify On: N Make sure both of these are set to N (No). The user must use ?CLOSE to exit the window and escape back to MARC. It also applies even if you add a pack name into the MCS Title field. CANDE knows its own limits and will reject an attempt to exceed its own MAXSTATIONS limit. if the user is running a program. Unfortunately. Truncated Results: Y This field is set to Y for MCS programs which can handle messages that contain just a COMS header. It is better to let CANDE handle that situation than to try and coordinate it with COMS. Hostname or Domain Name: blanks You are running CANDE and COMS on the same host.. seriously consider running multiple copies of CANDE. If the user switches out of CANDE and then back in. that file will be executed first. It tells the front-end processor how to format input and output messages for the terminal. before the COMS text is processed. non-programmers may be able to get by with just 1 or 2 dialogs.. Maximum Users: 0 From COMS’ point of view. Two is just not enough. give this field a value of DEFAULT. You have no way of knowing what state the user left a dialog in. 1995 . he is automatically logged on with the usercode he is using on COMS. the maximum applies to everyone — there is no distinction by usercode. If you want to use the Virtual Terminal Name specified for the terminal in the CP. you want to let an unlimited number of users access CANDE. For example. The default value supplied here by Unisys is SYSTEM/CANDE. you do not want to transmit anything to CANDE.

such a user can change any of the option settings reported by the ?INFO command to anything he wants at any time. This is the pack family where the global system utilities. you should review the Security Administration Guide to get a complete list of the usercode options available to you. For example: PRINTDEFAULTS = " <attribute specifications> " " <attribute specifications> " " <attribute specifications> " Volume 9. and so forth) when they are logged on to the system. If you have no “resource” family. If the CANDE option NOCOMSCTRL option is set. The requirement that *SYSTEM/CANDE be on family DISK applies only if you want COMS to automatically start CANDE should it not already be running. If you cannot fit everything into a single line. ?SAVE. Remote Window Name Single Window These fields are not used with the CANDE MCS. The COMS Utility program allows the site manager to designate that certain usercodes are “control capable”. This means that these users may enter COMS network control commands (such as ?READY. If such a user opens a CANDE Window. I’ve seen many sites omit this step.06 . if you enter the primitive command: ??RUN SYSTEM/CANDE ON <family name> at the ODT. and such are stored. compilers. This is their primary workspace. you must assign a FAMILYNAME to the definition of SYSTEM/CANDE in the DATACOMINFO file (through the IDC program). “DO” files. be sure to set a default FAMILY specification for your CANDE users. USERDATA Considerations There are a number of options you can apply to the usercodes at your site which will make life easier for your CANDE users. and schedule files. The syntax for including this is very awkward. you can use this syntax instead: FAMILY DISK = <name 1> ONLY One of the last things you want is for users to hard code pack family names in their WFLs.e. and have COMS bring it up automatically.102 \ Gregory’s A-Series Technical Journal COMS will still attempt to run *SYSTEM/CANDE ON DISK. and the result is that all of the users end up by default on family DISK. <Name 2> must be the “resource” pack family. These options are all set in the system USERDATAFILE through the program SYSTEM/MAKEUSER. (They end up on “no” family if the site does not have a family named “DISK”. If you bring up CANDE manually — i. you must end each line with a quote and begin each succeeding line with another quote. That’s because the general syntax is: PRINTDEFAULTS = " <attribute list> " The entire <attribute list> must appear inside the quotes. a COMS “control capable” user is not granted CANDE control capability. users will be able to access CANDE successfully even though the <family name> is not DISK. This is best minimized (and often totally avoided) by giving everyone’s usercode a proper FAMILY specification. First and foremost. To put *SYSTEM/CANDE on a pack family other than DISK. he retains this control capability. In particular.) Use the MAKEUSER specification: FAMILY DISK = <name 1> OTHERWISE <name 2> <Name 1> must be the pack family where you want users to store their files. However.. This means that he may enter any CANDE control commands also.16 We will highlight the most important ones here. The next most important option after the FAMILY specification is the PRINTDEFAULTS specification. Each specification is separated from the next by a comma.

It looks simple enough — until you realize that many of the <attribute specifications> themselves also use quote characters. as in some TRANSFORM specifications. use: + SHOWFILES To disable it. in WFL jobs. must be encoded thusly: PRINTDEFAULTS = "DESTINATION="""LP20"""" If you need to split a string over two lines. you must substitute 3 quotes in each place where you want a single quote. Outputs are released for printing the instant the printer file is closed." "PRINTDISPOSITION = EOJ" If you do not want a user to automatically generate printed output. To enable SHOWFILES. The three usercode attributes given above are system-wide attributes. you can also use: PRINTDEFAULTS = "PRINTDISPOSITION=DONTPRINT" This will force the user to either change his PRINTDEFAULTS or use BACKUPPROCESSOR in order to print the output of his CANDE (and all other) jobs. September. This can be useful if PUBLIC or GUARDED files under the usercode are frequently accessed by other users. CANDE is just one environment in which these attributes have meaning. They affect everything the user does: in CANDE. use: – SHOWFILES Again. Choose the PRINTDEFAULTS specification that best suits your needs. It determines how other users of the system see the files that belong to this user. Therefore. and so forth. you can give each user a different specification if desired. Another attribute of importance is SHOWFILES. To keep from confusing MAKEUSER. such as LP20. non-privileged users cannot obtain information about the user’s files through the FILES command.CANDE: Site Management / 103 This shows how to spread a PRINTDEFAULTS specification over three lines of MAKEUSER input.17 The two most common PRINTDEFAULTS values you need to set are DESTINATION and PRINTDISPOSITION. and TRANSFORM — just to name a few — use strings as values that must be enclosed in quotes. this must be set on an individual usercode basis." "PRINTDISPOSITION = CLOSE" This example directs all of the user’s outputs to the printer CSJC12. Since this is a usercode attribute. 1995 . For example. If you want users to keep their files as backup files and manually release them using SPLIT. PAGECOMP. If you turn SHOWFILES on for a user. but you need to be aware of it if you want to give your users detailed PRINTDEFAULTS specifications. With the PRINTDISPOSITION = CLOSE specification. DESTINATION. all of the other users on the system can use the FILES command to view the titles (and other attribute information) of the non-PRIVATE files owned by that user. For example: PRINTDEFAULTS = "DESTINATION = """CSJC12""". your users will never have to use the SPLIT command to release an output. set PRINTDISPOSITION to EOJ. you end up with something hideous like: PRINTDEFAULTS = "TRANSFORM = """ADJUST (SHIFT = +8)" "IN SL TRANSFORMSUPPORT"""" This is all a MAKEUSER problem. PRINTDEFAULTS = "DESTINATION = """CSJC12""". in COMS. If you turn off SHOWFILES. a simple DESTINATION. This attribute affects the visibility of the user’s files for other users on the system.

That character is not used in any standard CANDE command. Note that MAKEUSER requires a semi-colon as a statement terminator. To remove the default <continuation character> for the user. This option should be set for programmers. here is a minimal MAKEUSER profile for a typical CANDE user. and others who need to monitor the progress of WFL jobs from their terminals. It should be reset for on-line users who would be confused by the messages. use the syntax: + <attribute> To reset or disable any one of these attributes. then only the usercodes for which you enable the CANDEAUTORECOVER option can use the automatic recovery feature. CANDEAUTORECOVER — This attribute determines if the user can use the automatic recovery feature described in Part Two of our CANDE update series. this attribute means that the CANDE user will automatically receive job messages at his terminal. a usercode will not have a <continuation character>. With QWAIT set. Given all of the above. The feature is not available to all of your other users. use the syntax: – CANDE By default. The syntax is: CANDECONTCHAR = "<special character>" For example: CANDECONTCHAR = "%" The per cent sign is the traditional <continuation character> for CANDE. The user must explicitly discard “waiting” input (through the ?PURGE command) or execute it (through the ?GO or ?REPEAT commands) before CANDE will accept any further input from him. + USER CANDYUZER FAMILY DISK = ICE OTHERWISE DISK PRINTDEFAULTS = "PRINTDISPOSITION = CLOSE. the QWAIT option for the session is automatically set each time the user logs on. These are all boolean-valued usercode attributes. the user does not have control capability. this user has control capability when logged onto CANDE. Volume 9. CANDECONTROL — If set.06 . if he already has one. The default setting for this option is “reset”. There is one last CANDE-oriented usercode attribute of interest: CANDECONTCHAR. " "DESTINATION = """CSJC12"""" + CANDEGETMSG + CANDEAUTORECOVER.104 \ Gregory’s A-Series Technical Journal There is also a group of usercode attributes that are CANDE-specific. They only have meaning to CANDE and are ignored by the rest of the system software. To set or enable any of these attributes. This option should be reset except for site administrators and those who are responsible for configuring CANDE runtime options. If reset. CANDEQWAIT — If this attribute is set. you will want to have this option disabled (the default setting). These attributes are: CANDEGETMSG — If set. Use this attribute to set a default <continuation character> for the user. At most sites. WFL writers. so the following is all one statement even though it is spread over multiple input lines.18 If you have set the CANDE option RECOVERSESSION to REQUESTED (described earlier in this article). It causes the MSG option to be automatically set each time the user begins a new session. all “pending” input to CANDE immediately becomes “waiting” input. use: – <attribute> All of these attributes are reset by default.

There are a large number of options and settings. Unisys Corporation. Poof! — and an entire page of carefully composed text vanished before your eyes. the patch to do this has been on our bulletin board since 1988. 10 Note that we are not talking about the automatic job messages which are always routed only to the logical station number at which the WFL job originated. Conclusion As we have shown in this article. This limit exists to resolve an ambiguity.. I remember one jerk who thought it was funny to open a remote file to your terminal and write a single form feed. This is not hard to do. Running more than 3 grind stacks has proven to cause problems if CANDE is improperly compiled. In other cases. 1 That’s assuming such days ever really existed. such as ?MSG. Certainly you can completely disable the ability to do compiles on line by setting COMPILESPERCENT to zero.g. when a programmer submits a compile. This discussion strictly has to do with the job monitoring commands. he gets the standard message: 6 #WAITING FOR AVAILABLE COMPILE TASK He waits forever. COMPILE. in response to a COMPILE command. However. to which file would that input go? 12 September. this is not true. using MAXTASKS to control task activity is a great way to encourage your users to demand a Unix computer instead. CANDE would generate a WFL job to do the compile and submit it into a job queue.. As implemented. you will be far ahead when it comes time to configure the CANDE of tomorrow. Otherwise. LOG). The COMPILESPERCENT feature is a prime illustration of how Unisys used to treat CANDE in the bad old days of the mid 1980’s.but enough of my soapbox. more options will be added in the future. the plant-supplied defaults are the wisest choice. and. To put it another way. You would be better off patching CANDE to (a) eliminate the commands you do not want (e. 5 In an extremely tight memory environment. This feature was implemented as a response to a user New Feature Suggestion (NFS). 2 The setting for the ?BOOK command is missing. However. If developers would use Binder a little more and Libraries a little less. UTILITY. and (b) enforce resource limits on all user tasks rather than trying to manage your environment through MAXTASKS. somebody in Unisys must have thought it would be cute to take a shortcut and implement this revulsive COMPILESPERCENT feature instead. doing so does not cause CANDE to tell programmers that they cannot do compiles. however. in fact. I would feel differently about it. For some of the options. 9 It is also worth noting that MARC does not have a MAXTASKS feature. 7 8 If the MAXTASKS limit applied strictly to the RUN. there are many ways to tune CANDE so that it will perform at its best on your A-Series system. but it puts a major burden on those of us who have to install this stuff.CANDE: Site Management / 105 This provides a basic configuration for a non-privileged. . and COMPILE commands.. this feature can noticeably reduce the productivity of your programmers. As the CANDE site administrator. you have to install a product and a bunch of support Libraries. It’s the application to the START command that really makes MAXTASKS a burden. there are already a large number of options to deal with.. and the user entered one input. the users asked that an option be provided so that they could turn off the on-line compile feature of CANDE and force programmers to use batch queues only. Instead. such as a Micro A with 12 megabytes of memory. it did not address the NFS at all. CANDE Configuration Reference Manual. Be sure to set the 3 4 NOSTACKARRAYS compile time option when compiling CANDE if more that 3 grind stacks are desired. 11 That’s only one story. and there are all sorts of dependencies between the modules. you need to know how each of these options affects CANDE behavior and what the best choice is in each case for your installation. non-control CANDE user who can handle the automatic reception of job messages. form #8600 1344-200. you might reduce MAXSTATIONS to a smaller number. In the original NFS. As shown in this article.. where you have less than 8 CANDE users. This is done for the convenience of the developers. As Unisys continues to improve CANDE. and all of these have default values. the system software would be much cleaner and easier to support. If two or more input files could read from the same terminal at the same time. However. 1995 . set it to 255. It’s the only reason I can think of to explain why CANDE is so easy to install and manage while other products require so much work! Usually. By dealing with the current ones today. The clever user can exploit this to get around any CANDE task limit. The specific request was that.

13 14 15 16 For more information on SYSTEM/MAKEUSER..106 \ Gregory’s A-Series Technical Journal Gregory. Part Two — Session Control Features”. vol. This name is specified through the Interactive Datacom Configurator (IDC). Donald J. vol. pp. 9-199 – 9-204. A-Series Security Administration Guide. Gregory’s A-Series Technical Journal. Gregory’s A-Series Technical Journal. September. The TRANSFORM specified as a usercode attribute would be applied to each output generated by that user. 1995. 9-202 – 9-204. Donald J. “Using SYSTEM/MAKEUSER. form #8600 0973-200. 9:06. “CANDE: Enhancements to Unisys’ Venerable Workhorse.06 .. 9:06. Part Two — Session Control Features”. “CANDE: Enhancements to Unisys’ Venerable Workhorse.” 17 Note that you do not want to use device transforms (now called drivers) in a MAKEUSER specification. see: Unisys Corporation. Section 9. as a “file transform. This limit includes schedule stations and such. Drivers are specific to hardware devices.” 18 Gregory. Volume 9. so your actual limit may be lower. The automatic restart feature is discussed on pp.

Sign up to vote on this title
UsefulNot useful