------------------------------------------------------------------------ Modification level 4 was built later in the evening of 13SEP89. -------- Shipped to VMTOOLS 13 Sep 1989 15:42:24 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 35 An ABEND exit is now set up to issue meaningful messages on assert failures. This should not be noticeable(!) -------- Shipped to VMTOOLS 12 Sep 1989 00:20:50 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 30 Copyright notice now correct. Number of problems fixed with the High-Level Language interface. -------- Shipped to VMTOOLS 10 Sep 1989 19:38:18 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 27 Many stages and filters now ensure that there are not too many streams defined for them and issue a message if this is the case. Fix: TAPE to work on VM/XA in a 370 mode virtual machine. (Redfaced.) -------- Shipped to VMTOOLS 7 Sep 1989 16:38:59 ------------------------ PIPELINE MODULE Modification 1.0104 sublevel 23 PL/I and C filters are supported in filter packages. Refer to PLIPIPE PACKAGE on VMTOOLS and PIPHLL LIST3820 on IBMVM. Compiled REXX programs in filter packages are now supported when they are compiled with the OBJECT option; CMS does not need the SPE to run such programs. (Compiled REXX filters stored/execloaded with filetype REXX have been supported all along, but they require the SPE to CMS.) Fix: TAPE to work on XA. (Blush) Reject a character range of zero, eg., |Xlate 4f.0 7| -------- Shipped to VMTOOLS 26 Aug 1989 14:58:45 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 19 Fix: Filter packages installed correctly. Error messages issued correctly after I/O errors on Diagnose A8 on XA. QSAM on XA now goes to the I/O module in 24-bit mode. -------- Shipped to VMTOOLS 19 Aug 1989 15:34:04 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 15 Fix: COUNT LINES with an alternate stream did not copy the file. PACK with an alternate stream did not sever the primary output stream before writing to secondary output; this leads to stall when the secondary output of pack is fed directly to the secondary input for disk. STOP global option causes > to fail with return code 20 in syntax exit; there may be other programs which behave strangely when the stop option is used. -------- Shipped to VMTOOLS 16 Aug 1989 16:40:43 ----------------------- PIPE MODULE Modification 1.0104 sublevel 12 Change: PIPE bootstrap module no longer attempts to load the PIPELINE segment, but the support can be enabled easily. The name of the segment to load is between noses, and the module has no other set of eight left and right noses. To enable it, use a module editor or this plumbing: 'PIPE (name PIPELINE)', '|< pipe module', '|change />>>>>>>> IPELINE/>>>>>>>>PIPELINE/', '|> pipe module a', Make sure you have the same number of >>>> in both strings. You can substiture another name for it. -------- Shipped to VMTOOLS 7 Aug 1989 14:41:54 ------------------------ PIPELINE MODULE Modification 1.0104 sublevel 9 Change: COMMAND and CMS now clear a flag in NUCON so that the response to the PIPE command is R(-3); rather than unknown CP/CMS command. -------- Shipped to VMTOOLS 2 Aug 1989 20:50:56 ------------------------ PIPELINE MODULE Modification 1.0104 sublevel 6 General: The global option DEBUG now has TRACE as a synonym. TRACE is the preferred spelling which is documented; DEBUG is retained for compatibility with the past. Extensions: PATTERN Underscore (_) is now valid in a variable name. PRINTMC Records can have 5A carriage control Restrictions: RUNAT Now enforces that it must not be used with ADDPIPE. Bugs: ASMCONT ABEND on short continuation records COUNT STACK assert failure on XA. MERGE ABEND when merging field beyond the end of the record. -------- Edition .328 shipped to VMTOOLS 5 Jul 1989 14:06:41 ----------- Incompatibilities: DELAY Must not have arguments. The time to wait is the first token of each input record. The input record is copied to the output when the delay has expired. Filter packages: Filters have always been installable with "local directories", but from now on, the pipeline module will look for modules with these names and install them as a nucleus extension as part of initialisation. Once installed, filters and messages in these modules can be considered part of the pipeline itself. There are four modules, PIPPFTF, PIPUSERF, PIPLOCF, and PIPSYSF. When installed, PIPPTFF is searched before the built-in tables, so that one can replace a broken filter with a fixed one without doing surgery to the pipeline module itself. The other three are searched after the built-in directories, as always. The nucleus extensions are prefixed an asterisk to avoid accidental invocation. The modules refuse to run (to install themselves) unless R2 points to a SCBLOCK. XA exploitation: When installed above the line and entered in 31-bit addressing mode, the pipeline now keeps all data areas above the line unless a host interface requires them below. Data are copied below the line where required. Records written to the pipeline with the LONG global option in effect are checked for compliance with the addressing mode: in 24-bit mode such records are limited to 16M (there is no check for wrap-around), in 31-bit mode the limit is 2G. New programs: APPEND The argument string is a pipeline specificaiton for a driver to run after the input file has been copied to the output. This allows drivers which read to be put "downstream". The EXECCOMM environment for the stage is the one at the time the pipeline with the APPEND in it is defined. To append the stemmed array X. to the contents of the pipe: pipe literal abc|append stem x.|.... PREFACE Like APPEND except that the driver is run before shorting the input to the output. Extensions: COUNT The result is written to the alternate output stream if one is defined. Records are copied on the primary stream in this case. This should reduce the need for the stacking options. DELAY Supports time of day: code hh[:mm[:ss]] for the local time to wait to. This is coded in each input record. The input record is written to the output at or after the given time relative to the beginning of the day. This makes it a bit tricky to write something to trigger at 3am: If time('Hours') > 2 Then addl='' Else addl='literal 3|' 'PIPE', 'literal 27|', /* 3am tomorrow */ 'dup *|', /* Forever */ addl, /* Maybe 3am today? */ 'delay|', /* Wait */ '... The components of the time must be zero or positive, but are not inspected; it is fine to wait to 1:17:64; this is 1:18:04 in normal parlance. Relative delays can be coded in hours, minutes, and seconds separated by :. Each component must be zero or positive, but you can code any number of seconds, for instance 64. The format of the relative delay is: +[[:]:] DELAY now also supports multiple invocations. DISKSLOW Support FROM to designate the first record read or written. From must be immediately after the filemode. DUP Support * for infinity (or close: 2G). Also fixed so that count doesn't wrap at 16M. FMTFST Options to select CDF or (default EDF) format of input FSTs. When coding two options, the FST is converted between the two formats, within the limitations of the CDF FST (seconds lost, maximum counters sticky at 'ffff'x). HASM Attempts to create fragmentation on 5.5 and beyond. IMMCMD A single blank is written to the pipeline when the command string received from CMS is null. LOOKUP The secondary key may be longer than the primary key. READER Pads lines and cards to the original length if the spool file was made on SP5 or later. REXX When used explicitly, the filetype and mode may be coded with the program name in parentheses. Thus, an EXEC can invoke itself as a filter. The seventh token of the PARSE SOURCE string is CMS when the EXEC is called from CMS and ? when invoked as a filter. Eg, parse source . . $fn $ft . . how . if how/='?' Then Do address command 'PIPE(name PIPELINE)', '< input file|', 'rexx (' $fn $ft ')|... exit RC end 'output Hello, World!' SQL Uses SQL 2.1 interface module. Don't know what happens if this is used with version 1 of SQL. New option PGMOWNER to indicate a particular userid as the owner of the access module. The following token is translated to uppercase and used instead of the default 5785-RAC. XLATE Support translation between international codepage 256 and the national codepages 037, 273, 277, 278, 279, 280, 281, 282, 283, 284, and 285. To translate a file keyed on a Danish terminal to the international codepage: |xlate from codepage 277|... Fixed bugs: * Specification exception when accounting and using commands. STARMSG Program checks when issuing the HMSG command. -------- Edition .32726 shipped to VMTOOLS 25 Apr 1989 16:55:05 -------- Extensions: WHILELABel New selection stage. Passes records to the primary output as long as they have the label coded. Once a record without the label is met (or one shorter than the argument), the remaining input is shorted to the alternate output, if defined and connected. Different from FIND in that it only takes a set of records from the beginning of the file. Consider a NETDATA format file which has been deblocked; there is a number of INMRxxx control records at the beginning. (end ?) ...|w:whilelab \|stem ctl. ? w:|whilelab {|stem data. This loads the leading control records into ctl., the file into data., and discards the trailing INMR06 record. DELAY New driver. [See above.] time to wait in seconds. The argument string is written to the pipeline after the delay. To generate a QUERY FILES command every minute: literal +60|dup *|delay|spec ,QUERY FILES, 1|cp|... CAVEAT: Virtual machine must have ECMODE ON on HPO and SP. Supports XA-mode virtual machine. The argument is expected to be extended to cover waiting to a specific time (e.g., midnight), and to support more than just seconds. FBLOCK A second argument can be coded. It must be a single character or a two-character hex representation of a character. When coded, this character is used to pad the last record, if it is partly filled with data. No padding is done if the second operand is omitted (current behaviour). ...|fblock 80 00|... STEM Append option when writing to a stem. Lines are added after the existing array. The keyword is coded after the number, if present. ...|stem abc. append ...|stem abc. 3 append PIPINIT PIPMOD is installed as an immediate command. PIPMOD STOP is available as an immediate command. PIPE bootstrap installs module with immcmd option. I'm still toying with the idea to make PIPE an immediate command as well; this is an expedient. Note that PIPMOD STOP only terminates stages waiting for an asynchronous event. It does not stop a stage that is run away. Quirks discovered: FRLABEL and TOLABEL with alternate streams terminate prematurely if the primary output stream is not connected. This fails if more than one record goes to the primary: ...|f: tolab a|take 1|... I intend to unify WHILELABel and these two selection stages at a future time of leisure. IMMCMD Old releases of CMS seem not to pass a proper argument string; my HPO5 removes leading blanks from the command. I expect to change this to write a single blank instead of a null line. Fixed bugs: < Reading in-core file correctly when name is coded in uppercase; got error 124, file system error. This error was introduced with the previous edition. -------- Edition .32725 shipped to VMTOOLS 18 Apr 1989 18:42:23 -------- Extensions: SQL The buffer into which SELECT reads data is now cleared so that null values are zeros or blanks, depending on type. This also means that variable length fields are padded with blanks. < (Disk read.) Looks for EXECLOAD-ed files if just two operands are coded (that is, using the default mode *). Code an explicit mode of * to suppress looking for in-core files. PATTERN rides on this; Included patterns can now be EXECLOAD-ed. (%include) TRUNCate Synonym for CHOP; minimum abbreviation is 5 characters. TAKE and DROP: The keyword FIRST can be coded; it is ignored. IEBCOPY New option OSPDSDIR to deblock the directory records of an unloaded OS PDS. The output member is the directory entry with as much user data as the flag byte indicates are present. PATTERN New atom BAL to scan a string with balanced parentheses. New function: OUTBUF returns output buffer contents. CURSOR('R') returns cursor relative to end of input record. OUTBUF and INPUT support SUBSTR-type arguments. Rerfer to PIPATTRN SCRIPT/LIST3820. Bugs fixed: SPEC Extensive clean-up in conversion and stripping. * ABENDS when a pipeline fails with a syntax check and it has a DEBLOCK stage which had OK syntax. -------- Edition .32724 shipped to VMTOOLS 11 Apr 1989 12:27:34 -------- Bugs fixed: IUCV Messages substituted with the name of the service are now correct in a client virtual machine. Trouble with running SELECT was introduced in .32723. -------- Edition .32723 shipped to VMTOOLS 7 Mar 1989 02:26:54 Bugs fixed: VAR The first line is not discarded when the VAR stage is a last stage. This has implications for cascade of TAKE and VAR. QSAM ABEND trying to write null record. Null records should not be written to the dataset, but copied to the output stream. STATE(W) Null and completely blank lines are discarded. Edition .32722 extensions: UNIQue The column ranges may be coded at the beginning of the plist. This makes UNIQue compatible with CHANGE, (N)LOCATE, and XLATE. The old syntax will still be accepted. NOT New filter which runs a stage with output streams 0 and 1 reversed. May be used with one or two streams. Input streams are not reversed. Thus NOT FIND is the same as NFIND. When used with CHOP, you get the parts of the record that are beyond the chopping point. NOTFIND Synonym for NFIND. NOTLOCATE Synonym for NLOCATE. NINSIDE Synonym for NOTINSIDE. Bugs fixed in .32722: PATTERN NOT atom fails when the leading character matches the character at the cursor. Should only be when whole string compares equal. This bug probably never made it to VMTOOLS. Edition .32721 extensions: PDSdirect is now the formal name for the driver to read the PDS directory. EMSG filter issues lines as messages and copy to output. QSAM closes DCB also when filter is not run due to syntax error in other stage. GREP (courtesey of Bob Donovan). PATTERN New atoms, AFTER and AFTERCI. Positions the cursor after the next occurrence of the argument string. Like TO and TOCASEI. Edition .32720 is equivalent to modification level 3 of the PO.