*COMDECK  SISICOM            INDEXED SEQUENTIAL MACROS. 
 SISICOM  CTEXT  INDEXED SEQUENTIAL MACROS. 
* 
* 
SISC MACRO R,A,B,C,D,E,F,G,I,J,K,L,M,N
  LOCAL U,Y,Z 
  IFC EQ, A  ,1 
  ERR FIRST PARAMETER MUST BE FILE NAME.
  RJ  =XSAVREGM 
  SA1 Y 
  RJ  =X_R
  RJ  =XRESREGM 
  USE Z 
Y VFD 36/44B,24/A 
  SIS U,B,I,G_F_E_D_C 
  SIS U,C,J,G_F_E_D 
  SIS U,D,K,G_F_E 
  SIS U,E,L,G_F 
  SIS U,F,M,G 
  SIS U,G,N 
  VFD 60/0
  USE * 
  ENDM
SIS MACRO U,P,Q,W 
  LOCAL L 
  IFC EQ, P  ,3 
  IFC NE, W  ,12
  VFD 60/=0 
  IFNE ,,10 
  IFC EQ, Q = ,8
L MICRO 1,1, P
L MICRO 1,,"L"0123456789."L"
  IFC EQ, "L" 0123456789. ,5
  VFD 60/L
  USE U 
L VFD 60/P
  USE * 
  IFNE ,,1
  VFD 60/Q_P
  ENDM
SETKEY  MACRO   A,B,C,D,E 
  SISC  STKEYF$,A,B,C,D,E,,,,=,=0L,=
  ENDM
SETBLKI MACRO   A,B,C,D,E 
  SISC  SETBLKI,A,B,C,D,E,,,=,=,,=
  ENDM
SETBLKD MACRO   A,B,C,D 
  SISC  SETBLKD,A,B,C,D,,,,=,=,=
  ENDM
SETERR  MACRO  A,B,C,D
  SISC  SETERR,A,B,C,D,,,,,=,=0L
  ENDM
SETCOLL MACRO   A,B,C 
  SISC  SETCOLL,A,B,C 
  ENDM
OPENNEW MACRO   A,B 
  SISC  OPENNEW,A,B 
  ENDM
OPENOLD MACRO   A,B,C,D 
  SISC  OPENOLD,A,B,C,D,,,,=0L,=0L
  ENDM
TERMNAT MACRO   A 
  SISC  TERMNAT,A 
  ENDM
INSERT  MACRO  A,B
  SISC  INSERT,A,B
  ENDM
REPLACE MACRO   A,B 
  SISC  REPLACE,A,B 
  ENDM
DELETE  MACRO  A
  SISC  DELETE,A
  ENDM
ACCESSK MACRO   A,B,C 
  SISC  ACCESSK,A,B,C 
  ENDM
ACCESSN MACRO   A,B 
  SISC  ACCESSN,A,B 
  ENDM
SEEKL   MACRO A,B 
  SISC  SEEKL,A,B 
  ENDM
SEEKS   MACRO A,B 
  SISC  SEEKS,A,B 
  ENDM
REPOS   MACRO A,B 
  SISC  REPOS,A,B 
  ENDM
FORCEW  MACRO  A
  SISC  FORCEW,A
  ENDM
SISSUX69  MACRO  N                                                       SISMACS
          LOCAL  C,I                                                     SISMACS
I         SET    1                                                       SISMACS
C         MICRO 1,2,*N*                                                  SISMACS
          IFC    EQ,*"C"*=X*,1                                           SISMACS
I         SET    3                                                       SISMACS
C         MICRO I,1,*N*                                                  SISMACS
          IFC    EQ,*"C"**,1                                             SISMACS
  ERR     FILE NAME MUST BE SPECIFIED.  (VERY FIRST ARGUMENT)            SISMACS
IFNULL    IFC    NE,*"C"**,1                                             SISMACS
          IFC    GT,*"C"*Z*,1                                            SISMACS
  ERR     FIRST CHARACTER OF FILE NAME MUST BE ALPHABETIC.  (A-Z)        SISMACS
C         MICRO  I+7,1,*N*                                               SISMACS
          IFC    NE,*"C"**,1                                             SISMACS
  ERR     FILE NAME MUST BE LESS THAN EIGHT CHARACTERS.                  SISMACS
          DUP    6,5                                                     SISMACS
