*DECK C$ISWR
          IDENT  C$ISWR 
          TITLE  CBISWR -  INDEXED SEQUENTIAL WRITE, DELETE, REWRITE
  
          MACHINE  ANY,I
          COMMENT  INDEXED SEQUENTIAL WRITE, DELETE, REWRITE
          SST 
          B1=1
          SPACE  4
**        CBISWR - INDEXED WRITE, DELETE, REWRITE 
* 
*         CALLING SEQUENCE
*           ALL 
*                SA0  FIT ADDR
*                MX4  1 IF INV KEY
*                MX4  0 IF NO INVALID KEY 
*                SB6  RETURN ADDRESS
*           WRITE 
*                SX3  RECORD LENGTH 
 CDCS     IFNE   OP.DCS,OP.NO 
*                SX7  RECORD ORDINAL (IF I/O VIA CDCS)
 CDCS     ENDIF 
*            +   EQ   C.WRRIS 
*            -   LINE NBR 
*                   ETC 
* 
*           DELETE
*            +   EQ   C.DELIS 
*            -   LINE NBR 
*                   ETC 
* 
*           REWRITE 
*                SX3  RECORD LENGTH 
 CDCS     IFNE   OP.DCS,OP.NO 
*                SX7  RECORD ORDINAL (IF I/O VIA CDCS)
 CDCS     ENDIF 
*            +   EQ   C.REWIS 
*            -   LINE NBR 
*                   ETC 
* 
*         DOES   - ROUTES REQUESTS TO CRM 
* 
*         USES   - EVERYTHING EXCEPT A0 
* 
  
  
*CALL IOMICROS
  
*CALL IODEFSC 
          EJECT 
          ENTRY  C.WRRIS
 C.WRRIS  BSS    0           WRITE
          SB5    WRITE
 CDCS     IFNE   OP.DCS,OP.NO 
          EQ     INIT0
 CDCS     ELSE   1
          EQ     INIT 
          SPACE  2
          ENTRY  C.DELIS
 C.DELIS  BSS    0           DELETE 
          SB5    DELETE 
          EQ     INIT 
          SPACE  2
          ENTRY  C.REWIS
 C.REWIS  BSS    0           REWRITE
          SB5    REWRITE
          SPACE  2
 CDCS     IFNE   OP.DCS,OP.NO 
 INIT0    FETCH  A0,DBFO,X5,,0
          ZR     X5,INIT     JUMP IF I/O NOT VIA CDCS 
          SA7    =XC.RORD    SAVE RECORD ORDINAL
          STORE  A0,RL=X3    SET RECORD LENGTH
 CDCS     ENDIF 
 INIT     BSS    0
          RJ     =XC.SVRTN
          STORE  A0,EX==XC.ISEX  SET ERROR EXIT 
          RJ     =XC.SETPK   SET TO PRIME KEY 
          FETCH  A0,RECA,X2  GET REC AREA ADDR
 CDCS     IFNE   OP.DCS,OP.NO 
          FETCH  A0,DBFO,X4 
          ZR     X4,INIT1    JUMP IF I/O NOT VIA CDCS 
          STORE  A0,WSA=X2   SET RECORD AREA ADDRESS
 INIT1    BSS    0
 CDCS     ENDIF 
          JP     B5 
          SPACE  4
 DELETE   BSS    0
 CDCS     IFNE   OP.DCS,OP.NO 
          ZR     X4,DELETE1  JUMP IF I/O NOT VIA CDCS 
          RJ     =XC.DMDEL   -DELETE- VIA CDCS
          EQ     =XC.NORRT   RETURN 
 DELETE1  BSS    0
 CDCS     ENDIF 
          DELETE  A0,,,,C    DELETE CURRENT 
          EQ     =XC.NORRT   RETURN 
          SPACE  2
 REWRITE  BSS    0
 CDCS     IFNE   OP.DCS,OP.NO 
          ZR     X4,REWR1    JUMP IF I/O NOT VIA CDCS 
          RJ     =XC.DMREW   -REWRITE- VIA CDCS 
          EQ     =XC.NORRT   RETURN 
 REWR1    BSS    0
 CDCS     ENDIF 
          REPLACE  A0,X2,X3  REWRITE REC
          EQ     =XC.NORRT   RETURN 
          SPACE  2
 WRITE    BSS    0
 CDCS     IFNE   OP.DCS,OP.NO 
          ZR     X4,WRITE1   JUMP IF I/O NOT VIA CDCS 
          RJ     =XC.DMWR2   -PUT- VIA CDCS 
          EQ     =XC.NORRT   RETURN 
 WRITE1   BSS    0
 CDCS     ENDIF 
          PUT    A0,X2,X3    WRITE THE REC
          EQ     =XC.NORRT   RETURN 
          END 
