COMCCMD 
COMMON
          CTEXT  COMCCMD - CENTRAL PROGRAM MACRO DEFINITIONS. 
 COMCCMD  SPACE  4,10 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 COMCCMD  SPACE  4,10 
***       COMCCMD - CENTRAL PROGRAM MACRO DEFINITIONS.
*         K. R. COMBS.       76/08/23.
 COMCCMD  SPACE  4,10 
***              THE SYSTEM MACROS PROVIDE THE USER WITH PREDEFINED 
*         CALLS FOR COMMONLY USED SYSTEM REQUESTS.
*         WHERE A PARAMETER REFERS TO AN ADDRESS EXPRESSION, THE
*         PARAMETER MAY BE A REGISTER NAME, A RELOCATABLE ADDRESS,
*         AN EXTERNAL SYMBOL NAME, OR AN ABSOLUTE ADDRESS.
*         WHERE A RECALL OPTION IS SPECIFIED, THE PRESENCE OF THE 
*         OPTION CAUSES RECALL OPERATION TO TAKE PLACE. 
          SPACE  4
          BASE   DECIMAL
          TITLE  COMCCMD - GENERAL MACROS.
 MACREF   SPACE  4,10 
**        MACREF - GENERATE MACRO SYMBOLIC REFERENCE TABLE LISTING. 
* 
*         CAUSES THE MACRO NAME TO BE LISTED IN THE SYMBOLIC
*         REFERENCE TABLE UNDER THE QUALIFIER *MACRO$*. 
* 
*         MACREF MNAME
*                MNAME    MACRO NAME FOR REFERENCE TABLE. 
  
  
          PURGMAC MACREF
  
 MACREF   MACRO  N
  QUAL MACRO$ 
N SET * 
  QUAL *
  ENDM
 DECCNT   SPACE  4,30 
***       DECCNT - DECREMENT USER SECURITY COUNTS.
* 
*         DECCNT ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS OF 3 WORD PARAMETER BLOCK.
* 
*T ADDR   42/USER NUMBER,18/
*T,       56/, 1/D, 3/
*T,       42/FAMILY NAME,18/
* 
*                A FAMILY NAME OF BINARY ZERO WILL IMPLY
*                THE DEFAULT FAMILY.
* 
*                D = 0, IF PARAMETER BLOCK SUPPLIED BY CALLER.
*                D = 1, IF PARAMETER BLOCK MUST BE BUILT FROM 
*                       THE CONTROL POINT AREA. 
* 
*         EXIT   THE PARAMETER BLOCK IS RETURNED AS FOLLOWS.
* 
*T ADDR   42/USER NUMBER,18/
*T,       57/, 1/S, 2/
*T,       42/FAMILY NAME,18/FAMILY ORDINAL
* 
*                S = 1 IF SECURITY COUNT EXHAUSTED. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC  DECCNT 
  
 DECCNT   MACRO  A
  MACREF DECCNT 
  R= X1,A 
  SX2 114B
  RJ =XCPM= 
  ENDM
 FLASH    SPACE  4,10 
***       FLASH - FLASH B-DISPLAY MESSAGE (*SSJ=* REQUIRED).
* 
*         FLASH  PARAM
* 
*         ENTRY  *PARAM* = *ON* WILL CAUSE THE CONTENTS OF *MS1W* TO BE 
*                          INTENSIFIED ON THE *DSD* B-DISPLAY.
*                        = *OFF* WILL TURN OFF INTENSIFICATION. 
* 
*         *FLASH* WITH NO PARAMETER IS TREATED THE SAME AS *FLASH ON*.
* 
*         MACROS SYSTEM.
  
  
          PURGMAC  FLASH
  
 FLASH    MACRO P 
  LOCAL   C 
  MACREF FLASH
C SET 2 
  ECHO 3,A=(,ON,OFF),B=(0,0,1)
  IFC EQ,$P$_A$,2 
C SET B 
  STOPDUP 
  IFEQ C,2,1
  ERR INCORRECT PARAMETER VALUE 
  SYSTEM CPM,R,C,100B*100B
  ENDM
 GETACT   SPACE  4,30 
***       GETACT - RETURN CURRENT JOB ACTIVITY COUNTS.
* 
*         GETACT ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS FOR RESPONSE. 
* 
*         EXIT   (ADDR) = JOB ACTIVITY INFORMATION, IN THE
*                            FOLLOWING FORMAT.
* 
*T ADDR   12/SHORT , 1/L , 23/0 , 12/INS , 12/0 
* 
*         SHORT  SHORT TERM ACTIVITY COUNTS. INCREMENTED BY ONE 
*                FOR EACH OF THE FOLLOWING. 
*                PPU ACTIVITY.
*                *RECW* REQUESTS (INCLUDES PP IN RECALL AND TAPE
*                       ACTIVITY).
*                TAPE ACTIVITY. 
*                ROLLOUT REQUESTED. 
*                SCP WAIT RESPONSE INDICATORS.
*                TERMINAL OUTPUT FET ADDRESS PERSENT. 
*         L      LONG TERM ACTIVITY COUNTS.  FIELD IS ONE IF ANY OF 
*                THE FOLLOWING CONDITIONS ARE MET.
*                *K* OR *L* DISPLAY INTERFACE ACTIVE. 
*                *CFO* ENTRY ENABLED. 
*                SCP LONG TERM CONNECTION ESTABLISHED.
*         INS    RESERVED FOR INSTALLATIONS.
  
  
          PURGMAC GETACT
  
 GETACT   MACRO  A
  MACREF GETACT 
  R= X1,A 
  SX2 51B 
  RJ =XCPM= 
  ENDM
 GETDI    SPACE  4,15 
***       GETDI - GET DEVICE INFORMATION. 
*         RETURN COPY OF DEVICE INFORMATION SECTOR
*         FOR SPECIFIED DEVICE. 
* 
*         GETDI  FET,EQ 
* 
*         ENTRY  *FET* = FET ADDRESS. 
*                *EQ* = EST ORDINAL.
* 
*         EXIT   (X3) = EST ORDINAL.
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
          PURGMAC  GETDI
  
 GETDI    MACRO  F,E
  MACREF GETDI
  R= X2,F 
  X= X3,E 
  BX6 X3
  LX6 48D 
  SA6 X2+7
  R= X7,GDIF
  RJ SFM
  ENDM
 GETEM    SPACE  4,10 
***       GETEM - RETURN CURRENT EXIT MODE. 
* 
*         GETEM  ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS FOR RESPONSE
*         EXIT -
*T ADDR   60/  EM 
*         EM     CURRENT EXIT MODE
* 
*         CALLS  CPM=.
  
  
          PURGMAC GETEM 
  
 GETEM    MACRO  A
  MACREF GETEM
  R= X1,A 
  SX2 16B 
  RJ =XCPM= 
  ENDM
 GETJCI   SPACE  4,15 
***       GETJCI - GET JOB CONTROL INFORMATION. 
* 
*         GETJCI ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS OF PARAMETER BLOCK TO RECEIVE 
*                INFORMATION. 
*         EXIT -
*T ADDR   6/EFG,18/RIG,12/CCL DATA,12/EM,6/SSW,5/0,1/1
*         6/EF,18/R3,18/R2,18/R1
*         EFG    GLOBAL ERROR FLAG
*         RIG    GLOBAL REGISTER
*         CCL DATA DATA INTERNAL TO CCL 
*         EM     EXIT MODE
*         SSW    SENSE SWITCHES 
*         EF     ERROR FLAG 
* 
*         CALLS  CPM=.
  
  
          PURGMAC GETJCI
  
 GETJCI   MACRO  A
  MACREF GETJCI 
  IFC EQ,$A$$,1 
  ERR NO ADDRESS SPECIFIED
  R= X1,A 
  SX2 74B 
  RJ =XCPM= 
  ENDM
 GETLIDA  SPACE  4,20 
***       GETLIDA - GET LID ATTRIBUTES. 
*         RETURNS THE ATTRIBUTE FIELD FOR THE SPECIFIED LID FROM
*         THE LID TABLE.
* 
*         GETLIDA  ADDR 
* 
*T ADDR   18/LID, 42/ 
* 
*                LID = LOGICAL ID.
* 
*         EXIT -
*T ADDR   18/LID,12/AT,6/ ,12/NW,11/ ,1/1 
* 
*                AT = 1/H,1/L,1/E,1/V,1/SH,1/SL,1/B,3/RFU,2/RFI 
*                     H = HOST. 
*                     L = LINKED MAINFRAME. 
*                     E = ENABLED LID.
*                     V = PRE-VALIDATION REQUIRED.
*                     SH = STORE AND FORWARD LID ON HOST. 
*                     SL = STORE AND FORWARD LID ON LINKED MAINFRAME. 
*                     B = LOOPBACK LID ON HOST MAINFRAME. 
*                     RFU = RESERVED FOR FUTURE USE.
*                     RFI = RESERVED FOR INSTALLATION.
*                NW = 2/RFI,7/RFU,1/SSF,1/RHF,1/NHP.
*                     RFI = RESERVED FOR INSTALLATION.
*                     RFU = RESERVED FOR FUTURE USE.
*                     SSF = SCOPE 2 STATION FACILITY. 
*                     RHF = REMOVE HOST FACILITY. 
*                     NHP = NETWORK HOST PRODUCTS.
*                     NOTE - ONLY NETWORKS WITH CURRENTLY AVAILABLE 
*                            PATHS TO ENABLED PID-S ARE RETURNED. 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  GETLIDA
  
 GETLIDA  MACRO  F
  MACREF GETLIDA
  R= X2,F 
  R= X7,GLAF
  RJ =XSFM
  ENDM
 GETLIDC  SPACE  4,20 
***       GETLIDC - GET LID CONFIGURATION.
* 
*         GETLIDC CALLS *SFM* TO RETURN THE ATTRIBUTES OF A SPECIFIED 
*         LID CONFIGURATION TO THE BUFFER.  EITHER SSJ= VALIDATION OR 
*         SYOT IS REQUIRED. 
* 
*         GETLIDC  ADDR 
* 
*T ADDR   12/WC,30/0,8/0,9/0,1/0
*T,ADDR+1 18/LID,42/0 
*T,ADDR+2 60/0
*T,ADDR+3 60/0
*T,ADDR+WC+2 60/0 
* 
*         WC - WORD COUNT OF THE RETURN BUFFER. 
*         LID - THREE CHARACTER LOGICAL ID. 
* 
*         EXIT -
*T ADDR   12/WC,30/0,8/RC,9/0,1/1 
*T,ADDR+1 18/LID,30/0,12/NPID 
*T,ADDR+2 18/PID1,1/S,1/B,6/RFU,10/RFI,12/RFU,4/SSF,4/RHF,4/NHP 
*T,ADDR+WC+2 18/PIDN,.......
* 
*         RC = RETURN ERROR CODE (SEE DEFINITION IN *COMSSFM*)
*         NPID = NUMBER OF PIDS ASSOCIATED WITH SPECIFIED LID.
*         PID1 - PIDN = REFLECTS THE ENABLED PIDS WHICH HAVE THE
*                SPECIFIED LID ENABLED. 
*         S = 1 IF STORE AND FORWARD LID ATTRIBUTE. 
*         B = 1 IF LOOPBACK LID ATTRIBUTE.
*         RFU = RESERVED FOR FUTURE USE.
*         RFI = RESERVED FOR INSTALLATION.
*         SSF = SSF NETWORK STATUS. 
*         RHF = RHF NETWORK STATUS. 
*         NHP = NHP NETWORK STATUS. 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  GETLIDC
  
 GETLIDC  MACRO  F
  MACREF  GETLIDC 
  R= X2,F 
  R= X7,GLCF
  RJ =XSFM
  ENDM
 GETLIDT  SPACE  4,20 
**        GETLIDT - GET LID TABLE.
*         RETURNS A COPY OF THE LID TABLE TO THE BUFFER ASSOCIATED
*         WITH THE FET.  THE TABLE IS RETURNED STARTING AT *FIRST*. 
* 
*         GETLIDT  FET
* 
*         EXIT -
* 
*T FET+0  42/,8/EC,9/,1/1 
* 
*                EC = ERROR CODE. 
*                     0  NO ERROR.
*                     6  THE LID TABLE COULD NOT FIT IN THE BUFFER. 
*                OUT = FIRST = FWA OF LID TABLE.
*                IN = LWA+1 OF LID TABLE. 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  GETLIDT
  
 GETLIDT  MACRO F 
  MACREF GETLIDT
  R= X2,F 
  R= X7,GLTF
  RJ =XSFM
  ENDM
 GETLOF   SPACE  4,10 
***       GETLOF - RETURN LIST OF FILES ADDRESS TO USER.
* 
*         GETLOF ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS TO RETURN LIST OF FILES ADDRESS TO. 
*         EXIT -
*T ADDR   12/   0,18/  LIST,29/   0,1/C 
*         LIST   FWA OF LIST OF FILES.
*         C      COMPLETION BIT.
* 
*         CALLS  CPM=.
  
  
          PURGMAC GETLOF
  
 GETLOF   MACRO  A
  MACREF GETLOF 
  R= X1,A 
  SX2 61B 
  RJ =XCPM= 
  ENDM
 GETLVL   SPACE  4,15 
***       GETLVL - GET SYSTEM PSR LEVEL.
* 
*         GETLVL  ADDR
* 
*         ENTRY  *ADDR* = ADDRESS OF WORD TO RECEIVE SYSTEM LEVEL.
* 
*         EXIT -
* 
*T ADDR   48/ 0, 12/ NOSLVL 
*         NOSLVL NUMERIC SYSTEM PSR LEVEL.
* 
*         CALLS  CPM=.
  
  
          PURGMAC GETLVL
  
 GETLVL   MACRO  A
  MACREF GETLVL 
  R= X1,A 
  SX2 133B
  RJ =XCPM= 
  ENDM
 GETPIDA  SPACE  4,20 
***       GETPIDA - GET PID ATTRIBUTES. 
* 
*         GETPIDA CALLS *SFM* TO RETURN THE FIRST THREE WORDS OF THE
*         SPECIFIED PID ENTRY IN THE LID TABLE.  EITHER SSJ= VALIDATION 
*         OR SYOT IS REQUIRED.
* 
*         GETPIDA  ADDR 
* 
*T ADDR   18/PID,24/0,8/0,9/0,1/0 
*T,ADDR+1 60/0
*T,ADDR+2 60/0
*T,ADDR+3 60/0
* 
*         EXIT -
*T ADDR   18/PID,24/0,8/RC,9/0,1/1
*T,ADDR+1 18/PID,1/H,1/E,1/V,27/0,4/SF,4/RH,4/NP
*T,ADDR+2 42/MF,18/NPID 
*T,ADDR+3 12/0,36/0,12/NLID 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  GETPIDA
  
 GETPIDA  MACRO  F
  MACREF  GETPIDA 
  R= X2,F 
  R= X7,GLPF
  RJ =XSFM
  ENDM
 GETPP    SPACE  4,30 
