In a recent note, Bruce Black said:

> Date:         Thu, 29 Dec 2005 09:52:05 -0500
> 
> However, I know from experience that names which do not conform to the
> normal naming convention can be cataloged using the CATALOG/CAMLST
> macros in an assembler program.  ...
>
It's a blunder in design philosophy for a Data Management System
nucleus (in this case DFSMS) to abdicate syntactic validity
checking and leave the chore to utilities, language RTLs and
external APIs.  (Or, conversly, for those utilities, RTLs and
APIs to presume to invent and enforce syntactic rules more
restrictive than those of the DMS.)  At best, this necessitates
duplication of logic, perhaps in several languages, with the
attendant extra effort in coding, maintenance, and updates.

More likely, it results in inconsistencies, as you have noted,
among the various interfaces to the DMS.

External programs should simply pass syntactic objects unmodified
to the DMS and report errors according to status returned by the
DMS.  They should have suitable quoting and escaping conventions
to allow the end user to supply an arbitrary string if he
believes the DMS will accept it.  For those cases in which
prior validation is deemed necessary (e.g. JCL converter),
the DMS should supply an entry point (SVC, PC, whatever) to
validate syntactic objects using the same code which will again
perform the validation at runtime.

As a novice, I saw the description of apostrophes in the JCL RM.
I experimented.  I left a(n uncatalogued) data set on a storage
volume with mixed case, long qualifiers, spaces, apostrophes,
perhaps binary zeroes in the DSNAME simply by surrounding it
with apostrophes in the DD statement.  The next week, the admins
came to me complaining that their utility (IEHPROGM?) to scratch
data sets in violation of naming standards couldn't delete my data
set because it had a nonstandard name.

With JCL, I can create data sets thus named.

With Binder PARM=CASE=MIXED I have created load modules in
PDS (_not_ merely program objects in PDSE) with mixed case
names.

With NFS client option NOMAPLOWER (superuser is _not_
necessary for this) I have created PDS member names in mixed
case.

With STOW I have created PDS member names of arbitrary
eight character strings (beware 0xFF).

With SVC 99, I have allocated DDNAMEs of arbitrary eight
character strings and DSNAMEs of arbitrary 44 character
strings (beware 0x04) and accessed them with OPEN.

Utilities, RTLs, and APIs ought to be able to deal with all of
these, even if only to free, uncatalog, and delete them.  This is
not a security or integrity consideration unless the admins have
the delusion that they can prevent users manipulating objects in
certain name classes by locking down the assembler programming
interfaces.

Why not permit:

    //STEP    EXEC  PGM='My PROG'
    //'My DDN'  DD  DISP=SHR,
    //  DSN='My (peculiar) data set'('(my) mbr')

... ? (The quoted parentheses and other special characters are
part of the DSNAME and member name; unquoted parentheses serve
to delimit the member name.)

-- gil
-- 
StorageTek
INFORMATION made POWERFUL

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to