Planned: A REQUIRE "<Filename>" statement, to insert other files into the source stream. Possible: A way for LIST and WILD parses to coexist with ordinary file parses. As it is now, there is only one file parse in progress, so that if you parse a list of files, you can't parse another simple file without wiping out the list. This means, for instance, that an Append command could not be made in PCL. How this could be done I have no idea. Planned: Field-option BREAK <String-expression> for FIELD fields (and perhaps some others) to allow the user to set his own break character mask, and a similar option ALLOW to specify the characters not to break on. These will modify the standard break mask for the field being parsed, so the user need only specify the characters he wishes to have different from the standard. Possible: Add option to keywords to set the invisible bit in the keyword table, perhaps with syntax like WORDS(FIRST:1,SECOND:2:INVISIBLE,...). It is the syntax which needs recommendations. Possible: If a file read by Declare contains a PCL-INIT procedure, this procedure will be executed when the Declare is complete. Planned: Build a keyword table of PCL commands, so Undeclare Command ? can give a list, and so recognition works. The same goes for the Information Variable command. Planned: If Command-Trace is set, then have ^C out of PCL execution give a report like "% ^C out of command FOO: Line 5" for debugging PCL routines. Also, have ^T type out a similar message. Perhaps these should always happen, regardless of Command-Trace. Possible: Declare Environment should use PMAP instead of BIN/SIN. Planned: An option to COMMAND to allow a command to be runnable before Login (this will be necessary if SAVE/EXEC is defined as the way for sites to customize). Possible: An Invisible option to COMMAND. Possible: Change SET INTEGER-VARIABLE/STRING-VARIABLE to SET VARIABLE (named) name (to) { integer | quoted-string } Possible: Reverse the arguments to Declare Synonym, thusly: Declare Synonym (existing command) directory (to be) di Future: It should be possible, someday, to tell the Exec to run a PCL procedure when a particular key (or control-key) is struck, and also when a user-defined timer interrupt occurs. It should be possible, for instance, for the user to build his own ^T routine this way, and his own idea of a mail-watch facility. This idea requires a good deal of meditation and discussion. Planned: An extended Take command, with which batch control files could be run in the Exec: "Take/Batch-compatible A.CTL" is the most likely syntax. Perhaps it should also be possible to Set Default Take /Batch-compatible. Bug: Programs sometimes get "Device or data error" when PCL disconnects from them. This may be unavoidable, since the program is usually stopped in the monitor, with various monitor variables already set to the PCL control stream. Future: Provide a mechanism to give defaults to arguments passed to procedures. For instance, PROCEDURE SUB(INTEGER I (DEFAULT 3)) might be a way to say "if the caller calls with CALL SUB() then use the number 3." Planned: If an execution error occurs in a Procedure, print out a trace of the callers of the procedure, e.g., ?SUB Line 12, from MAIN line 32: Incorrect type Future: There has been some desire for a way to manipulate references to variables, for instance a system procedure $NAME which, when passed the name of a variable (as a quoted string), would return the "address" of the variable, in a manner suitable for reference/deposit. This would be used to allow a procedure to reference the variables of its caller by name, without having them passed as parameters. Thus, a procedure could be made which, when passed the string "FOO", would type out "FOO has an invalid value: 5" by referencing $NAME("FOO") to get the caller's value. Also, some interest has been expressed in a routine $NAME which, when passed a variable, would return its name in printable format, thus $NAME(FOO) would return "BAR" if FOO were a procedure parameter which was bound to BAR in the caller's context. Bug: If during the execution of a PCL routine the routine redeclares or undeclares itself, disaster occurs. Redeclaration or removal of an "active" routine should work gracefully. Bug: The code fragment LOOP: PARSE (FILE:<Statement>; TEXT:<Statement>); PARSE (COMMA:GOTO LOOP; EOL); improperly parses FILE2.TXT in "FILE1.TXT,FILE2.TXT" as a Text field. This has been diagnosed as a monitor error, which will be fixed in TCO 5.1166. In general, ANY parse with a Text in it will parse according to the Text. Future: A general macro facility. Planned: More options to the date and time conversion services, to allow access to the many facilities provided by the JSYS's involved. Planned: Add DEFAULT_FIELDS field option to File, to fill in all appropriate defaults at runtime from the string provided. Possible: More fork-manipulating variables and services: $ForkName (name of current fork), $ForkNumber (number of current fork), $Kept (whether current fork is kept), $IsFork(name) (whether fork with given name exists), $MakeFork(name) (creates new fork). It is uncertain whether these features are necessary, as the problems which they have been proposed to deal with are being dealt with in other ways. Planned: Add UnquotedString field-type. This will not happen until BREAK is implemented, since without it Text will work just as well. Bug: In a Words field-option, the integer is limited to natural numbers. Planned: A new syntax for defining keyword/switch tables, instead of WORDS. Probably, it would be TABLE(<Name>:<statement>, ...). Possible: An alternative way of specifying switches which are only yes/no selections. The field-type SWITCHLIST(WORDS(DELETE:DeleteSw,NOCOLLATE: NoCollateSw,HEADER:HeaderSw,NOHEADER:-HeaderSw)) would, when executed, parse that list of switches over and over again until something which didn't match appeared, and, for each switch specified by the typist, would set the given variable (e.g., DeleteSw) to one; the "-HeaderSw" form would set the variable to zero. This would allow several options to be selected with ease. (When boolean variables are implemented, they would be used instead.) Possible: Boolean variables and constants. Possible: Have the Exec commands which read and write global variables also work with system variables. Planned: Have Information PCL use separate lines for integer procedures and string procedures. Planned: A more advanced looping construct: FOR <Integer-identifier>= <Integer-expression> [STEP <Integer-expression>] UNTIL <Integer-expression> DO <Statement>. Perhaps the FOR-list mode will also be implemented. Possible: An option to Exit which would cause an exit to the top level of the Exec, instead of only exiting the command. Planned: Better help for FileList parses after the first file. At best, this would be the help message for the field after the file list, plus "or comma to enter another filespec." However, the flexible way we use to do parsing means that PCL has no way to know what the next field to be parsed is. Perhaps what FileList needs is a NextHelp option which provides the help for the next field. That is, a FileList with NextHelp "protection to be set" would cause protection to be set or comma to enter next filespec to be typed out as the help message for files after the first. Planned: A new variable to return the entire list parsed by FileList, separated by commas; it would be the same as if the user ran through the list and saved the $FileN of each file in a string variable. Planned: A way to Invoke a program and to provide information to be placed in its rescan buffer: a RESCAN <String-expression> option. Planned: $PromptEnabled to match $PromptReg. Possible: An option to Command to indicate that the command uses Parse, although in a called procedure and not in the body of the command. Possible: A way to make synonyms for ^E commands. Bug: Undeclare of a preserved symbol works half way. Bug: Undeclare of superceding definition should not confirm the redeclaration of the superceded object. Bug: Undeclare All does not work in a preserved Exec. Possible: A way to have Declare initialize global variables only if the definition is a new one. Possible: An option to Declare to confirm only commands, not procedures. Future: General string replacement, so that a synonym NETW="INFO DECNET" would work, as would a synonym like SETPRO="SET FILE PROTECTION". Possible: String constants longer than 256 characters. Possible: A way to pause within PCL and return control to the terminal, and then to resume PCL execution. Possible: A way to, within PCL, locally turn on or off command trace; this should be nested. Planned: Instead of the JFNS arguments to $FileInfo_S, provide something like FLD. PLANNED: REDUCE THE NUMBER OF OPCODES TO 64 TO EXPAND THE LINE NUMBER FIELD. THIS WILL REQUIRE RECOMPILATION OF ENVIRONMENT FILES. Bug: If a PCL does an ENABLE the prompt is not changed until the next command. Possible: A NoWait option to DoCommand, which would, if the command ran a program, return control to PCL after the program was started without waiting for it to complete; the program would run in parallel with the Exec and would not be usable from PCL through Typein. I can see no use for this, but it has been requested. Possible: Embedded comments, perhaps delimited by curly brackets. Possible: Labeled blocks, to ensure that an END matches a BEGIN. Possible: Multiple values in Select-vals and Tagged-statements. Possible: LITERALs. Possible: Allowing the first argument to file-information services to be a string containing the name of a file, in addition to the present integer code. Bug: Redundant parentheses give an error: LET I=(J) Possible: PRETTY for PCL. Possible: Options to $InputTAD to convert only a time or date. Possible: A different way of specify substring extraction, such as STRING[3 TO 8] and STRING[1 FOR 10]. Future: A mechanism to make CCL call PCL routines to compile, load, etc., programs in languages not known to CCL. Planned: Don't do SETSN for PCL commands until confirmation. Planned: Inhibit interrupts in memory allocation. Bug: DECLARE SYNONYM * SYSTAT should not be legal. Possible: A random number generator service. Bug: The Parse statement Parse File(Input,Default_Ext *) gets no error if you type in "FILE.EXT" for the file name, but it inserts a ".*" into the buffer. If the line is then reparsed, the name "FILE.EXT.*" is illegal. This is a monitor bug. Possible: A system variable containing the connected directory name without the device name. Possible: A system variable containing the device name of the connected directory. Future: A way to have PCL routines call the parsing routines of standard Exec commands, so users don't have to rewrite all the code for, say, an alternate Directory command. Bug: If a synonym is declared, and an Undeclare All done, and then the synonym redeclared, you sometimes get "definition replaced." Bug: If you define synonym A to command B, and delete command B, synonym A should go away. Possible: More than one expression per case in Select. Possible: Allow command names to start with digits.