***       GETPP - GET PAGE PARAMETERS.
* 
* 
*         GETPP  AD,PL,PD,PW
* 
*         ENTRY  *AD* = ADDRESS FOR *CPM* TO RETURN PARAMETERS. 
* 
*         EXIT   (A1) = *AD*. 
*                (X1) = (*AD*). 
*                (A6) = *PD*. 
*                (X6) = (*PD*). 
*                (PL) = PAGE LENGTH.
*                (PD) = PRINT DENSITY FORMAT CONTROL CHARACTER. 
*                       (LEFT JUSTIFIED)
*                (PW) = PRINT WIDTH.
*T,AD     28/RES,4/JPD,8/JPL,8/JPW,11/RESI,1/C
*T,AD+1   28/RES,4/SPD,8/SPL,8/SPW,12/RESI
*                JPD  = JOB PRINT DENSITY (6 OR 8)
*                JPL  = JOB PAGE LENGTH 
*                JPW  = JOB PAGE WIDTH
*                C    = COMPLETE BIT
*                SPD  = SYSTEM PRINT DENSITY
*                SPL  = SYSTEM PAGE LENGTH
*                SPW  = SYSTEM PAGE WI
*                RESI = RESERVED FIELD FOR INSTALATION
*                RESI = RESERVED FIELD FOR INSTALATION
* 
*         USES   A - 1, 6.
*                X - 1, 2, 6. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC GETPP 
  
 GETPP    MACRO  A,L,D,W
  MACREF GETPP
  SX1 A 
  SX2 127B
  RJ =XCPM= 
  SA1 X6+ 
  MX2 -8
  IFC NE,*W** 
  LX1 -12 
  BX6 -X2*X1
  LX1 12-20 
  SA6 W 
  ELSE 1
  LX1 -20 
  BX6 -X2*X1
  MX2 -3
  SA6 L 
  LX1 20-29 
  BX6 -X2*X1
  SX6 X6+1RS-6/2
  LX1 29
  LX6 -6
  SA6 D 
  ENDM
 GETSHC   SPACE  4,10 
***       GETSHC - GET SHELL CONTROLS.
* 
*         GETSHC ADDR 
* 
*         ENTRY  ADDR = ADDRESS OF WORD TO RECEIVE SHELL CONTROL
*                INFORMATION. 
* 
*         EXIT   SHELL CONTROL INFORMATION RETURNED TO WORD AT *ADDR*.
*                SEE *SHELL* MACRO FOR FORMAT.
* 
*         CALLS  CPM=.
  
  
          PURGMAC  GETSHC 
  
 GETSHC   MACRO  A
  MACREF GETSHC 
  R= X1,A 
  SX2 143B
  RJ =XCPM= 
  ENDM
 GETSPS   SPACE  4,20 
***       GETSPS - RETURN SYSTEM ORIGIN PRIVILEGES STATUS.
* 
*         GETSPS ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS TO RETURN STATUS. 
*                IF SPECIFIED, STATUS WILL BE RETURNED. 
*                IF NOT SPECIFIED, JOB WILL BE ABORTED IF THE USER
*                DOES NOT HAVE SYSTEM ORIGIN PRIVILEGES.
* 
*         EXIT   STATUS RETURNED TO *ADDR*. 
*T,ADDR          48/ ,12/STATUS 
*                STATUS = 0 IF USER HAS SYSTEM ORIGIN PRIVILEGES. 
*                           (*SYOT* OR *CSOJ* VALIDATION WITH *DEBUG*). 
*                       .NE. 0 IF THE USER DOES NOT HAVE SYSTEM ORIGIN
*                            PRIVILEGES.
* 
*         USES   X - 1, 2.
* 
*         CALLS  CPM=.
  
  
          PURGMAC  GETSPS 
  
 GETSPS   MACRO  A
  MACREF GETSPS 
  R= X1,A 
  SX2 101B
  RJ =XCPM= 
  ENDM
 MACHID   SPACE  4,10 
***       MACHID - MACHINE ID.
* 
*         MACHID ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS FOR RESPONSE. 
*         EXIT -
*T ADDR   48/,12/ ID
*         ID     2 CHARACTER MACHINE IDENTIFICATION.
* 
*         CALLS  CPM=.
  
  
          PURGMAC MACHID
  
 MACHID   MACRO  A
  MACREF MACHID 
  R= X1,A 
  SX2 50B 
  RJ =XCPM= 
  ENDM
 MODE     SPACE  4,25 
***       MODE - REQUEST EXIT MODE. 
* 
*         MODE   M,N,P
* 
*         ENTRY  M = PROGRAM EXIT MODES.
*                    0 = DESELECT PROGRAM EXIT MODES. 
*                    1 = ADDRESS RANGE ERROR. 
*                    2 = INFINITE MODE. 
*                    4 = INDEFINITE MODE. 
* 
*                N = HARDWARE EXIT MODES. 
*                    0 = DESELECT HARDWARE EXIT MODES.
*                    1 = PARITY ERROR ON ECS FLAG REGISTER OPERATION. 
*                    2 = CMC INPUT ERROR. 
*                    4 = CM DATA ERROR. 
* 
*                P = PURGING FLAG (CYBER 170-8X5 ONLY)
*                    0 = CLEAR PURGING FLAG.
*                    1 = SET PURGING FLAG.
* 
*         IF A PARAMETER IS NOT SPECIFIED THEN THAT PORTION OF
*         THE MODE FIELD IS NOT CHANGED.
* 
*         CALLS  CPM=.
  
  
          PURGMAC MODE
  
 MODE     MACRO  M,N,P
  LOCAL F 
  MACREF MODE 
 F SET 7000B
  IFC EQ,$N$$ 
  R= X2,7000B 
  ELSE
  R= X2,N 
  LX2 9 
  ENDIF 
  IFC EQ,$M$$ 
  SX1 B0
  ELSE
  R= X1,M 
 F SET F+17B
  ENDIF 
  IFC NE,$P$$ 
 F SET F+20B
  BX1 X1+X2 
  R= X2,P 
  LX2 4 
  ENDIF 
  IX1 X1+X2 
  SX2 F 
  LX2 12
  BX1 X1+X2 
  R= X2,2 
  RJ =XCPM= 
  ENDM
 OPMSG    SPACE  4,10 
***       OPMSG - SEND MESSAGE TO OPERATOR DISPLAY. 
* 
*         OPMSG  ADDR 
* 
*         ENTRY  ADDR = ADDRESS OF THE MESSAGE TO BE ISSUED TO
*                THE OPERATOR DISPLAY.
*                CALLER MUST BE *CSOJ*, *CMNT* OR *SSJ=* TO 
*                USE THIS FUNCTION. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC  OPMSG
  
 OPMSG    MACRO  A
  MACREF OPMSG
  R= X1,A 
  SX2 112B
  RJ CPM= 
  ENDM
 PACKNAM  SPACE  4,10 
***       PACKNAM  - SET/RETURN DEFAULT PACKNAME. 
* 
*         PACKNAM   S,N 
* 
*         ENTRY  *S* = ADDRESS OF PACKNAME. 
*                *N* IF SPECIFIED, CURRENT DEFAULT PACKNAME WILL BE 
*                RETURNED IN *S*. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC PACKNAM 
  
 PACKNAM MACRO S,N
  MACREF PACKNAM
  R= X1,S 
  IFC NE,$N$$ 
  SX2 36B 
  ELSE 1
  SX2 35B 
  RJ =XCPM= 
  ENDM
 PROTECT  SPACE  4,15 
***       PROTECT - SET/CLEAR JOB CONTROL FLAGS.
* 
*         PROTECT ECS,UFP 
* 
*         ENTRY  *ECS* = *ON* TO SELECT PRESERVE ECS OVER JOB STEPS 
*                        *OFF* TO DESELECT PRESERVE ECS OVER JOB STEPS
*                *UFP* = *ON* TO SELECT USER FILE PRIVACY 
*                        *OFF* TO DESELECT USER FILE PRIVACY
* 
*         NOTE - *CONTROL* ISSUES THIS MACRO WITH NO PARAMETERS AND THE 
*         APPROPRIATE BITS ALREADY SET IN *X1* WHEN PROCESSING THE
*         *PROTECT* CONTROL STATEMENT.
* 
*         CALLS  CPM=.
  
  
          PURGMAC PROTECT 
  
 PROTECT  MACRO  A,B
          LOCAL  C
  MACREF PROTECT
