Don't print DSMUTMSG at end of document


Question

What if I want to keep the DSMUTMSG file but not have it print at the end of the job?

Answer

  The only way is to use .SY to copy or rename the DSMUTMSG file at the end
  of your source file.  Then when DCF goes to imbed DSMUTMSG, it won't be
  found.

     .garbage
     line o'text following error message
     .if &$PSNO eq &$PASS
     .th .sy erase mysmg script a
     .th .sy rename dsmutmsg script a mymsg script a

  When you format, remember to specify SYON and CONTINUE.

  This won't work on MVS because the .SYs are processed after DSMUTMSG has
  been imbedded.

  Note:  SY is an obsolete control word.

  Here is the text for APAR PL39478 to warn you of the security exposure with
  this approach.

    .cm**********************************************************************
    .cm                                                                     *
    .cm   PL39478   SEV: 4   CLOSE CODE: PER       PROB NO: 99999,999,000   *
    .cm                                                                     *
    .cm      CREATOR:                          C/T OWNER:                   *
    .cm                                                                     *
    .cm   SCRIPT COMMAND: SCRIPT PL39478 (DEV(3820A)                        *
    .cm                                                                     *
    .cm   SYMPTOM CODE: NF                  SYMPTOM KEYWORD: FUNCTION       *
    .cm                                                                     *
    .cm   ABSTRACT: .SY PROCESSING REGARDLESS OF SYOFF FOR CERTAIN COMMANDS *
    .cm                                                                     *
    .cm   ERROR DESCRIPTION:                                                *
    .cm   Support  is needed to give DCF users the ability to process the   *
    .cm   .SY control word for certain system commands regardless of  the   *
    .cm   SYON  option  that  is  now required for processing.   The user   *
    .cm   would like the ability to  define  such  .SY  system  commands,   *
    .cm   while  leaving  all other undefined .SY system commands for DCF   *
    .cm   to process normally.                                              *
    .cm                                                                     *
    .cm   PROBLEM SUMMARY:                                                  *
    .cm   ***************************************************************   *
    .cm | * USERS AFFECTED: ALL DCF CMS OR TSO USERS                    *   *
    .cm   ***************************************************************   *
    .cm   * PROBLEM DESCRIPTION: .SY only processes when SYON specified *   *
    .cm   ***************************************************************   *
    .cm   * RECOMMENDATION:                                             *   *
    .cm   ***************************************************************   *
    .cm   The  user  would  like  .SY  to process certain system commands   *
    .cm   regardless of the option specified: SYON or SYOFF.                *
    .cm                                                                     *
    .cm   PROBLEM CONCLUSION:                                               *
    .cm | New module DSMXTKSY will be added to provide an interface point   *
    .cm | for processing .SY commands with user  routines.  DSMESKSY(CMS)   *
    .cm | and DSMTSKSY(TSO) will be changed to call module DSMXTKSY.        *
    .cm                                                                     *
    .cm   Following is a description of the interface between DCF Release   *
    .cm   3.2  and  processing for system commands. For security reasons,   *
    .cm   the .SY control word is still obsolete meaning  it  is  neither   *
    .cm   supported  nor maintained. This interface was created to adhere   *
    .cm   to  security  requirements  while  allowing   the   user   some   *
    .cm   flexibility  in  the extent of their security.  CMS and TSO are   *
    .cm   the  only  environments  using  this   interface.      Specific   *
    .cm   instructions for using the interface are included.                *
    .cm                                                                     *
    .cm   PROCESSING  OF THE .SY CONTROL WORD:  Currently, use of the .SY   *
    .cm   control word to issue system commands is allowed  only  if  the   *
    .cm   SYON  command option is specified.  If the SYOFF command option   *
    .cm   is specified, or if neither SYON nor SYOFF  is  specified,  any   *
    .cm   use of the .SY control word will cause a severe error.            *
    .cm                                                                     *
    .cm   INTERFACE  VIA DSMXTKSY:  An interface has been created via the   *
    .cm   module DSMXTKSY which allows an installation to write a routine   *
    .cm   to determine the action to be taken when a .SY control word  is   *
    .cm   encountered.  The different actions possible are as follows:      *
    .cm                                                                     *
    .cm    -process the .SY control word only if SYON is active             *
    .cm                                                                     *
    .cm    -process the .SY control word even if SYOFF is active            *
    .cm                                                                     *
    .cm    -ignore the .SY control word completely                          *
    .cm                                                                     *
    .cm    -disallow the .SY control word, even if SYON is active           *
    .cm                                                                     *
    .cm   DSMXTKSY  is called by SCRIPT/VS CMS module DSMESKSY whenever a   *
    .cm   .SY control word is encountered.  DSMTSKSY will do the  calling   *
    .cm   when  running  in  TSO.    By  default,  DSMXTKSY  will  return   *
    .cm   indicating that the .SY control word should only  be  processed   *
    .cm   if SYON is active.                                                *
    .cm                                                                     *
    .cm                                                                     *
    .cm   SYSTEM  COMMAND  INTERFACE:    The  assembler-level programming   *
    .cm   interface presented to  the  system  command  stub  routine  by   *
    .cm   SCRIPT/VS  is  described below.   Emphasis is given to register   *
    .cm   conventions, the parameter list  sent  to  the  system  command   *
    .cm   routine and entry and exit protocols.                             *
    .cm                                                                     *
    .cm   REGISTER  CONVENTIONS:    When  SCRIPT/VS  calls  DSMXTKSY  the   *
    .cm   following general registers contain significant information:      *
    .cm                                                                     *
    .cm   R1  - Register 1 contains the address                             *
    .cm         of the parameter list sent to                               *
    .cm         DSMXTKSY by SCRIPT/VS.                                      *
    .cm                                                                     *
    .cm   R11 - Register 11 contains the address                            *
    .cm         of the SCRIPT command control                               *
    .cm         block.  This register should not                            *
    .cm         be altered by your routine                                  *
    .cm         or by any subroutines your routine                          *
    .cm         may invoke.                                                 *
    .cm                                                                     *
    .cm   R12 - Register 12 is, by convention, the                          *
    .cm         base register used by all                                   *
    .cm         SCRIPT/VS modules.  Your routine                            *
    .cm         should copy the contents                                    *
    .cm         of Register 15 into Register 12 and                         *
    .cm         use it as a base register.                                  *
    .cm                                                                     *
    .cm   R13 - Register 13 contains the address of                         *
    .cm         a preallocated, prechained                                  *
    .cm         register save area.  This register                          *
    .cm         should not be altered by                                    *
    .cm         your routine or by any subroutines                          *
    .cm         your routine may invoke.                                    *
    .cm                                                                     *
    .cm   R14 - Register 14 contains the address to                         *
    .cm         which your routine should return                            *
    .cm         when finished.                                              *
    .cm                                                                     *
    .cm   R15 - Register 15 contains the entry point                        *
    .cm         address of your routine.  This value                        *
    .cm         should be copied into Register 12.                          *
    .cm                                                                     *
    .cm                                                                     *
    .cm   THE PARAMETER LIST:  The system command parameter  list,  which   *
    .cm   is addressed by Register 1 on entry to the routine contains the   *
    .cm   following fields:                                                 *
    .cm                                                                     *
    .cm   bytes 1-60  -  On entry, these 15 fullwords                       *
    .cm                  have not been filled in.                           *
    .cm                  DSMXTKSY should save the                           *
    .cm                  contents of 15 registers in                        *
    .cm                  this area.  DSMXTKSY MUST                          *
    .cm                  ensure that the contents                           *
    .cm                  of the registers are the                           *
    .cm                  same upon exit from DSMXTKSY                       *
    .cm                  as they were upon entry.                           *
    .cm                                                                     *
    .cm   bytes 61-64 -  On entry, this fullword has                        *
    .cm                  been filled in with the                            *
    .cm                  address of a 256-byte work                         *
    .cm                  area which DSMXTKSY can use.                       *
    .cm                  All storage used by DSMXTKSY                       *
    .cm                  should be from this work                           *
    .cm                  area.                                              *
    .cm                                                                     *
    .cm   bytes 65-66 -  On entry, this halfword has been                   *
    .cm                  initialized to zero.                               *
    .cm                  On exit, this halfword should                      *
    .cm                  contain the return code                            *
    .cm                  from DSMXTKSY to SCRIPT/VS,                        *
    .cm                  to tell SCRIPT/VS what                             *
    .cm                  action to take for the current .SY                 *
    .cm                  control word.                                      *
    .cm                  The recognized return codes are:                   *
    .cm                                                                     *
    .cm                  0 = Process .SY control word according to          *
    .cm                      SYON/SYOFF setting.  If SYOFF is in affect,    *
    .cm                      message 313S will be issued.                   *
    .cm                                                                     *
    .cm                  4 = Process .SY control word regardless of         *
    .cm                      SYON/SYOFF setting.                            *
    .cm                                                                     *
    .cm                  8 = Ignore the .SY control word regardless of      *
    .cm                      SYON/SYOFF setting.  No further processing     *
    .cm                      of the .SY control word will be done.          *
    .cm                                                                     *
    .cm                 12 = Disallow .SY regardless of SYON/SYOFF          *
    .cm                      setting. Message 313S will be issued,          *
    .cm                      regardless of the SYON/SYOFF setting.          *
    .cm                                                                     *
    .cm |               16 = Indicate an unexplainable condition has        *
    .cm |                    happened. DCF will issue message 400           *
    .cm |                    and terminate.                                 *
    .cm                                                                     *
    .cm   bytes 67-68  - On entry this halfword contains the                *
    .cm |                length of the .SY control word parameter           *
    .cm |                list.                                              *
    .cm                                                                     *
    .cm   bytes 69-324 - On entry this field contains the .SY               *
    .cm                  control word command line to be processed.         *
    .cm |                The first four bytes, ".SY " have been             *
    .cm |                stripped out and only the command remains.         *
    .cm                                                                     *
    .cm                                                                     *
    .cm   ROUTINE  ENTRY AND EXIT PROTOCOL:  The following ENTRY protocol   *
    .cm   is suggested for the system command routine:                      *
    .cm                                                                     *
    .cm   DSMXTKSY CSECT                                                    *
    .cm            USING PARMLIST,R1                                        *
    .cm            STM   R14,R12,PARMRSV  SAVE ALL THE REGISTERS            *
    .cm            USING DSMXTKSY,R12                                       *
    .cm            LR    R12,R15                                            *
    .cm            L     R2,PARMWA        GET ADDRESS OF THE WORK AREA      *
    .cm            USING WORKA,R2                                           *
    .cm            MVC   PARMRC,=H'0'     INITIALIZE RETURN CODE TO ZERO    *
    .cm                                                                     *
    .cm   The above assumes the parameter list has been defined as:         *
    .cm                                                                     *
    .cm   PARMLIST DSECT                                                    *
    .cm   PARMRSV  DS    15F              SAVE AREA FOR REGISTERS           *
    .cm   PARMWA   DS    F                ADDRESS OF WORK AREA              *
    .cm   PARMRC   DS    H                RETURN CODE                       *
    .cm   PARMSYLG DS    H                LENGTH OF PARMSY                  *
    .cm   PARMSY   DS    CL256            .SY CONTROL WORD TO PROCESS       *
    .cm                                                                     *
    .cm | A WORKA DSECT has been defined. The following is an example:      *
    .cm |                                                                   *
    .cm | WORKA    DSECT                                                    *
    .cm | WORK     DS    CL256                                              *
    .cm                                                                     *
    .cm                                                                     *
    .cm   The following EXIT protocol is suggested for the system command   *
    .cm   routine:                                                          *
    .cm                                                                     *
    .cm            LM    R14,R12,PARMRSV  RESTORE REGISTERS                 *
    .cm            BR    R14              RETURN TO CALLER                  *
    .cm                                                                     *
    .cm                                                                     *
    .cm   SAMPLE DSMXTKSY PROCESSING:  One possible use of  the  DSMXTKSY   *
    .cm   interface  is to allow a certain subset of system commands even   *
    .cm   if SYOFF has been specified.  To do this, a table of  allowable   *
    .cm   system  commands  must be created, and DSMXTKSY must be used to   *
    .cm   search that table for the command  given  on  the  .SY  control   *
    .cm   word.    In conjunction with suggested entry and exit protocol,   *
    .cm   the following shows sample logic for accomplishing this task:     *
    .cm                                                                     *
    .cm    -parse the system command from the .SY control                   *
    .cm     word line in the parameter list pointed to by                   *
    .cm     register 1                                                      *
    .cm                                                                     *
    .cm    -translate the system command to uppercase                       *
    .cm                                                                     *
    .cm    -look for the system command  in a table                         *
    .cm     of system commands which are allowed in                         *
    .cm     SYOFF mode                                                      *
    .cm                                                                     *
    .cm    -if the system command is found:                                 *
    .cm                                                                     *
    .cm     = set return code to 4                                          *
    .cm                                                                     *
    .cm     NOTE: If the system command is not found, the return            *
    .cm           code has already been initialized to zero to              *
    .cm           indicate to SCRIPT/VS to process the .SY control          *
    .cm           word according to the SYON/SYOFF setting.                 *
    .cm                                                                     *
    .cm                                                                     *
    .cm   Installation  Instructions:     The  following   procedure   is   *
    .cm   recommended  for  replacing  an  IBM supplied stub routine with   *
    .cm   your routine in the CMS environment:                              *
    .cm                                                                     *
    .cm    1. Compile or assemble DSMXTKSY to produce a TEXT file.          *
    .cm       If your routine calls any other modules, compile or           *
    .cm       assemble them also.                                           *
    .cm                                                                     *
    .cm    2. Link and access the SCRIPT/VS Release 3.2 installation        *
    .cm       minidisk in READ/WRITE mode as your A-disk.                   *
    .cm                                                                     *
    .cm    3. Move the IBM-supplied DSMXTKSY to another disk to             *
    .cm       save it.                                                      *
    .cm                                                                     *
    .cm    4. Copy your DSMXTKSY TEXT file onto the A-disk.                 *
    .cm       If your routine calls any other modules, copy them            *
    .cm       also.                                                         *
    .cm                                                                     *
    .cm    5. Issue the following CMS command:                              *
    .cm                                                                     *
    .cm       dsmgnd32                                                      *
    .cm                                                                     *
    .cm       This EXEC creates a new DSM3 MODULE (disk resident            *
    .cm       SCRIPT MODULE).                                               *
    .cm                                                                     *
    .cm    6. If your installation has defined a shared segment             *
    .cm       named DSMSEG3 for SCRIPT/VS, make sure the new SCRIPT         *
    .cm       module will fit entirely within the defined shared            *
    .cm       segment. Then issue the following CMS command:                *
    .cm                                                                     *
    .cm       dsmgns32                                                      *
    .cm                                                                     *
    .cm       This EXEC reloads the DSMSEG3 shared segment.                 *
    .cm                                                                     *
    .cm    7. Copy the new SCRIPT MODULE file onto the                      *
    .cm       public minidisk where SCRIPT/VS normally resides              *
    .cm       at your installation.                                         *
    .cm                                                                     *
    .cm   The following procedure is recommended for  replacing  an  IBM-   *
    .cm   supplied stub routine with a routine in the TSO environment:      *
    .cm                                                                     *
    .cm    1. Compile or assemble DSMXTKSY to produce an object file        *
    .cm       suitable as input to the OS/VS linkage editor.  If your       *
    .cm       routine calls any other modules, compile or                   *
    .cm       assemble them also, and append them to the DSMXTKSY           *
    .cm       object file.                                                  *
    .cm                                                                     *
    .cm    2. Find out the name of the DCF Release 3.2 load library that    *
    .cm       contains the installed IBM-supplied dictionary routines.      *
    .cm       This library is named DCF.R32.DCFLOAD in the example below.   *
    .cm       DCF may have been placed in another load library, such        *
    .cm       as SYS1.CMNDLIB, at your installation.                        *
    .cm                                                                     *
    .cm    3. Execute the following job to replace the stub routine with    *
    .cm       your routine in the DCF load library.                         *
    .cm                                                                     *
    .cm         //INSTALL   JOB ,SCRIPTVS,MSGLEVEL=(1,1)                    *
    .cm         //LINKALG EXEC  PGM=HEWL,REGION=768K                        *
    .cm         //              PARM='RENT,XREF,LIST,LET,                   *
    .cm         //              NCAL,SIZE=(460K,96K)'                       *
    .cm         //SYSPRINT   DD SYSOUT=A                                    *
    .cm         //SYSUT1     DD UNIT=SYSDA,SPACE=(CYL,(5,1))                *
    .cm         //OBJSY      DD DSN=DSMXTKSY.OBJ,DISP=SHR                   *
    .cm         //DCF        DD DSN=DCF.R32.DCFLOAD,DISP=SHR                *
    .cm         //SYSLMOD    DD DSN=DCF.R32.DCFLOAD,DISP=OLD                *
    .cm         //SYSLIN     DD *                                           *
    .cm          INCLUDE OBJSY                                              *
    .cm          INCLUDE DCF (DSMTSS30)                                     *
    .cm             (insert order statements here)                          *
    .cm          ENTRY DSMTSTSO                                             *
    .cm          ALIAS SCRIPT                                               *
    .cm          NAME DSMTSS30(R)                                           *
    .cm         /*                                                          *
    .cm         //                                                          *
    .cm                                                                     *
    .cm    NOTE:  The current correct linkage editor ORDER statements       *
    .cm           should be obtained from the DCF installation sample       *
    .cm           DSMTSIVL in DCF.R32.DCFSAMP.                              *
    .cm                                                                     *
    .cm                                                                     *
    .cm   CIRCUMVENTION:                                                    *
    .cm                                                                     *
    .cm   NOTES TO C/T:                                                     *
    .cm                                                                     *
    .cm   TESTING NOTES:                                                    *
    .cm     A  test  table was created and applied to DSMXTKSY and tested   *
    .cm     in both CMS and TSO.                                            *
    .cm                                                                     *
    .cm   RPC Number: n/a                                                   *
    .cm                                                                     *
    .cm**********************************************************************
    .cm

Last updated: 96/06/12 21:54:05

Previous Contents Next