This file documents the recent history of this version of SRD. It has been updated through V6.6. -------------------------------------------------------------- This is an improved version of SRD, dated 3-DEC-1980. From: Phil Stephensen-Payne, c/o Systime Ltd., Concourse Computer Centre, 432 Dewsbury Road, LEEDS LS11 7DF, England. This version is intended to combine all the versions of SRD I know of (Ray van Tassle's, Bob Turkelson's and my own) into one (easily tailorable) unit, which can then hopefully be used as a base for future modifications. The changes from 'standard SRD' fall into three categories, as follows:- 1. Those made by:- Ray Van Tassle Motorola 1301 E. Algonquin Rd. Room 4135 Schaumburg, Ill. It has been sporadically updated over the last year and a half, so long that I forgot what it's original base was. I think it was the version distributed with our IAS V 2.0 system. The original SRD had a massive number of bugs, the worst one was probably that it would loose files on a Write-back (but mostly only on very large directories) !!!!!!! This version has had all the bugs I could find fixed, plus a lot of enhancements. Some of the key things are: Write-back works properly, and it also re-tries if it gets an I/O error on the write. It will dynamically expand it's core buffer (via EXTSK$ directive) if the directory won't fit. If the entire directory won't fit, it will do it in chunks, each of which is sorted properly; along with a warning message. A trailer line for each directory is given, showing the number of files in the UFD, and the number of files selected. If a switch that causes the file header to be read is specified (/MI, /FU, or a date switch), the number of blocks used/allocated is also given. A "nolist" switch is added, so you can get the above trailer info, without getting a list of the individual files (very handy for scanning an entire disk). The user write-up has been re-written. On date select, the "before" and "after" dates can now both be specified. The format of the output has been slightly modified so that a simple TECO macro can make a PIP command file to copy (or whatever) the selected files. Two macros to do just that are also on this tape, in my UFD for TECO macros. To use them, do: SRD XXX.CMD=???? TEC XXX.CMD *EISTRIP$$ *EIGET$$ * (any other edit you may want to do) *EX$$ 2. Those made by: BOB TURKELSON NASA/GODDARD SPACE FLIGHT CENTER CODE 934 GREENBELT, MARYLAND 20771 (301) 344-8864 Dave Parker, Henry Tumblin Duke University Medical Center Box 3181 Durham, NC 27710 (919) 684-6804 Support for /CO/LO/MU switches (to select contiguous, locked, or multi-header files). Support selection of files created between two dates when both /BE and /AF are used in the same command line. Yes/No/Quit/Go responses for selective delete (obtained from another version of SRD). Support /OV:[n] switch to select obsolete versions of files, which are those files which would be deleted if the /PU:[n] switch were used, and those which would not be selected if the /SV:[n] switch were specified. This provides a convenient method for users to see their obsolete files, and for system managers to determine which users are not regularly purging their files. Fixes for a few bugs (including the one reported in the October 1979 Multi-Tasker). Remove the requirement that a period must be included in the /SE: switch file specification, even if the file searched for has the null type. If the conditional symbol WILD$ is defined in SRDPRE.MAC, treat the file specification string given in the command line as if it has wild card matching after the name and type fields given, unless /DE, /SD, or /PU is specified (but never if the file specification appears in an /SE: or /SD: switch). A previous version of SRD treated any file specification in this manner, even if it appeared in the /SE: switch. Thus there was no method of obtaining only *.CM files, if any *.CMD files existed, or only TALL.* files if any TALLER.* files existed. The version from the New Orleans tape corrected this problem. However, to list all files beginning with OMSI, one must specify >SRD /SE:OMSI* rather than simply >SRD OMSI . In order to make SRD easier to use in our most common situation, without removing its new capability, we chose to make this modification. If any files are to be deleted, we always require the stricter syntax, to help insure that no file is deleted just because its name may be similar to those being deleted. Support for the /ID switch to identify which version of SRD is being used. Current version is V5.0. Support for the /BF switch which displays how much buffer space is available for use by SRD to read in the directory file. The code for reading the directory file into memory has been modified to read in as much of the directory as possible into memory, compress the directory, then if there is still more to read, attempt to continue reading it in. This seems to work on directories which are large but not logically dense. The dynamic checkpoint allocation does not seem to be working properly and SRD should not be built with this feature until it is resolved. 3. Those made by me:- Phil Stephensen-Payne, c/o Systime Ltd., Concourse Computer Centre, 432 Dewsbury Road, LEEDS LS11 7DF, England. a. Modify SRD.CMD (as developed in 2) to contain all the code for building SRD, thus removing SRDASM.CMD. b. Set up initial values of switch masks from Task Builder GBLDEF statements (and add code to SRD.CMD to set them up), thus allowing users to configure various aspects of SRD defaults (e.g. inclusion/exclusion of [0,0]) as they wish. c. Replace the conditionalised code under WILD$ (from 2) with a pair of switches /WI and /WD. If /WI is set (by specification or task builder parameter) then FRED implies FRED* (and so on). In addition the switch /WD indicates whether such wild-carding is valid for delete operations. Note that if /WI is not specified then FRED will still imply FRED.*, but FRED. will look only for files with a null extension. d. /BF switch (in 2) renamed to /SI (size) to avoid conflict with date switches. e. /DA, /AF and /BE modified to handle inclusion of time and/or date. f. Date handling extended to cover:- /AE = After or on a given date/time. /AF = After (but not on) a given date/time. /BE = Before or on a given date/time. /BF = Before (but not on) a given date/time. /DA = On a given date/time. g. Added /HE to provide help. h. Added /AT to determine whether or not output device should be attached if a terminal. i. Added /M2 to allow a different flavour of 'Middle-Sized Listing' (as developed in 1). If /M2 is not set (by specification or TKB) then the format is as defined by Ray van Tassle viz:- Filename Creation Date/Time Revision Date/Time If it is set, the format is one I prefer, viz:- Filename Filesize CLM flags File ID Creation Date/Time j. Added a /00 switch to specify whether [0,0] should be included in [*,*] searches. k. Added a /SY switch to specify whether system accounts ([0,*] to [10,*]) should be included in [*,*] searches. l. Modified output so that if /RD (Revision Date selection) is specified with a date selection or /MI/M2 the date output is the revision Date instead of the Creation Date. m. Combined the methods of 1 and 2 for coping with big directories, so that now SRD will read the directory a bit at a time (if necessary), compressing as we go (as in 2) and if there is still insufficient room, will do it in chunks (as in 1). As far as I can tell the method works, but I have been unable to test it properly as I cannot now create a directory too big for it to handle (I gave up after about 1600 files - if you have more than that in one directory you've probably got problems anyway!). n. Updated the version to 6.0. For full details on this version of SRD consult SRD.DOC. <<< THE FOLLOWING DOCUMENTS UPDATES FROM THE SRD WORKING GROUP, FALL '81 >>> [352,1]README.1ST - LOS ANGELES FALL 81 - FILES SUBMITTED BY: Bob Turkelson NASA/Goddard Space Flight Center Code 935 Greenbelt, MD 20771 (301) 344-5003 This UIC contains correction files for SRD V6.0, which was submitted to the Spring 1981 Miami RSX SIG tape, in [373,4]. The modifications I made are: o Corrected the problem with SRD.CMD which caused the generation of incorrect initialization defaults when the feature was used. o Changed SRD.CMD so that a different SRD.ODL file is generated when SRD is built with FCSRES. o Corrected a but which prevented /WB/-LI from working properly (the directory was not sorted before the write-back). o Changed SRD so that when the /SE switch is specified, /WI and /WD are ignored; that is, there is no implicit wild-carding whenever the /SE switch is used. o Added the /ZE switch to list zero used block files. o Added code so that if the file attributes area of the header contains a value of 0 for the number of blocks allocated, SRD will calculate the number of allocated blocks from the retrieval pointers. Modifications by: Bob Denny Creative System Design Co. Pasadena, CA (213) 792-9474 ** SRD - Version 6.2 ** Fall 1982 o Altered SRD.CMD for RSX-11M Version 4.0. If you are not running under MCR, it automatically inserts "MCR " before all MCR commands. builds a simple ODL file for V4.0 PLAS FCSRES. Asks if "extend task" directive is supported, and if so, defaults task extension to 1024. o Changed all text and error messages to lower case, in the spirit of 'M Version 4.0. o Spawn for HELP now conditionally assembles for RSX-11M V4 to spawn to CLI... instead of MCR... so command will function with the CLI in current use, rather than always MCR. o Version numbers updated for Version 6.2 o SLP files contain all changes since baseline V6.0 Modifications by: SRD Working Group Bob Turkelson NASA/Goddard Space Flight Center Code 933 Greenbelt, MD 20771 (301) 344-5003 ** SRD - Version 6.3 ** Spring 1983 The modifications made by the SRD Working Group since V6.2 are: o Merged in /SM, /HD, and /BK switches from Glen Everhart's Fall 1982 version ([312,332]). o Added a requirement that a file specification appear on the command line (with or without /SE:) whenever /DE is specified. Command SRD /DE using the previous version deleted every file in the directory, which would surprise you if you had meant to type SRD /BE instead. Note that as a result of this change, purging the entire directory requires SRD */PU rather than SRD /PU. o Changed SRD so that the command NAME/DE will now delete all NAME.;* files, rather than all NAME.*;* files; that is, when no period is specified in the file specification, SRD will no longer delete all files of any type with that name field. o Corrected bug which caused version number selection to fail to list the proper files in many cases. Sometimes files were listed which should not have been, and sometimes files which satisfied the selection criteria were not listed. o Added Psects to every module in order to facilitate /MU on RSX-11M-PLUS. (Carl Friedberg, Seaport Systems, Inc., NYC) o Revised SRD.CMD to process RSX-11M-PLUS/SUPLIB and flattened out M-PLUS version. (Carl Friedberg, Seaport Systems, Inc., NYC) Modifications by: SRD Working Group Bob Turkelson NASA/Goddard Space Flight Center Code 933 Greenbelt, MD 20771 (301) 344-5003 ** SRD - Version 6.4 ** Fall 1983 The modifications made by the SRD Working Group since V6.3 are: o Fixed a problem which caused SRD to abort when listing large directories whose contents could not all fit into memory. (I also tried several other versions of SRD from recent SIG tapes and found that they all had the same problem.) When built on RSX-11M V4.0 with dynamic checkpoint allocation, SRD is able to read in a dense directory containing 3360 entries before having to list the directory in sections (2976 entries if built with FCSRES). o Fixed a problem which did not allow SRD to do any listings or selections based upon information contained in the file header if the entire directory did not all into memory (that is, when SRD needs to separate the directory contents into pieces). o Fixed a problem where instead of cancelling directory write- back for directories which could not all fit into memory, SRD wrote back only the last section of it, wiping out most of the directory! This problem probably only showed up when SRD was built without the dynamic checkpoint allocation option, for otherwise it would have aborted anyway due to the error described above in the first modificaion. Now SRD issues a fatal message informing you that write-back will not be done (and SRD means it). This message is issued before any directory sorting is attempted, so you don't have to wait for sorting the large segment of the directory which did fit into memory. o Fixed a memory protection violation problem than occurred only occasionally with some configurations when listing a dense directory which exactly fills the last block of the directory. o Improved the organization and contents of the documentation to reflect the current state of SRD, while converting to a true RUNOFF format. This work was done by Gerard Stackhouse, who is maintaining the documentation. Any suggestions for improvements may be sent to him at United Telecom Computer Group, United Information Services, Inc., 300 Second Avenue, Waltham, MA 02154 (617-890-6820). o Modified SRD so that it displays the original command line the user entered, before replacement of certain special symbols which may appear in the /SE, /SD, and date switches. o Added new capabilities in specifying the sorting to be done. Sorting by date may now be requested. SRD allows the major and minor sort keys (file name, type, version, date) to be specified in any order in the /SR:x:x:x switch, and also allows the sort to be either ascending or descending sort for any key independently. (To see an unusual looking directory listing, try using Version as the primary key. Or try your own combination.) The sorting by date feature was merged from Henry Tumblin's version of SRD (which is not on the SIG tapes). Allowing sorting to be done ascending or descending was a feature adapted from changes by Dave Sides (Sachs/Freeman Assoc., Inc., c/o JHU/Applied Physics Laboratory), and from the SRD in the U. S. Forest Service collection of programs submitted to the Spring 1982 SIG tape. Ideas for being able to specify the major and minor keys also came from the latter version, although the V6.4 implementation is quite a bit different. Coding changes were required in the sections of the selection/listing routine dealing with the highest and obsolete version selection switches (/SV, /NV, /OV, /PU) since files may be sorted with ascending version numbers. The former code compared each entry in the sorted directory with both the previous entry and the following entry. The current code looks only forward and remembers where it finds a different file name. o Added the /CM:xxx:fffff switch to enable the generation of command files. This feature was merged from the version submitted in the U. S. Forest Service program collection cited above (eliminating a problem that version had in handling null file names). The format and meaning of the switch values are taken from that version. For details see the documentation or help files; the information given there is also from the the earlier program. o Added the /PA switch to pack the files names (removing any blanks between the name and type and between the type and version number). o Added the /TB switch to include in the summary the number of blocks used/allocated even if it would not otherwise appear. For example, /OV/-LI shows only the number of obsolete files, not the total number of blocks. /OV/-LI/TB does show the block total. o Added the /GT:n switch to select files with allocated sizes of at least n. blocks. This is useful for finding large files on user disk packs, as well as easily determining large directory sizes. It may also be useful in obtaining some contiguous disk space. Use /GT and /BE (and perhaps /-SR) to search for large files which existed at the time of the last full disk copy. Rename one such file, then copy it to the original name using PIP /CD (assuming enough free space remains). Then delete the renamed file, which will usually free up contiguous blocks. o Added the /FI:n switch to select the file with File ID n (the sequence number should not be specified). This helps to find a file when a utility such as BRU issues a diagnostic containing the File ID without a file name, or reports the file name from the header, but the file has been renamed. Up to four File IDs may be specified: /FI:n1:n2:n3:n4. o Added the /FO:[g,m] switch to select files with file owner [g,m]. Either the group or member may be specified as a wildcard (* or zero). The UIC of the directory being listed will be the default switch value if /FO is specified without group and member. An alternate form of the switch, /FO:g:m, is supported (but a wildcard must be a zero, not *). The switch may be negated (/-FO:[g,m]) to select files not owned by [g,m]. SRD [*,*]/-FO would list all files not owned by the directory in which they reside. o Added the /ER switch to display files which produce errors when attempting to read their headers. o Added the /NV (new version) switch with the same meaning as /SV. Some other versions of SRD use /NV, and this seems to be a more appropriate name. o Changed the listing of a file's used and allocated blocks to reference the double word values stored in the header instead of single word values. In V6.3 the number of allocated blocks was calculated from the retrieval pointers if the file header showed a value of zero. Now this is also done if the file has multiple headers, which requires SRD to read each header. NOTE: There is a problem in RSX-11M V4.0 and RSX-11M-PLUS V2.0 which does not allow SRD to read an extension header unless your "login UIC" is a privileged UIC or the file owner's UIC (actually the file owner stored in the extension header). To get around this temporarily, SRD ignores such extension header read errors and treats the file as if it were not a multi-header one. DMP shows the same problem. The undocumented SRD switch /H2 inhibits this work around and causes the error message to be displayed - this is for testing purposes. We have learned that this does not show up in RSX-11M V3.2 or V4.1. For our next version we probably will obtain the number of allocated blocks from the statistics block. Until recently we felt there were reasons we could not use the statistics block. o Corrected handling the case when the date stored in the file header is corrupt, by issuing a non-fatal diagnostic message. Previously the same fatal message was issued for this situation as was given for when an invalid date was specified in a date switch in the command line. o Modified the program to use the three letters of the task name in the program prompt and in the error messages. o Modified SRD to make sure /SR (sort switch) is set if /SV, /NV, /OV, or /PU is specified, even if /-SR is specified. The directory needs to be sorted for these functions. o Changed the diagnostic processing so that the UIC and file name are included in the appropriate messages. o Changed the listing routine so that a file with a header read error will never be "selected" (as long as a switch which requires reading headers is specified, of course). In addition, if file selection by date is requested and a corrupt date is detected in the file header, that file will not be "selected." o Modified SRD to assure that the UIC heading line for the directory appears in the listing whenever issuing a diagnostic for a header read error or for a corrupt date in the header. o Correctly terminated each switch value table so that if too many values are specified for a particular switch, a syntax error message is given. With previous versions, extra values on certain switches would clobber fields for other switches. For example, SRD /SV/MI:80:3 would behave as if SRD /SV:3/MI:80 had be specified. o Made a few changes to enable this version of SRD to run on IAS systems. Recently I traced the failure to the method employed by SRD to reuse some of the memory taken by the largest overlay segment (SRDINI) once the routines in that segment have completed. IAS V3.0 is running on the system I was able to use. The current code seems to work OK (testing just a few switches) if SRD is built /-MU and the special dummy PSECTs $$$XX1, $$$XX2, and $$$XX3 are given the RO attribute for IAS systems, so these modifications are in this distribution. Of course this means that the resulting task is not multi-user. By the next SIG tape we plan to get it working as a multi-user task under IAS; there is no time left to make and test such changes before this submission. There were several modifications in the command file for IAS: eliminating certain SYSLIB routine references from the generated ODL file; and, jumping over any the references to the symbol (which is not defined in the version of Indirect on the IAS system I used). o Eliminated the extra 0 byte appearing at the end of the UIC line. o Eliminated the extra 0 byte appearing at the end of a diagnostic message. o Made a few other internal coding changes, documented in the source files. o Kept the help file up to date, added a HELP SRD NEW section to list new switches in V6.4, and changed the HELP SRD SWITCH DEFAULTS section so that it references a file created by the SRD generation command file. o Modified the command file to allow the user to select certain groups of default switches, to eliminate the need to ask as many questions. Note that under RSX-11M V4.0 or later and RSX-11M-PLUS V2.0 or later, the command string interpreter allows wildcards (* and %) anywhere in the file name or type. This eliminates the need for the /SE: switch in most circumstances. For example, SRD *AB%D*.%D* is valid. Specify /-SR whenever you are looking for certain files and do not care in what order they are listed. You will save the time required for sorting the directories. The /CM switch should be used with /NV (or /SV) unless V is specified in the second switch value and all versions are wanted. The value specified in the /GT:n switch is a four-byte integer value on RSX-11M V4.0/V4.1 and RSX-11M-PLUS V2.0/V2.1. It is considered a two-byte integer on V3.2. Its use on V3.2 has not been tested. The additions to the selection/listing overlay segment and the root segment total about 550. words (when built without FCSRES). This reduces the largest directory section that can be handled at one time by two or three blocks (out of about 110 blocks). Each block contains up to 32 file entries. Modifications by: SRD Working Group Bob Turkelson NASA/Goddard Space Flight Center Mail Code 614 Greenbelt, MD 20771 (301) 344-9832 ** SRD - Version 6.5 ** Fall 1984 The modifications made by the SRD Working Group since V6.4 are: o Corrected a bug so that the diagnostic message for a corrupted date in a file header is not repeated for files with proper dates. o Changed the date decoding routine so that it skips over the first byte of the date field if it is a blank. When VMS BACKUP/IMAGE restores a Structure 1 disk, a file date with a single digit day of month is stored in the file header with a blank preceding the digit, rather than a zero character as is done in RSX. (For example, " 4OCT84" rather than "04OCT84".) Recently we learned that the RMS utilities DSP and BCK get file date errors when accessing such files. o Added information to the /ID message telling which operating system and support features were specified when the SRD task was generated. o Added support for named directories on P/OS and Micro/RSX. Used decimal format for file version numbers in P/OS. Note that this code has not yet been tested on these operating systems. We will try to publish a report in the Multi-Tasker. Thanks to Bob Denny, Richard Kirkman, and B. Z. Lederman for sending us their modifications for these systems. o Added the /AP switch to append the listing to an existing file. If the named file does not exist, a new file will be created in most cases. See the documentation for details. o Changed the .PSECT attribute in the SRDXX1, SRDXX2, and SRDXX3 dummy routines so that SRD will work on RSX-11M V3.2. o Modified the help and documentation files. The additions to the selection/listing overlay segment and the root segment total about 140. words (when built without FCSRES). This reduces the largest directory section that can be handled at one time by one block (out of about 110 blocks). Each block contains up to 32 file entries. Modifications by: SRD Working Group Bob Turkelson NASA/Goddard Space Flight Center Mail Code 614 Greenbelt, MD 20771 (301) 344-5660 ** SRD - Version 6.6 ** Spring 1985 The modifications made by the SRD Working Group since V6.5 are: o Modified the sort algorithm for greatly improved performance. (Thanks to Jim DeMange and Tony Gandy of Systeme Corporation, Orlando, FL.) The improvement will be noticed most when listing large directories. Using RSX-11M-PLUS accounting, we found that to generate a brief sorted listing of a directory containing about 1300 files, the CPU time went from 1992 units with V6.5 to 804 with V6.6. (The time for PIP /BR unsorted listing was 1646. SRD issued 91 QIO's while PIP issued 1707.) o Turned off /HD (command line display) when a listing file is not specified. There is no need to display the command line when listing files on TI:. o Corrected a problem where an output filename spec with embedded blanks resulted in a "Directory not found" error message. This problem was introduced with the V6.4 modification to display the original command line, and was fixed by moving the new code to a different location. o Rewrote most of SRDTST, making the logic easier to follow, while fixing a bug which ignored /WI when a '*' was given in the match template (e.g. AB*D failed to match ABCDE). The original code worked at the time it was written, when wildcards were not allowed in file specifications on command lines, but broke when RSX-11M V4.0 and RSX-11M-PLUS V2.0 permitted embedded wildcards. However this bug was noticed only recently. o Modified the help and command files. For P/OS and Micro/RSX systems, SRD is now built non-overlayed by default. The changes to the selection/listing overlay segment and the root segment result in a decrease of 140. words (when built without FCSRES). The largest directory section which can be handled at one time remains at approximately 110 blocks. Each block contains up to 32 file entries.