.1 IFC NE,$A$$
 C SET 2
  IFC EQ,$A$ON$,2 
 C SET 1
  R= X1,1 
  IFC EQ,$A$OFF$,2
 C SET 1
  SX1 10000B
  IFEQ C,2,1
  ERR ILLEGAL ECS PROTECTION FLAG 
.1 ELSE 
  IFC NE,$B$$ 
  R= X1,0 
.1 ENDIF
.2 IFC NE,$B$$
C SET 2 
  IFC EQ,$B$ON$,2 
C SET 1 
  SX2 6 
  IFC EQ,$B$OFF$,2
C SET 1 
  SX2 20000B
  IFEQ C,2,1
  ERR ILLEGAL FILE PRIVACY FLAG 
  BX1 X2+X1 
.2 ENDIF
  SX2 75B 
  RJ =XCPM= 
  ENDM
 RECOVR   SPACE  4,15 
***       RECOVR - PROVIDE INTERFACE TO *RECOVR*. 
* 
*         RECOVR  P1,P2,P3
* 
*                 P1 = ADDRESS OF RECOVERY ROUTINE. 
*                 P2 = MASK BITS RIGHT JUSTIFIED, ZERO FILLED.
*                 P3 = CHECKSUM LWA, 0 IF NO CHECKSUM.
* 
*         CALLS  *SETUP.* OF *RECOVR*.
* 
*         EXIT   (B1) = 1.
  
  
          PURGMAC  RECOVR 
  
 RECOVR MACRO  P1,P2,P3 
  MACREF RECOVR 
  IFC EQ,*P1**,1
  ERR - MISSING RECOVERY ROUTINE ADDRESS. 
  IFC EQ,*P2**,1
  ERR - MISSING MASK. 
A IFC NE,*P3**
  R= B3,P3
A ELSE
  SB3 B0
A ENDIF 
  R= B1,P1
  R= X4,P2
  RJ =XSETUP. 
  SB1 1 
 RECOVR ENDM
 REPRIEVE SPACE  4,35 
***       REPRIEVE - REQUEST REPRIEVE FUNCTIONS 
* 
*         REPRIEVE   P1,P2,P3 
* 
*         ENTRY  P1 = ADDRESS OF EXTENDED REPRIEVE PARAMETER BLOCK. 
*                    P2 = TYPE OF CALL. 
*                         *SETUP* = INITIALIZE PARAMETERS FOR ERROR 
*                            INTERCEPTION.
*                         *SET* = SAME AS *SETUP* (RETAINED FOR 
*                            UPWARD COMPATIBILITY). 
*                         *RESUME* = RESTART RUNNING PROGRAM AFTER
*                            INTERRUPT HAS BEEN PROCESSED.
*                         *RESET* = RESET ERROR FOR SYSTEM PROCESSING.
*                         *IRESUME* = INTERRUPT HANDLER MODE *RESUME* 
*                            RESTARTS RUNNING PROGRAM FOR INTERRUPT 
*                            PROCESSING.
*                    P3 = DESIRED MASK SETTING. 
*                         001 = CPU ERROR EXITS.
*                         002 = PPU CALL ERRORS.
*                         004 = SYSTEM RESOURCE LIMITS. 
*                         010 = OPERATOR TERMINATION. 
*                         020 = PPU ABORT.
*                         040 = CPU ABORT.
*                         100 = NORMAL TERMINATION. 
*                         200 = TERMINAL INTERRUPT. 
* 
*         EXIT   (X2) = ADDRESS OF PARAMETER BLOCK. 
* 
*         USED   X - 1, 2, 6. 
*                A - 1, 6.
* 
*         NOTE   *REPRIEVE* ISSUES INTERNAL RA+1 REQUESTS IN ORDER TO 
*                AVOID ASYNCHRONOUS USE OF *SYS=*.
  
  
          PURGMAC  REPRIEVE 
  
 REPRIEVE MACRO  P1,P2,P3 
  MACREF REPRIEVE 
* 
*         ASSURE PARAMETER SPECIFICATION
* 
  IFC EQ,*P1**,1
  ERR - MISSING PARAMETER BLOCK ADDRESS 
  IFC EQ,*P2**,1
  ERR - MISSING CALL TYPE 
  IFC EQ,*P3**,1
  ERR - MISSING MASK
  SA1 P1
  MX6 -10D
  BX6 X1*X6 
* 
*         DETERMINE FUNCTION CODE 
* 
.1 SET 0
  ECHO 4,X=(SETUP,SET,RESUME,RESET,IRESUME),Y=(2,2,4,6,10B) 
.A IFC EQ,$P2$X$
.1 SET Y
  STOPDUP 
.A ENDIF
.B IFEQ .1,0
  ERR - ILLEGAL FUNCTION *P2* 
.B ENDIF
  SX1 .1
* 
*         SET FUNCTION CODE IN WORD 0 OF PARAMETER BLOCK. 
* 
  BX6 X1+X6 
  SA6 A1
* 
*         SET NEW MASK
* 
  SA1 A1+3
  MX6 24D 
  BX6 -X6*X1
  SX1 P3
  LX1 -24D
  BX6 X6+X1 
  SA6 A1+ 
* 
*         SET UP RPV REQUEST AND MAKE REQUEST.
* 
  SX6 3RRPV 
  PX6 X6
  LX6 22D 
  PX6 X6
  LX6 20D 
  SX2 P1
  BX6 X6+X2 
+ SA1 1 
  NZ X1,* 
  SA6 1 
  XJ
  ENDM
 RPVBLK   SPACE  4,20 
***       RPVBLK - DEFINE AN EXTENDED REPRIEVE PARAMETER BLOCK. 
* 
* TAG     RPVBLK XFERADR,XJP,CHKLWA 
* 
*         ENTRY  *TAG* = SYMBOL TO BE DEFINED AS THE PARAMETER
*                      BLOCK ADDRESS. 
*                *XFERADR* = ADDRESS TO RECEIVE CONTROL WHEN AN 
*                      ERROR IS DETECTED. 
*                *XJP* = OPTIONAL SYMBOL TO BE DEFINED AS THE 
*                      ADDRESS OF THE EXCHANGE PACKAGE WITHIN 
*                      THE PARAMETER BLOCK. 
*                *CHKLWA* = EXPRESSION DEFINING THE LWA OF THE
*                      AREA TO BE CHECKSUMMED BY *RPV* AND VERIFIED 
*                      BEFORE RESTARTING PROGRAM AT THE TRANSFER
*                      ADDRESS.  A VALUE OF 0 (THE DEFAULT) MEANS 
*                      NO CHECKSUMMING.  THE CHECKSUMMED AREA 
*                      BEGINS AT *XFERADR*. 
* 
*         IF THE VALUE OF *EXPL* OR *RPPL* CHANGE IN *COMSRPV*, 
*         THE *RPVBLK* MACRO MUST ALSO BE CHANGED.
  
  
          PURGMAC RPVBLK
  
 RPVBLK   MACRO  P,XJP,CHKLWA 
  LOCAL LWA 
  MACREF RPVBLK 
.A IFC EQ,*P**
  ERR - MISSING TRANSFER ADDRESS
.A ENDIF
  VFD 36/0,12/LWA-*,2/0,9/0,1/0 
  VFD 30/CHKLWA,30/P
  BSSZ 7
 XJP BSSZ 20B 
 LWA BSS 0
 RPVBLK   ENDM
 SETAUC   SPACE  4,25 
