-------- Shipped to VMTOOLS 17 Aug 1990 13:05:26 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 93 This is the level being shipped to customers. LOOKUP Sever streams 0 and 1 before writing stream 2 at EOF. OPTCDJ Process highlighted underscore correctly. READER Correctly ensure no specification exception. -------- Shipped to VMTOOLS 14 Aug 1990 18:44:38 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 89 Correct trouble with commit on "callpipe *:|*:' READER Do not take specification exception when ordering file 0 or 10000 on XA. REXX The REXX pipeline command lost a word when running above the 16M line. VAR Don't issue diagnostic when EXEC2 refuses to drop variable. -------- Shipped to VMTOOLS 10 Aug 1990 17:17:50 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 85 Change: DISKRAND Output record has number in cols 1-10 when NUMBER or RECNO is after the file mode. MEMBERS Support reading member names from the input. QUERY Write to the output stream if connected instead of issue message. REXXVARS When a number is used to go back, this is now to the caller VAR as opposed to the previous SCBLOCK. SCBLOCKs are processed VARLOAD as before when the number is larger than the number of STEM environments built for a PIPE command. XTRACT Support reading member names from the input. EXTRACT is a synonym. Bugs/quirks. Scanner now rejects a stream identifier that is zero or a positive number. SPEC and FANIN now work with a negative stream identifier. MEMBERS Handle null member. UPDATE More than one blank after ./ in a control record. XTRACT Handle null member. -------- Shipped to VMTOOLS 27 Jul 1990 16:42:57 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 80 Various minor points and support for REXX/TSO. -------- Shipped to VMTOOLS 23 Jul 1990 21:09:17 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 71 Enhance: COUNT Sever primary output before writing count to secondary output. -------- Shipped to VMTOOLS 19 Jul 1990 15:40:17 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 69 Enhance: DISKSLOW Write sparse F-format files. (FROM is not restricted to be contiguous with an existing file for F-format.) Borderline: DISK Tolerate a file with no records ;-) SPEC Now releases all input records before doing the next batch. This may add stream switching overhead, but prevvents stall in some cases. Bugs: QSAM Release the buffer pool correctly (second attempt.) LISTCMDS Global option has been broken for a long time. -------- Shipped to VMTOOLS 17 Jul 1990 15:08:10 ----------------------- PIPSYSF MODULE Edition .33 PATTERN stages start at commit level -1, and commit to level 0 when the pattern is compiled without error. Fixed bug in variable management. -------- Shipped to VMTOOLS 16 Jul 1990 16:59:56 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 67 Bug: DEBLOCK NETDATA. Bad output when last segment of a record is not spanned and begins 'c0'x. PACK Output is one byte shorter for certain fields; more like copyfile does it. -------- Shipped to VMTOOLS 6 Jul 1990 21:42:28 ------------------------ PIPELINE MODULE Modification 1.0105 sublevel 63 Quirk: BUILDSCR Do not rely on the size being the size of the screen. Bug: QSAM 31-bit trouble. Addressing exception in machine <32M; random storage overlay in larger virtual machine. -------- Shipped to VMTOOLS 3 Jul 1990 21:12:25 ------------------------ PIPELINE MODULE Modification 1.0105 sublevel 57 The VMTOOLS module stores the pointer at 464 again. Extensions: DISKUPDATE [ [Variable | Fixed []]] The first 10 columns of the input record has the record number of the record to replace in the file. EVALUATE Now takes explicit file type etc like REXX. Processes args at commit level -2; calls function on commit level -1. Bugs: APPEND Starts at commit 0. REXX Explicit filemode should be uppercased. SPEC The words update didn't reset the output buffer correctly. -------- Shipped to VMTOOLS 27 Jun 1990 19:04:53 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 53 New and changed pipeline commands: STREAMxxx and STRMxxx are now synonyms. COMMIT - Commit the program to the level shown. REXX filters start at commit level -1. The interface commits to level 0 on the first I/O call (unless you do NOCOMMIT). A REXX program causes a pipeline to be abandoned when it returns with a non-zero return code without committing to level 0. NOCOMMIT Suppress automatic commit at the first I/O operation. This allows the program to read from a stream defined with ADDPIPE before committing to level 0. Thus, a program can read and validate a parameter file on commit level -1. STREAMSTATE {INPUT|OUTPUT} - Return status of the currently selected currently selected input or output stream. The return code is: 0 A program is waiting for a record on the other side. 4 A program is waiting to commit on the other side; the pipeline stalls if you try to read and write on this commit level. 8 The stream is connected; the program on the other side is in a state other than the two above. 12 The stream is not connected. Filter enhancements: BLOCK LINEEND [] Like C but with '15'x as the default line end character. CP Both a number and a command can be coded. CP 2000000 Q RDR * ALL|... DEBLOCK LINEEND [] Like C but with '15'x as the default line end character. OPTCDJ Processes output from OVERSTR to insert Character arrangement table in column 2. The 8 possible CAT ids for a column can be written as an argument; the default is that overstruck positions go to CAT 1; other positions go to CAT 0. SPEC WORD and NEXTWORD keywords. WORD (abbreviate to W) is used in front of a range; numbers then refer to words rather than columns. NEXTWORD (abbreviate to NEXTW) is like NEXT; it appends the field to the end of the output buffer. NEXTWORD adds a blank before appending if the buffer is not empty. spec word 1 1 word -3 nextword SPEC processes the arguments on commit level -1. STORAGE Writes storage when not first. The third operand is the key to use in the SPKA format with four bits of zero in the loworder nibble. All input records are read into the storage area; at most as much data as the storage area length are loaded. Storage read now ensures that the beginning and end of the area are accessible; you can still force an addressing exception if there is a hole in the area. But it is getting "difficulter" to shoot oneself in the foot. VMC Talk to SMART. Same args as the VMC command. XLATE A2E and E2A options select the tables to translate between codepage 500 and ISO 8859 Latin Character Set 1 (Western Europe). Floating point conversion routines are now more accurate though C2F still could be improved. They are exposed in SPEC and PATTERN. Changes: STACK Stacks the line before copying to the output. Device drivers that copy input to output (as well as the device) now test if they are connected when they start. They stop as soon as the output becomes unconnected while writing. Bugs: In 31-bit mode the PIPNUPL conversion routine assumes that there is a new-format plist present. (It cannot find the flag in the save area.) BUILDSCR Truncate after the last column except in the last line. -------- Shipped to VMTOOLS 15 May 1990 22:20:57 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 31 On null records (records with zero length) ========================================== This is the definitive (?) story for null records: 1. Filters that throw away null records for no reason and where processing them should cause no problems: ASMXPND, DUPLICATE, JOIN, PAD. 2. CHANGE also throws null records away. Copying them should be no problem. I've changed it so that literal|change ,,abc,|... does insert the string at the beginning of the record. 3. SPLIT generates null records when the target is at the beginning or end of the record. 4. STRIP copies null input records and generates null output records except for the documented case of STRIP TRAILING leaving one occurrence of the target. 5. Filters that expect a carriage control in the first postion of the record discard null lines. The behaviour will be documented in the catalogue. C14TO38 and DELOVER copy null lines on modification level 4; they will discard them on modification level 5. 6. CHOP and SPEC document that null records are discarded. A new global option (NULLs) will make CHOP, SPEC, and STRIP treat null records just like all other records. New filters: EVALuate The REXX program PIPEFUNC is called as a function. If the result is numeric, it is taken to be a return code. If the result is a string, it is issued as a pipeline command. The most useful commands are CALLPIPE and SHORT. Arguments: The program receives two argument strings. The first one is the argument on the invocation, the second one has four tokens: 1. 8-character hex string that is unique for the invocation. 2. The stage's position in the pipeline. 1 and more. 3. The number of the highest-numbered stream present. 4. The message level in HEX. Bugs: INSTORE Should not flush the buffer on a null line. Reject undocumented options. OUTSTORE Should not allow arguments. UNIQUE Last record not written when it is shorter than the beginning of any of the ranges. -------- Shipped to VMTOOLS 11 May 1990 19:55:51 ----------------------- PIPELINE MODULE Modification 1.0105 sublevel 18 NOTENOTENOTENOTENOTENOTENOTENOTENOTE.... This may well be the last release where the old PLASPIPE works. The macro library has been changed to enforce the use of PIPEPVR. New Global option: NULLs. This instructs built-in programs to retain null records on input and not to discard null records on output. Note that the pipeline dispatcher does not care about null records; this is a matter for the individual stages. New filters: (Some have been there but are not documented.) ADTFSF Obatin information about files on an accessed minidisk or directory. ADTFST [NOFORMAT] {* | ...} Information about all files, or files on the mode letter, are written in the format of LISTFILE (DATE NOHEADER. Several mode letters are written with blanks between them. (Unlike LISTFILE.) DISKRAND Random access to a CMS file. DISKRAND [ [ ...]] Ranges list the records to read. After the argument ranges are processed, input records are read. Input records have additional ranges to process. With feedback it is possible to implement search engines using binary search and hashed searches. MDISKBLK Read physical blocks from a minidisk. MDSIKBLK [ ...] Ranges list the blocks to read. After the argument ranges are processed, input records are read. Input records have additional ranges to process. Using this driver in a feedback loop it may be possible to recover the contents of a broken minidisk. VCHAR Recode characters to different length. The first argument is the number of bits per character in the input record; the second argument is the number of bits per character in the output record. Highorder bits are truncated/padded with 0. The input and output records are bit streams. A record is written for each input record. Only complete input characters are copied. VCHAR 6 8 Generate 8-bit bytes from a tape with CDC 6-bit characters packed 4 characters to 3 bytes. XAB Read and write Extended Attribute Buffers. XAB [ | [READER] FILE ] Extensions: CHANGE Retains null records when the global option NULLs is present. CHANGE does not discard any records when this option is active. CHOP Retains null records when the global option NULLs is present. CHOP does not discard any records when this option is active. When the secondary output is connected, a record is written to it for all input records. SPEC When a singe field is written without PAD or SELECT, the default placement is in output column 1. This is now valid: ...|spec 1.10|... ...|spec /ab/|... Retains null records when the global option NULLs is present. SPLIT Retains null records when the global option NULLs is present. Null input records are copied to the output. Null records are written when splitting at the record boundaries. Bugs: CMS/COMMAND Trouble with HX on XA. DISK Trouble when the primary input stream is null and there are records on the secondary input stream and creating a V-format file. STEM APPEND with no input (as opposed to a null line) sets stem.0 to 0 instead of leaving it alone. -------- Shipped to VMTOOLS 24 Apr 1990 20:19:54 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 59 PIPSYSF MODULE Edition .32804 Extensions: PATTERN New atoms AT, ATANY, and ATCASEI match the null string in cases where STRING, ANY, and CASEI matches something. Changes: MACLIB Record 1 to include count of directory records. This is needed for TXTLIB to process the directory correctly on CMS 5.5 and later. Assert 99 is removed. It tested to ensure that no one tampers with the user anchor. The anchor is now restored quietly if it has been tampered with. *NOTE:* The anchor will be removed in modification level 5. Bugs: PATTERN CASEI and NOTCASEI incorrect with null argument. Incorrect diagnostic on the select command when message 45 is issued. -------- Shipped to VMTOOLS 20 Feb 1990 19:51:35 ----------------------- PIPSYSF MODULE Edition .32804 -------- Shipped to VMTOOLS 20 Feb 1990 19:10:12 ----------------------- PIPELINE MODULE Modification 1.0104 sublevel 55 Extensions: READER Support FILE option to select a particular reader file. This should allow several reader files to be read (on different readers) concurrently and predictably. (Apart from the creature-comforts in not having to ORDER.) This should have been here from day 1; I do apologise for the 8 year delay. Bugs: CALL/ADDPIPE: Premature EOF when a new stream is connected to a stream that isn't selected in the connecting stage. > The file mode number of an existing file was retained. CONSOLE Quits when reading a null record. DELAY Does not retract itself gracefully. DISKBACK Storage overlays. Exposed by APPEND DISKBACK, but potential has been there always. MEMBERS/XTRACT Assert failure when directory is huge. PATTERN INPUT() ignores the first argument, always returning the beginning of the input buffer. SQL INSERT with a column list gives diagnostic 382. -------- Shipped to VMTOOLS 2 Dec 1989 15:30:40 ------------------------ PIPELINE MODULE Modification 1.0104 sublevel 44 PIPSYSF MODULE Edition .32803 Extensions: COLLATE Collates two streams. Primary input stream has master file, secondary has details. Parameters are column ranges for the key in the master record, the detail record (defaults to the master record one). The primary output is the merged file; it has those records where a key is both in the master and detail streams. Keyword(s) select ordering (any combination of MASTER and DETAIL; default is master followed by details). Secondary output stream has master records for which there is no detail; tertiary stream has unmatched details. TOKENISE Break each input record into tokens. The arguments are up to two delimited strings. Blanks are always delimiters and not written to the output. The first string one specifies the characters that are tokens in their own right; the second is a string to write after an input record is processed. CMS scanning rules are done with |TOKENISE /()/|. The output records are neither truncated, nor padded, nor translated. Bugs: - Assert failure in the dispatcher after a stall on particularly convoluted subroutine pipelines. - When accounting a fast dispatcher path was used, charging most time to the last stage to start. CP Loop in large XA machine with buffer too short for even one line of response data. FULLSCR Fix some XA-related problems. OVERLAY Data lost if the stream with most records is not the highest numbered. SQL Include 2.2 bootstrap module, fix some messages to support 2.2 RDS return codes. Fix XA support. SPEC 1-* 1-*| causes storage overlay rather than run out of storage. VARLOAD Forgot to get the variable name below the line. XTRACT Do not write null records between members as advertised. MEMBERS Changed behaviour: COUNT Stops as soon as it discovers that the output is not connected when using stacking/secondary output. Could be considered a bug, though the behaviour was deliberate. ------------------------------------------------------------------------ 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