I         SET    I+1                                                     SISMACS
C         MICRO I,1,*N*                                                  SISMACS
          IFC    GT,*"C"*9*,2                                            SISMACS
  ERR     FILE NAME MUST ONLY COMPRISE ALPHANUMERIC CHARACTERS.(A-Z,0-9) SISMACS
          STOPDUP                                                        SISMACS
          IF     DEF,N,2                                                 SISMACS
          IF     ABS,N,1                                                 SISMACS
  ERR     FILE NAME MUST BE RELOCATABLE OR EXTERNAL.                     SISMACS
IFNULL    ENDIF                                                          SISMACS
SISSUX69  ENDM                                                           SISMACS
SETFET99 MACRO A,C,B,D                                                   SISMACS
          IFC    NE,*A**,16                                              SISMACS
          IF     -DEF,A,2                                                SISMACS
  BSS 0   NOT YET DEFINED.           C = A                               SISMACS
          IFNE   ,,14                                                    SISMACS
          IFC    EQ,*B**,3                                               SISMACS
          IF     ABS,A,11                                                SISMACS
  ERR     MUST BE RELOCATABLE.       C = A                               SISMACS
          IFNE   ,,10                                                    SISMACS
          IF     -ABS,A,2                                                SISMACS
  ERR     MUST BE ABSOLUTE.          C = A                               SISMACS
          IFNE   ,,7                                                     SISMACS
          IFLT   A,B,2                                                   SISMACS
  ERR     MUST BE \ B, @ D       C = A                                   SISMACS
          IFGE   A,B,4                                                   SISMACS
          IFGT   A,D,2                                                   SISMACS
  ERR     MUST BE \ B, @ D       C = A                                   SISMACS
          IFNE   ,,1                                                     SISMACS
  BSS 0                              C = A                               SISMACS
SETFET99  ENDM                                                           SISMACS
          MACRO SETFET,Q,UR,MR,MI,BL,BS,KL,KP,KT,KS,Y,Z,BF,DS,PI,X,NR,NL SISMACS
          LOCAL  IB,T                                                    PTR1088
          EQ     *+23                                                    PTR1088
Q   VFD   42/0C_Q,18/1                                                   PTR1088
          SISSUX69 Q
          SETFET99  Q,(FILE       NAME)                                  SCAA33Z
          SETFET99 UR,(RECORD LOCATION)                                  SISMACS
          SETFET99 MR,(MAX RECORD SIZE),1,32760                          SISMACS
          SETFET99 MI,(MIN RECORD SIZE),0,32760                          SISMACS
          SETFET99 BL,(BUFFER LOCATION)                                  SISMACS
          SETFET99 BS,(BUFFER     SIZE),0,99999                          SISMACS
          SETFET99 KL,(KEY    LOCATION)                                  SISMACS
          SETFET99 KP,(KEY    POSITION),000,009                          SISMACS
T         MICRO  1,1 KT                                                  PTR1088
          IFC    NE, "T"  ,6                                             PTR1088
          IFC    NE, "T" S ,5                                            PTR1088
          IFC    NE, "T" F ,4                                            PTR1088
          IFC    NE, "T" I ,3                                            PTR1088
          IFC    NE, "T" A ,2                                            PTR1088
  ERR     MUST = S, F, I, OR A       KEY        TYPE = KT                SISMACS
          IFNE   ,,1
  BSS 0                              KEY        TYPE = KT                PTR1088
          IFC    EQ,*I*KT*,2                                             SISMACS
          SETFET99 KS,(KEY        SIZE),001,060                          SISMACS
          IFNE   ,,1
          SETFET99 KS,(KEY        SIZE),01,4095                          SISMACS
          SETFET99  Y,(ERROR  LOCATION)                                  SISMACS
          SETFET99  Z,(DATA PAD PERCNT),000,099                          SISMACS
          SETFET99 BF,(BLOCKING FACTOR),01,4096                          SISMACS
          SETFET99 DS,(DATA BLOCK SIZE),3,32767                          SISMACS
          SETFET99 PI,(INDX PAD PERCNT),000,099                          SISMACS
          SETFET99  X,(INDEXBLOCK SIZE),2,32767                          SISMACS
          SETFET99 NR,(NUMBER  RECORDS)                                  SISMACS
          SETFET99 NL,(NUMBER   LEVELS),001,063                          SISMACS
  BSS 0                                                                  SISMACS
IB        SET    16                                                      SISMACS
          IFC    NE,*Y**,1                                               SISMACS
IB        SET    IB+4                                                    SISMACS
IFKEY     IFC    NE,*KT_KL**                                             SISMACS
IB        SET    IB+1                                                    SISMACS
          IFC    EQ,*KL**,1                                              SISMACS
  ERR     KEY LOCATION MUST BE SPECIFIED IF KEY TYPE IS SPECIFIED.       SISMACS
          IFC    EQ,*KT**,1                                              SISMACS
  ERR     KEY TYPE MUST BE SPECIFIED IF KEY LOCATION IS SPECIFIED.       SISMACS
          IFC    EQ,*KT*S*,3                                             SISMACS