***       SETAUC - INCREMENT APPLICATION UNIT ACCUMULATOR.
* 
*         SETAUC ADDR 
* 
*T ADDR   42/ 0,9/ RP,9/ 0
*T ADDR+1 6/ BC,22/ 0,32/ CP
*T ADDR+2 10/ 0,10/ MS,10/ 0,10/ MT,10/ 0,10/ PF
*T ADDR+3 20/ 0,20/ MP,20/ AU 
*T ADDR+4 36/ 0,12/ EM,12/ CM 
* 
*         RP = REPLY CODE.
*         BC = BLOCK CODE = 01B.
*         CP = CP TIME (QUARTER NANOUNITS). 
*         MS = MS UNITS.
*         MT = MT UNITS.
*         PF = PF UNITS.
*         MP = MP UNITS.
*         AU = AUC MILLIUNITS.
*         EM = EXTENDED MEMORY SIZE/1000B.
*         CM = CENTRAL MEMORY SIZE/100B.
* 
*         EXIT   INCREMENT APPLIED TO APPLICATION UNIT ACCUMULATOR
*                (AUC) AND TO SRU ACCUMULATOR.
*                (RP) .NE. 0 IF EXCESSIVE ACCUMULATOR INCREMENT.
* 
*         CALLS  CPM=.
  
  
          PURGMAC  SETAUC 
  
 SETAUC   MACRO  A
  MACREF  SETAUC
  R= X1,A 
  SX2 64B 
  RJ CPM= 
  ENDM
 SETDI    SPACE  4,15 
***       SETDI - SET DEVICE INFORMATION. 
*         SET SPECIFIED FIELD IN DEVICE INFORMATION SECTOR
*         FOR SPECIFIED DEVICE. 
* 
*         SETDI  FET,EQ,WORD,VALUE
* 
*         ENTRY  *FET* = FET ADDRESS. 
*                *EQ* = EST ORDINAL.
*                *WORD* = INDEX OF WORD TO UPDATE.
*                *VALUE* = NEW VALUE FOR SPECIFIED WORD.
* 
*         EXIT   (X3) = EST ORDINAL.
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
          PURGMAC  SETDI
  
 SETDI    MACRO  F,E,W,V
  MACREF SETDI
  R= X2,F 
  X= X3,E 
  BX6 X3
  LX6 48D 
  R= X7,W 
  BX6 X6+X7 
  SA6 X2+7
.A IFC NE,$V$$
  X= X1,V 
  SA4 X2+B1 
  SX4 X4
  BX6 X1
  SA6 X4
.A ENDIF
  R= X7,SDFF
  RJ SFM
  ENDM
 SETLFE   SPACE  4,15 
***       SETLFE -  SET LAST FILE EXECUTED. 
* 
*         SETLFE FET
* 
*         ENTRY  *FET* = FET ADDRESS. 
*T        42/FILENAM,17/,1/C. 
* 
*         EXIT   (X2) = FET ADDRESS.
* 
*         CALLS  LFM=.
  
  
          PURGMAC  SETLFE 
  
 SETLFE   MACRO  F
  MACREF SETLFE 
  R= X2,F 
  SX7 33B 
  RJ =XLFM= 
 SETLFE   ENDM
 SETLOF   SPACE  4,15 
***       SETLOF - SET LIST OF FILES ADDRESS AS SPECIFED BY USER. 
* 
*         SETLOF ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS CONTAINING LIST OF FILES ADDRESS. 
*T ADDR   12/   0,18/  LIST,29/   0,1/C 
*         LIST   FWA OF LIST OF FILES.
*         C      COMPLETION BIT.
* 
*         EXIT   ADDRESS SET IN (LOFW). 
* 
*         CALLS  CPM=.
  
  
          PURGMAC SETLOF
  
 SETLOF   MACRO  A
  MACREF SETLOF 
  R= X1,A 
  SX2 62B 
  RJ =XCPM= 
  ENDM
 SETMFL   SPACE  4,10 
***       SETMFL - SET MAXIMUM FIELD LENGTH.
*         THIS CHANGES THE UPPER LIMIT ON FIELD LENGTH. 
* 
*         SETMFL N,M
* 
*         ENTRY  *N* = NEW MAXIMUM FIELD LENGTH.
*                *M* = NEW MAXIMUM ECS FIELD LENGTH/1000B.
* 
*         CALLS  CPM=.
  
  
          PURGMAC SETMFL
  
 SETMFL   MACRO  N,M
  MACREF SETMFL 
  IFC NE,$N$$,3 
  R= X1,N 
  SX2 52B 
  RJ =XCPM= 
  IFC NE,$M$$,6 
  MX2 1 
  R= X1,M 
  LX2 24D 
  BX1 X1+X2 
  SX2 52B 
  RJ =XCPM= 
  ENDM
 SETASL   SPACE  4,10 
***       SETASL - SET ACCOUNT BLOCK SRU LIMIT. 
* 
*         SETASL N
* 
*         ENTRY  N = SRU ACCOUNT BLOCK LIMIT IN UNITS.
* 
*         CALLS  CPM=.
  
          PURGMAC SETASL
  
 SETASL   MACRO  N
  MACREF SETASL 
  R= X2,2 
  R= X1,N 
  LX2 18
  BX1 X2+X1 
  SX2 3 
  RJ =XCPM= 
  ENDM
 SETJCI   SPACE  4,20 
***       SETJCI - SET JOB CONTROL INFORMATION. 
* 
*         SETJCI ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS OF PARAMETER BLOCK CONTAINING 
*                INFORMATION TO BE SET IN CONTROL POINT AREA. 
*T ADDR   6/EFG,18/R1G,12/CCL DATA,12/EM,6/SSW,5/0,1/1
*         6/EF,18/R3,18/R2,18/R1
*         EFG    GLOBAL ERROR FLAG
*         R1G    GLOBAL REGISTER
*         CCL DATA DATA INTERNAL TO CCL 
*         EM     EXIT MODE
*         SSW    SENSE SWITCHES 
*         EF     ERROR FLAG 
* 
*         CALLS  CPM=.
  
  
          PURGMAC SETJCI
  
 SETJCI   MACRO  A
  MACREF SETJCI 
  IFC EQ,$A$$,1 
  ERR NO ADDRESS SPECIFIED
  R= X2,1 
  R= X1,A 
  LX2 18
  BX1 X2+X1 
  SX2 74B 
  RJ =XCPM= 
  ENDM
 SETJSL   SPACE  4,10 
***       SETJSL - SET JOB STEP SRU LIMIT.
* 
*         SETJSL N
* 
*         ENTRY  N = SRU JOB STEP LIMIT IN UNITS. 
* 
*         CALLS  CPM=.
  
          PURGMAC SETJSL
  
 SETJSL   MACRO  N
  MACREF SETJSL 
  R= X2,1 
  R= X1,N 
  LX2 18
  BX1 X2+X1 
  SX2 3 
  RJ =XCPM= 
  ENDM
 SETPIDA  SPACE  4,40 
***       SETPIDA - SET LID ATTRIBUTES. 
*         SET THE ATTRIBUTE FIELD IN THE LID TABLE FOR THE SPECIFIED
*         LID, REPLACING THE EXISTING ATTRIBUTE FIELD.  6 SUBFUNCTIONS
*         OF THIS MACRO (AND THEIR FORMATS) ARE DESCRIBED BELOW.
*         EITHER SSJ= VALIDATION OR SYOT IS REQUIRED. 
* 
*         SETPIDA  FET
* 
*T FET    12/ FC,12/ N,18/ 0,8/ 0,9/ 0,1/1
* 
*                FC = FUNCTION CODE.
*                N = WORD COUNT OF REQUEST. 
* 
* 
*         FC = 0 - SET PID ATTRIBUTES ENABLED/VALIDATE/NOLIST.
* 
* 
*T FET+1  18/ PID1,30/ 0,12/ NA1
*T,FET+2  18/ PID2,30/ 0,12/ NA2
*T,FET+N  18/ PIDN,30/ 0,12/ NAN
* 
*                NA = 1/E,1/V,1/N,9/0 
*                     NEW ATTRIBUTES OF THE *PID*.
* 
* 
*         FC = 1 - SET NETWORK STATUS.
* 
* 
*T,FET+1  18/ PID1,29/ 0,1/F,8/0,4/ ST
*T,FET+2  18/ PID2,29/ 0,1/F,8/0,4/ ST
*T,FET+N  18/ PIDN,29/ 0,1/F,8/0,4/ ST
* 
*                F  = 0, IF SETTING NEW NETWORK STATUS. 
*                F  = 1, IF ENABLING OR DISABLING NETWORK.
*                ST = NETWORK STATUS. 
*                   = 0, NETWORK NOT AVAILABLE. 
*                   = 1, PATHS TO *PID* IN SERVICE. 
*                   = 2, ALL PATHS TO *PID* OUT OF SERVICE. 
*                   = 3-7, RESERVED FOR CDC.
*                   = 1X, ALL PATHS TO *PID* DISABLED BY OPERATOR.
* 
* 
*         FC = 2 - SET MF DESCRIPTOR. 
* 
* 
*T,FET+1  18/ PID1,42/ MF1
*T,FET+2  18/ PID2,42/ MF2
*T,FET+N  18/ PIDN,42/ MFN
* 
*                MF = MAINFRAME DESCRIPTOR. 
* 
* 
*         FC = 3 - ADD *LID*. 
* 
* 
*T,FET+1  18/ PID1,18/ LID1,12/ AT1,12/ 0 
*T,FET+2  18/ PID2,18/ LID2,12/ AT2,12/ 0 
*T,FET+N  18/ PIDN,18/ LIDN,12/ ATN,12/ 0 
* 
*                LID = NEW LID TO ADD.
*                AT = 1/E,1/S,1/V,1/B,1/N,5/RFU,2/RF
*                     E = ENABLED.
*                     S = STORE AND FORWARD.
*                     V = VALIDATION REQUIRED.
*                     B = LOOP BACK (PID MUST BE HOST). 
*                     N = NOLIST ATTRIBUTE. 
*                     RFU = RESERVED FOR FUTURE USE.
*                     RF  = RESERVED FOR INSTALLATION.
* 
* 
*         FC = 4 - DELETE *LID*.
* 
*T FET+1  18/ PID1,18/ LID1,24/ 0 
*T,FET+2  18/ PID2,18/ LID2,24/ 0 
*T,FET+N  18/ PIDN,18/ LIDN,24/ 0 
* 
*                LID = LID TO DELETE. 
* 
* 
*         FC = 5 - SET LID ATTRIBUTES.
* 
* 
*T,FET+1  18/ PID1,18/ LID1,12/ AT1,12/ 0 
*T,FET+2  18/ PID2,18/ LID2,12/ AT2,12/ 0 
*T,FET+N  18/ PIDN,18/ LIDN,12/ ATN,12/ 0 
* 
*                LID = LID TO CHANGE ATTRIBUTES.
*                AT = 1/E,1/S,1/V,1/B,1/N,5/RFU,2/RF
*                     E = ENABLED.
*                     S = STORE AND FORWARD.
*                     V = VALIDATION REQUIRED.
*                     B = LOOP BACK (PID MUST BE HOST). 
*                     N = NOLIST ATTRIBUTE. 
*                     RFU = RESERVED FOR FUTURE USE.
*                     RF  = RESERVED FOR INSTALLATION.
* 
*         EXIT -
* 
*T FET    12/ FC,12/ N,18/ 0,8/ RC,9/ 0,1/1 
*T,FET+1  18/ PID1,30/ NC,12/ RC1 
*T,FET+2  18/ PID2,30/ NC,12/ RC2 
*T,FET+N  18/ PIDN,30/ NC,12/ RCN 
* 
*         RC = RETURNED ERROR CODE. 
*              0  NO ERROR. 
*              6  RETURN INFORMATION TOO LONG FOR BUFFER. 
*              7  LID NOT LEGAL.
*              10B  INVALID ATTRIBUTE SPECIFIED.
*              11B  CURRENT ATTRIBUTE IS NOT IN LID TABLE.
*              12B  LID TABLE OVERFLOW. 
*              13B  TOO MANY HOST LIDS IN LID TABLE.
* 
*         NC - NO CHANGE IN THAT FIELD. 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  SETPIDA
  
 SETPIDA  MACRO  F
  MACREF SETPIDA
  R= X2,F 
  R= X7,SPTF
  RJ =XSFM
  ENDM
 SETPIDI  SPACE  4,20 
***       SETPIDI - SET PIDS TO INITIALIZATION VALUE. 
* 
*         SETPIDI SETS THE INITIAL TABLE OF PID ENTRIES 
*         WITH THE SPECIFIED LIDS INTO THE LID TABLE.  EITHER SSJ=
*         VALIDATION OR SYOT IS REQUIRED. 
* 
*         SETPIDI ADDR
*ADDR     12/WC,30/0,8/0,9/0,1/0
*T        LTWO   12/LDTL,36/RFU,12/NPID 
*T,1      LTW1   18/PID,1/H,1/E,1/V,5/RFU,10/RFI,12/RFU,4/SF,4/RH,4/NT
*T,2      LTW2   42/MF,18/N-PID 
*T,3      LTW2   12/RFI,35/RFU,12/NO-LID
*T,4      LTW4   18/LID,6/0,1/E,1/S,1/B,1/V,1/N,7/RFU,6/RFI,18/RFU
*T,I      LTWI   REPEAT LTW4 FOR ADDITIONAL LIDS. 
*T,I+1    LTWI+1 TO LTWI+I REPEAT  LTW1 - LTWI FOR NEXT PID 
*T,WC-1 
* 
*         WC = WORD COUNT OF THE LID TABLE. 
* 
*         WORD 0. 
* 
*         LDTL   59-48       CM WORD LENGTH OF LDT. 
*         RFU    47-12       RESERVED FOR FUTURE USE. 
*         NPID   11-0        NUMBER OF PIDS IN LDT. 
* 
*         WORD 1. 
* 
*         PID    59-42       PHYSICAL ID. 
*         H      41          HOST.
*         E      40          ENABLED. 
*         V      39          PRE-VALIDATION.
*         RFU    38-34       RESERVED FOR FUTURE USE. 
*         RFI    33-24       RESERVED FOR INSTALLATION. 
*         RFU    23-12       RESERVED FOR FUTURE USE. 
*         SF     11-8        SSF-SCOPE 2 STATION FACILITY.
*         RH     7-4         RHF - REMOTE HOST STATUS (1).
*         NP     3-0         NHP - NETWORK HOST PRODUCTS STATUS (1).
* 
*         (1)    NETWORK STATUS CODES.
*                0 - NETWORK NOT AVAILABLE. 
*                1 - PATHS TO PID IN SERVICE. 
*                2 - ALL PATHS TO PID OUT OF SERVICE. 
*                3-7 - RESERVED.
*                1X - ALL PATHS TO PID DISABLED BY OPERATOR.
* 
*         WORD 2. 
* 
*         MF     59-18       MAINFRAME DESCRIPTION. 
*         RFU    17-12       RESERVED FOR FUTURE USE. 
*         N-PID  11-0        NEXT PID OFFSET ADDRESS. 
* 
*         WORD 3. 
* 
*         RFI    59-48       RESERVED FOR INSTALLATION. 
*         RFU    47-12       RESERVED FOR FUTURE USE. 
*         NO-LID 11-0        NUMBER OF LIDS.
* 
*         WORD 4. 
* 
*         LID    59-36       LID (RIGHTMOST 6 BITS UNUSED). 
*         E      35          ENABLED FLAG FOR LID.
*         S      34          STORE AND FORWARD MAINFRAME FOR LID. 
*         B      33          LOOPBACK FLAG FOR LID ID.
*         V      32          LID VALIDATION ATTRIBUTE.
*         N      31          LID NOLIST ATTRIBUTE.
*         RFU    30-24       RESERVED FOR FUTURE USE. 
*         RFI    23-18       RESERVED FOR INSTALLATION. 
*         RFU    17-0        RESERVED FOR FUTURE USE. 
* 
*         EXIT
*ADDR     12/WC,30/0,8/RC,9/0,1/1.
* 
*         RC = ERROR RETURN CODE (SEE *COMSSFM* FOR DETAILS). 
* 
*         CALLS  SFM. 
* 
*         XREF   COMSSFM. 
  
  
          PURGMAC  SETPIDI
  
 SETPIDI  MACRO  F
  MACREF SETPIDI
  R= X2,F 
  R= X7,ILTF
  RJ =XSFM
  ENDM
 SETRFL   SPACE  4,10 
