Newsgroups: bit.listserv.notis-l
Date:         Mon, 4 Jan 1993 16:31:49 PST
From:         Dan Gillett <ZZGILLET@UVVM.UVIC.CA>
Subject:      Suggested MVS JCL Coding Standard

The call for suggested VSE coding standards to suggest to NOTIS should
be extended to include MVS coding standards.  NOTIS should be commended
for continuing to improve the modules as they are being re-written BUT
the MVS JCL is in my opinion still not up to par.  The following is a
suggested MVS standard that also applies in many aspects to VSE.
This is essentially our local JCL standard for all production systems.
It would require a fair bit of work to get this going but it would make
the JCL into a much more useful tool.  Sorry for the long note but this
is one of the "hot buttons" for both MVS and VSE Techies. Cheers, Dan.
========================================================================
MVS JCL Coding Goals
- To obtain consistency in coding methods thereby improving the
  readability and understanding of the cataloged procedure and
  its resultant run-time generated output.
- To obtain consistency not only within a specific PROC but
  also across all PROCs.
- To simplify modifications and testing of system changes and
  minimize PROC statement overrides by the user in the JOB deck.

Default Symbolic Parameters in Job Members
- all of the symbolic parameters should be assigned valid default
  values in HLQ.L51.CNTL job members to allow the jobs to be run
  on the test system with the addition of a JOB card and changing
  the "HLQ" etc in the JOB member only.
- all JCL/PROCs should be TYPRUN=SCANed at NOTIS prior to sending
  out the release (to avoid JCL errors).

PROC Statement
- all of the symbolic parameters used should be included in the
  procedure (PROC) statement IN ALPHAMERIC ORDER.
- symbolic parameters should be minimized as it is possible to
  customize PROC usage through DDNAME JOB deck overrides.

DD Statement
- Data Definition (DD) statements should be ORDERED ALPHABETICALLY
  by DDNAME within a step.
- Generic Parameters should be used consistently across PROCS
  (the new SPACE= and SRTSPC= parameters are the worst offenders).
- the order in which any keywords used should appear on the DD
  statement should be: DSN, DISP, UNIT, VOL, LABEL, SPACE,
  DCB (LRECL,BLKSIZE,RECFM,...), AMP

Temporary Datasets
- all PROCs that use temporary datasets should have one step deleting
  datasets left over from previous runs.
- temporary dataset naming convention should be changed slightly
  to accommodate a multiple institution strategy (e.g. LB300PRC name
  &HLQ..LB300010.TEMP would become &HLQ..LB300010.TEMP&GROUP).
- temporary datasets not needed at the end of step for subsequent
  steps or PROCs should be consistently deleted.
- all dataset names should should conform to a consistent naming
  strategy (they definitely don't now across all PROCs).

Comment Statements
- each HLQ.L51.CNTL JOB member should contain a minimum comment
  identifying what the job does.
- each PROC should contain a minimum comment identifying what
  what the PROC or STEP within a PROC does.
- comment statements should be placed consistently directly after
  the PROC or EXEC statement.
- if a STEP normally completes with a non-zero completion code
  or has some other unusual feature, this should be noted in a comment.

Dan Gillett,   NOTIS TECH1,   E-Mail: ZZGILLET@UVVM.UVic.CA
University of Victoria, Victoria, BC, Canada. (604/721-7676)
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU