* 4/13/72 -- 15:00 (7F)
* MODULE NAME: SPCHAR
* NUMBER: 31
* PURPOSE : TRANSLATE SPECIAL CHARACTER STRINGS FOR PRINTOUT
*
* ENTRY POINTS:
*
         DEF      E31SPCH           TRANSLATE SPECIAL CHARACTER STRING
*
*
         REF      S15FNDSC          FIND SP CHAR IN AUX. FILES
*
*
         SYSTEM   TEXTDEF
         SYSTEM   ITEMDEF
            INVCMDSTA
            INVLNSTA
*
*
         DEF      31P,31D
*
31P      EQU      %
         DATA     X'31'             MODULE NUMBER
         DATA     X'091372'         DATE
         DATA     X'1500'           TIME
*
*
         TITLE    '** SPCHAR(31) **'
*
*
* E31SPCH   -- TRANSLATE SPECIAL CHAR STRING DURING PRINTOUT
*
*
E31SPCH  EQU      %
         SAVRTN
*
         GET,X1   #CS,:K(2)         GET ADDR OF STRING
         STW,X1   FCHAR             SAVE ADDR
         GET,AC1  #NCCS,:K(2)       GET SIZE OF STRING
         STW,AC1  SPCHSZ            SAVE SIZE
         BAL,SRTN S15FNDSC          SEARCH AUX. FILE FOR STRING
         CI,AC1   0                 TEST FOR FOUND
         BE       NOTHEX               NO, NO REPLACEMENT STRING
*
*
         PAGE
*
*
         GET,X2   LN:OUTPTR         GET OUTPUT LINE POINTER
         STB,AC1  X2                STORE COUNT FOR MBS
         MBS,X1   0                 MOVE REPLACEMENT STRING
         PUT,X2   LN:OUTPTR         STORE NEW OUTPUT POINTER
         GET,D1   LN:OUTSZ          INCREMENT SIZE
         AW,D1    AC1
         PUT,D1   LN:OUTSZ
*
         GET,D1   LN:CPSTN          INCREMENT POSITION
         AW,D1    AC1
         PUT,D1   LN:CPSTN
         B        RTNSPCH           RETURN
*
*
         PAGE
*
*
NOTHEX   EQU      %
         LW,X1    FCHAR             GET ADDR OF 1ST SP. CHAR
         LW,AC1   SPCHSZ            NUMBER OF SP. CHARS
         GET,X2   LN:OUTPTR         GET OUTPUT LINE POINTER
         LI,AC3   #STOP             STOP-CODE CHARACTER
         STB,AC3  0,X2              STORE IN OUTPUT LINE
         AI,X2    1                 INCR. OUTPUT POINTER
         STB,AC1  X2                COUNT FOR MBS
         MBS,X1   0                 MOVE SP. CHAR STRING
         STB,AC3  0,X2              STORE STOP CODE
*
         AI,X2    1                 INCR. OUTPUT POINTER
         PUT,X2   LN:OUTPTR         STORE OUTPUT POINTER
         GET,D1   LN:CPSTN          GET CARRIER POSITION
         AW,D1    AC1               ADD SIZE OF CHAR STRING
         PUT,D1   LN:CPSTN          STORE NEW POSITION
         GET,D1   LN:OUTSZ          GET OUTPUT SIZE
         AW,D1    AC1               ADD SP. CHAR SIZE
         AI,D1    2                 ADD STOP CODES
         PUT,D1   LN:OUTSZ          STORE NEW OUTPUT SIZE
         GET,D1   LN:NSTOP          GET STOP-CODE COUNT
         AI,D1    2                 ADD NEW ONE'S
         PUT,D1   LN:NSTOP          STORE NEW COUNT
*
RTNSPCH  EQU      %
         RETURN
*
*
         PAGE
*
*
31D      CSECT    0                 START OF LOCALS
*
FCHAR    RES      1                 FIRST CHAR ADDR
SPCHSZ   RES      1                 SP CHAR STRING SIZE
*
*
         USECT    #PLOC
         END