***       SETRFL - SET RUNNING FIELD LENGTH.
*         THIS CHANGES THE FIELD LENGTH TO BE RESTORED TO WHEN THE
*         NEXT CONTROL CARD IS ISSUED.
* 
*         SETRFL N,M
* 
*         ENTRY *N* = NEW RUNNING FIELD LENGTH. 
*               *M* = NEW RUNNING ECS FIELD LENGTH. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC SETRFL
  
 SETRFL   MACRO  N,M
  MACREF SETRFL 
  IFC NE,$N$$,3 
  R= X1,N 
  SX2 23B 
  RJ =XCPM= 
  IFC NE,$M$$,6 
  MX2 1 
  R= X1,M 
  LX2 24D 
  BX1 X1+X2 
  SX2 23B 
  RJ =XCPM= 
  ENDM
 SETSHC   SPACE  4,10 
***       SETSHC - SET SHELL CONTROLS.
* 
*         SETSHC ADDR 
* 
*         ENTRY  ADDR = ADDRESS OF WORD CONTAINING NEW SHELL CONTROL
*                INFORMATION.  SEE *SHELL* MACRO FOR FORMAT.
* 
*         EXIT   SHELL CONTROLS CHANGED.  CONTENTS OF SHELL CONTROLS
*                PRIOR TO MODIFICATION RETURNED TO WORD AT *ADDR*.
*                SEE *SHELL* MACRO FOR FORMAT.
* 
*         CALLS  CPM=.
  
  
          PURGMAC  SETSHC 
  
 SETSHC   MACRO  A
  MACREF SETSHC 
  R= X1,A 
  SX2 113B
  RJ =XCPM= 
  ENDM
 SETTL    SPACE  4,10 
***       SETTL - SET TIME LIMIT. 
* 
*         SETTL  N
* 
*         ENTRY  *N* = TIME LIMIT IN SECONDS. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC SETTL 
  
 SETTL    MACRO  N
  MACREF SETTL
  R= X1,N 
  MX2 -18 
  BX1 -X2*X1
  SX2 3 
  RJ =XCPM= 
  ENDM
 SHELL    SPACE  4,10 
***       SHELL - SET SHELL CONTROLS. 
* 
*         SHELL  ADDR 
* 
*         ENTRY  ADDR = ADDRESS OF WORD CONTAINING NEW SHELL CONTROL
*                INFORMATION. 
* 
*         EXIT   SHELL CONTROLS CHANGED.  CONTENTS OF SHELL CONTROLS
*                PRIOR TO MODIFICATION RETURNED TO WORD AT *ADDR*.
* 
*T,ADDR   42/NAME,6/,1/X,3/,1/E,1/A,1/L,1/G,1/S,1/C,1/O,1/I 
* 
*                NAME = 1-7 CHARACTER NAME OF SHELL PROGRAM.
*                X    = CURRENTLY EXECUTING UNDER SHELL CONTROL.
*                       (IGNORED FOR SETTING NEW CONTROL INFORMATION) 
*                E    = CLEAR CONTROLS ON SHELL LOAD ERROR. 
*                A    = CLEAR CONTROLS IF SHELL PROGRAM ABORTS. 
*                L    = ALLOW SHELL PROGRAM LOAD FROM LOCAL FILE. 
*                G    = ALLOW SHELL PROGRAM LOAD FROM GLOBAL LIBRARY. 
*                S    = ALLOW SHELL PROGRAM LOAD FROM SYSTEM LIBRARY. 
*                C    = CALL SHELL IF NO MORE COMMANDS (INTERACTIVE). 
*                O    = CALL SHELL FOR COMMANDS OUTSIDE PROCEDURES. 
*                I    = CALL SHELL FOR COMMANDS INSIDE A PROCEDURE. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC  SHELL
  
 SHELL    MACRO  A
  MACREF SHELL
  R= X1,A 
  SX2 113B
  RJ =XCPM= 
  ENDM
 VERSION  SPACE  4,20 
***       VERSION - RETURN VERSION NAME.
*                VERSION NAME IS TRANSFERRED FROM CMR TO
*                SPECIFIED ADDRESS. 
* 
*         VERSION ADDR
* 
*         ENTRY  *ADDR* = ADDRESS OF WORD CONTAINING PARAMETERS.
*T  ADDR  12/ BC,12/ SB,12/ BP,6/ ,18/ WADDR
*                *BC* = NUMBER OF BYTES TO RETURN. (1-10D)
*                *SB* = BYTE IN SOURCE FIELD TO START AT. (0-9) 
*                       (*BC* + *SB* .LT. 11D)
*                *BP* = BYTE POSITION WITHIN RECEIVING FIELD TO 
*                       START AT. (0-4) 
*                *WADDR* = ADDRESS OF FIRST WORD TO RECEIVE DATA. 
* 
*         CALLS  CPM=.
  
  
          PURGMAC VERSION 
  
 VERSION  MACRO  A
  MACREF VERSION
  R= X1,A 
  SX2 44B 
  RJ =XCPM= 
  ENDM
          TITLE  COMCCMD - *SETFET* MACROS. 
 =5       SPACE  4,50 
***       THE FOLLOWING MACROS SET SELECTED FIELDS IN THE FET.
*         PARAMETERS ARE AS FOLLOWS - 
*         F = FET ADDRESS.
*         P = POSITIONALLY INDEPENDENT PARAMETERS AS FOLLOWS, 
*         BUF = FWA OF BUFFER, BUFFER LENGTH. 
*         DTY = DEVICE TYPE.
*         ERA = ERROR MESSAGE BUFFER. 
*         ERP = ERROR RETURN PROCESSING FIELD.
*         THE FOLLOWING MNEMONICS ARE ALSO PERMITTED. 
*         (ERP=U)  - SET USER EXIT PROCESSING MODE. 
*                    SAME AS (ERP=4). 
*         (ERP=E)  - SET ERROR EXIT PROCESSING MODE.
*                    SAME AS (ERP=2). 
*         (ERP=R)  - SET REAL TIME EXIT PROCESSING MODE.
*                    SAME AS (ERP=1). 
*         (ERP=UE) - SET BOTH *U* AND *E* MODES.
*                    SAME AS (ERP=6). 
*         (ERP=ER) - SET BOTH *E* AND *R* MODES.
*                    SAME AS (ERP=3). 
*         LFN = LOCAL FILE NAME LEFT JUSTIFIED, ZERO FILLED.
*         PFN = PERMANENT FILE NAME, LEFT JUSTIFIED, ZERO FILLED. 
*         PKN = PACK NAME, LEFT JUSTIFIED, ZERO FILLED. 
*         PWD = PASSWORD, LEFT JUSTIFIED, ZERO FILLED.
*         UCW = USER CONTROL WORD.
*         USN = USER NUMBER, LEFT JUSTIFIED, ZERO FILLED. 
* 
*         NOTE - PARAMETERS CAN BE REGISTERS OR CONSTANTS AS FOLLOWS. 
* 
*         WHEN NOT PREFIXED BY THE EQUIVALENCE CHARACTER, 
*                REGISTERS - SPECIFY THE VALUE TO BE PLACED IN THE
*                            FET. 
*                CONSTANTS - SPECIFY THE ADDRESS CONTAINING THE VALUE 
*                            TO BE PLACED IN THE FET. 
* 
*         WHEN PREFIXED BY THE EQUIVALENCE CHARACTER, 
*                REGISTERS - SPECIFY THE ADDRESS OF THE VALUE TO BE 
*                            PLACED IN THE FET. 
*                CONSTANTS - SPECIFY THE LOCATION CONTAINING THE
*                            ADDRESS OF THE VALUE TO BE PLACED IN THE 
*                            FET. 
* 
*         THE FOLLOWING PARAMETERS ARE USED TO DEFINE ADDRESSES, NOT
*         DATA VALUES, AND ARE NOT PROCESSED ACCORDING TO THE ABOVE 
*         PREFIX RULES. 
*         BUF, ERA, F.
* 
*         USES   X - 3, 4, 6. 
*                A - 3, 4, 6. 
  
  
          PURGMAC  =5 
  
 =5       MACRO  F,P