IB        SET    IB+1*32                                                 SISMACS
          IFC    EQ,*KS**,1                                              SISMACS
  ERR     KEY SIZE IN CHARACTERS IS MISSING.                             SISMACS
          IFC    EQ,*KT*I*,6                                             SISMACS
IB        SET    IB+3*32                                                 SISMACS
          IF     DEF,KS,4                                                SISMACS
          IFC    EQ,*KS**,1                                              SISMACS
  BSS 0   KEY SIZE IN BITS IS MISSING. 30-BIT INTEGER KEY ASSUMED.       SISMACS
          IFLE   KS,30,1                                                 SISMACS
IB        SET    IB-1*32                                                 SISMACS
          IFC    EQ,*KT*F*,1                                             SISMACS
IB        SET    IB+3*32                                                 SISMACS
          IFC    EQ,*KT*A*,1                                             SISMACS
IB        SET    IB+5*32                                                 SISMACS
IFKEY     ENDIF                                                          SISMACS
          IFC    EQ,*UR**,1                                              SISMACS
  ERR     RECORD LOCATION MUST BE SPECIFIED.                             SISMACS
          IFC    EQ,*MR**,1                                              SISMACS
  ERR     MAXIMUM RECORD SIZE MUST BE SPECIFIED.                         SISMACS
          IF     DEF,MR,3                                                SISMACS
          IF     DEF,MI,2                                                SISMACS
          IFLT   MR,MI,1                                                 SISMACS
  ERR     MAX RECORD SIZE MUST BE \ MIN RECORD SIZE.                     SISMACS
          IFC    NE,*BL_BS**,3                                           SISMACS
          IFC    NE,*BL**,1                                              SISMACS
          IFC    EQ,*BS**,1                                              SISMACS
  ERR     MUST SPECIFY BOTH BUFFER LOCATION AND BUFFER SIZE.             SISMACS
          IFC    NE,*BF_DS**,4                                           SISMACS
IB        SET    IB+8                                                    SISMACS
          IFC    NE,*BF**,2                                              SISMACS
          IFC    NE,*DS**,1                                              SISMACS
  ERR     CAN NOT SPECIFY BOTH BLOCKING FACTOR AND DATABLOCK SIZE.       SISMACS
          IFC    NE,*X_NR_NL**,7                                         SISMACS
IB        SET    IB+2                                                    SISMACS
          IFC    NE,*X**,2                                               SISMACS
          IFC    EQ,*NR_NL**,3                                           SISMACS
          IFNE   ,,3                                                     SISMACS
          IFC    NE,*NR**,1                                              SISMACS
          IFC    EQ,*NL**,1                                              SISMACS
  ERR     SPECIFY EITHER INDEXBLOCK SIZE, OR NUMBR OF RECORDS AND LEVLS. SISMACS
          VFD    42/17,18/BL                                             SISMACS
          VFD    60/BL                                                   SISMACS
          VFD    60/BL                                                   SISMACS
          VFD    60/BL+BS                                                SISMACS
          BSSZ   8                                                       SISMACS
          VFD    30/DS,12/BF,18/X                                        SISMACS
          VFD    12/NL,18/MI,30/0                                        SISMACS
          VFD    30/MR,30/Y                                              SISMACS
          VFD    60/0                                                    SISMACS
          VFD    4/1,56/0                                                SISMACS
          VFD    30/NR,30/1                                              SISMACS
          VFD    1/1,11/IB-IB/32*32,48/0                                 PTR1088
          VFD    30/UR,30/0                                              PTR1088
          IFC    EQ, "T" A ,2 
          VFD    6/IB/32,6/KP,18/KL,12/1,9/Z,9/PI 
          IFNE   ,,8
          IFC    NE, "T"  ,6                                             PTR1088
          IFC    NE, "T" S ,5                                            PTR1088
          IFC    EQ, KS  ,2                                              PTR1088
          VFD    6/IB/32,6/KP,18/KL,12/5,9/Z,9/PI                        PTR1088
          IFNE   ,,3                                                     PTR1088
          VFD    6/IB/32,6/KP,18/KL,12/KS/6,9/Z,9/PI                     PTR1088
          IFNE   ,,1                                                     PTR1088
          VFD    6/IB/32,6/KP,18/KL,12/KS,9/Z,9/PI                       PTR1088
SETFET    ENDM                                                           PTR1088
* 
 SISICOM  ENDX