* 
*         INITIALIZE MICROS.
* 
  ECHO 1,X=(BUF,DTY,ERA,ERP,LFN,PFN,PKN,PWD,UCW,USN)
=5_X MICRO ,
* 
*         PROCESS PARAMETER SPECIFICATIONS. 
* 
  ECHO 4,V=(P)
  IFC NE,  V
  =5A F,V 
  ELSE 1
  STOPDUP 
 =5       ENDM
          SPACE  4,10 
**        FET SETUP SUPPORT MACROS. 
* 
*         THE FOLLOWING MACROS ARE USED BY THE *=5* MACRO TO ESTABLISH
*         CODE FOR DYNAMICALLY SETTING FET FIELDS.
 =5A      SPACE  4,10 
**        =5A - FORM SECONDARY MACRO CALLS. 
* 
*         FET FIELDS AND PARAMETERS MUST FIT THE FOLLOWING FORMAT.
*         (FLD=A,B) 
*         WHERE  FLD = THE KEY FIELD IDENTIFIER USED TO FORM THE
*                    SECONDARY MACRO CALLS TO THE PARAMETER 
*                    PROCESSING MACROS. 
*                A = THE FIRST PARAMETER. 
*                B = THE SECOND PARAMETER (IF APPLICABLE).
  
  
          PURGMAC =5A 
  
 =5A      MACRO  F,A,B
)1 MICRO 1,3, A 
)2 MICRO 5,, A
  IF -MIC,=5")1"
  ERR - ILLEGAL FET PARAMETER (")1"). 
  ELSE
  =5")1" F,")2",B 
 =5A      ENDM
          SPACE  4,10 
**        PARAMETER PROCESSING MACROS.
 =5BUF    SPACE  4,10 
**        =5BUF - SET BUFFER POINTERS (FIRST, IN, OUT, LIMIT).
* 
*         =5BUF  F,A,B
* 
*         ENTRY  F = FET ADDRESS. 
*                A = FIRST WORD ADDRESS OF BUFFER.
*                B = LENGTH OF BUFFER.
  
  
          PURGMAC  =5BUF
  
 =5BUF    MACRO  F,A,B
  R= X4,A 
  R= A3,F+1 
  MX6 42D 
  BX6 X6*X3 
  BX6 X6+X4 
  SA6 A3
  BX6 X4
  R= A6,A6+1
  R= A6,A6+1
  R= X4,B 
  R= A3,A6+1
  IX4 X6+X4 
  MX6 42D 
  BX6 X6*X3 
  BX6 X6+X4 
  SA6 A3
 =5BUF    ENDM
 =5DTY    SPACE  4,15 
**        =5DTY - SET DEVICE TYPE.
* 
*         =5DTY  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = DEVICE TYPE. 
  
  
          PURGMAC  =5DTY
  
 =5DTY    MACRO  F,A
  X= X4,A 
  R= A3,F+1 
  MX6 -48D
  BX6 -X6*X3
  LX4 48D 
  BX6 X6+X4 
  SA6 A3
 =5DTY    ENDM
 =5ERA    SPACE  4,15 
**        =5ERA - SET ERROR MESSAGE ADDRESS.
* 
*         =5ERA  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = ERROR MESSAGE ADDRESS. 
  
  
          PURGMAC  =5ERA
  
 =5ERA    MACRO  F,A
  R= X4,A 
  SA3 F+12B 
  MX6 42D 
  BX6 X6*X3 
  BX6 X6+X4 
  SA6 A3
 =5ERA    ENDM
 =5ERP    SPACE  4,15 
**        =5ERP - SET ERROR PROCESSING MODE.
* 
*         =5ERP  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = ERROR PROCESSING MODE. 
  
  
          PURGMAC  =5ERP
  
 =5ERP    MACRO  F,A
  LOCAL I 
I SET 77B 
  ECHO 4,B=(U,E,R,UE,ER),C=(4,2,1,6,3)
AX IFC EQ,$B$A$ 
  STOPDUP 
I SET C 
AX ENDIF
  IFEQ I,77B,1
  X= X4,A 
  IFNE I,77B,1
  SX4 I 
  R= A3,F+1 
  MX6 57D 
  LX6 43D 
  BX6 X6*X3 
  LX4 43D 
  BX6 X6+X4 
  SA6 A3
 =5ERP    ENDM
 =5LFN    SPACE  4,15 
**        =5LFN - SET LOCAL FILE NAME.
* 
*         =5LFN  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = LOCAL FILE NAME. 
  
  
          PURGMAC  =5LFN
  
 =5LFN    MACRO  F,A
  X= X4,A 
  R= A3,F 
  MX6 -18D
  BX6 -X6*X3
  BX6 X6+X4 
  SA6 A3
 =5LFN    ENDM
 =5PFN    SPACE  4,15 
**        =5PFN - SET THE PERMANENT FILE NAME.
* 
*         =5PFN  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = PERMANENT FILE NAME. 
  
  
          PURGMAC  =5PFN
  
 =5PFN    MACRO  F,A
  X= X4,A 
  SA3 F+10B 
  MX6 -18D
  BX6 -X6*X3
  BX6 X6+X4 
  SA6 A3
 =5PFN    ENDM
 =5PKN    SPACE  4,15 
**        =5PKN - SET PACK NAME.
* 
*         =5PKN  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = PACK NAME. 
  
  
          PURGMAC  =5PKN
  
 =5PKN    MACRO  F,A
  X= X4,A 
  SA3 F+14B 
  MX6 -18D
  BX6 -X6*X3
  BX6 X6+X4 
  SA6 A3
 =5PKN    ENDM
 =5PWD    SPACE  4,15 
**        =5PWD - SET FILE PASSWORD.
* 
*         =5PWD  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = PASSWORD.
  
  
          PURGMAC  =5PWD
  
 =5PWD    MACRO  F,A
  X= X4,A 
  SA3 F+12B 
  MX6 -18D
  BX6 -X6*X3
  BX6 X6+X4 
  SA6 A3
 =5PWD    ENDM
 =5UCW    SPACE  4,15 
**        =5UCW - SET THE USER CONTROL WORD.
* 
*         =5UCW  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = USER CONTROL WORD. 
  
  
          PURGMAC  =5UCW
  
 =5UCW    MACRO  F,A
  X= X4,A 
  BX6 X4
  SA6 F+13B 
 =5UCW    ENDM
 =5USN    SPACE  4,15 
**        =5USN - SET THE USER NUMBER.
* 
*         =5USN  F,A
* 
*         ENTRY  F = FET ADDRESS. 
*                A = USER NUMBER. 
  
  
          PURGMAC  =5USN
  
 =5USN    MACRO  F,A
  X= X4,A 
  SA3 F+11B 
  MX6 -18D
  BX6 -X6*X3
  BX6 X6+X4 
  SA6 A3
 =5USN    ENDM
 SETFET   SPACE  4,15 
***       SETFET - SET FET FIELDS DYNAMICALLY.
* 
* 
*         SETFET FWA,A,B,C,...,J
* 
*         EXIT   (X2) = FWA OF FET. 
  
  
          PURGMAC  SETFET 
  
 SETFET   MACRO  FWA,A,B,C,D,E,F,G,H,I,J
  MACREF SETFET 
  =5 FWA,((A),(B),(C),(D),(E),(F),(G),(H),(I),(J))
  R= X2,FWA 
 SETFET   ENDM
          SPACE  4
          ENDX
