*COMDECK  DISPLAY 
          TITLE  DISPLAY
**        DIS  -  DISPLAY EXPRESSION VALUE
* 
*         EVALUATE THE EXPRESSION AND THEN ISSUE A DAYFILE
*         MESSAGE TO DISPLAY ITS VALUE IN DECIMAL,OCTAL 
* 
*              (DECIMAL)    (OCTAL)B
* 
*         IF THE RESULT IS A STRING, THE RESULTANT STRING WILL
*         BE ISSUED AS A DISPLAY CODE DAYFILE MESSAGE.
  
  
 DIS1     BSS 
          SX6    B0+
          SA6    DISTIME
          SA6    PROCESS     DISPLAY
          RJ     =XCCLEVX 
          NZ     X5,EXIT2    ABORT IF ERR IN EXPRESSION 
  
          SA1    ANSSTR 
          SX7    2RSS 
          LX7    48 
          IX7    X1-X7
          ZR     X7,DIS8     IF SS - SUBSYSTEM ALREADY DISPLAYED
  
*         CHECK FOR STRING RESULT.  IF SO ISSUE THE STRING AS A DAYFILE 
*         MESSAGE.  WORD FOLLOWING RESULT MUST BE CLEARED IN THIS CASE. 
  
          SA1    EXPCHR 
          ZR     X1,DIS1.3   IF RESULT IS NOT A STRING
  
          SX2    1
 DIS1.1   SX1    X1-11
          NG     X1,DIS1.2   IF END IS DETERMINED 
  
          SX2    X2+B1
          SX1    X1+B1
          EQ     DIS1.1 
  
 DIS1.2   SX6    B0+         CLEAR THE NEXT WORD
          SA6    EVXVS+X2 
          SX3    EVXVS       ADDRESS OF STRING IN VALUE STACK 
          JP     DIS7.1      DISPLAY THE STRING 
  
*         CONVERT VALUE TO DECIMAL AND OCTAL AND THEN DISPLAY IT
*         IN THE DAYFILE.  THE DECIMAL VALUE WILL BE DISPLAY
*         ON THE LEFT SIDE FOLLOWED BY FOUR SPACES AND THEN 
*         THE OCTAL VALUE WITH A POST RADIX OF B. 
*         IF THE VALUE IS NEGATIVE THEN A MINUS SIGN MUST BE
*         INSERTED BEFORE EACH DISPLAY.  IF THE ABSOLUTE VALUE
*         IS GREATER THAN THE MAXIMUM DECIMAL VALUE WHICH CAN BE
*         DISPLAYED, THEN THAT MAXIMUM WILL BE DISPLAYED WITH A 
*         LEADING PREFIX OF EITHER GT(POSITIVE) OR LT(NEGATIVE).
  
 DIS1.3   BSS    0
          SA1    EXPVAL 
          SA4    DISMAX      MAXIMUM VALUE FOR DECIMAL CONVERSION 
          BX5    X1 
          AX5    60          EXTEND SIGN
          BX7    X1-X5       ABSOLUTE VALUE 
          BX1    X1-X5       USE ABSOLUTE VALUE FOR CONVERSION
          SA7    DISABS      SAVE ABSOLUTE VALUE
          IX0    X4-X1
          SA2    DISBLK      THREE BLANKS 
          SX6    2R          TWO BLANKS 
          PL     X0,DIS2     IF WITHIN DECIMAL RANGE
  
*         PRINT MAXIMUM VALUE FOR DECIMAL CONVERSION
*         AND PRECEDE IT WITH THE NOTE  GT (LT IF VALUE NEGATIVE) 
  
          BX1    X4          USE MAXIMUM INSTEAD OF VALUE 
          SA2    DISGT       BLANK  GT
          PL     X5,DIS2     IF VALUE WAS POSITIVE
          SA2    DISLT       IF VALUE WAS NEGATIVE, BLANK  LT 
 DIS2     BSS 
          PL     X5,DIS3     IF VALUE WAS POSITIVE
          SX6    2R -        INSERT MINUS SIGN FOR NEG. NUMBER
 DIS3     BSS 
          LX6    30 
          BX7    X2+X6       COMPLETE FIRST FIVE CHARACTERS 
          SA7    MSGBUF      STORE FIRST FIVE CHARACTERS
          RJ     =XCDD       DECIMAL(CDD IN CCLSUB) 
  
*         CHECK FOR A VARIABLE WITH A DEFINED MINIMUM SIZE
*         AND INSERT ANY LEADING ZEROES THAT ARE REQUIRED.
  
          SA1    DISTIME
          SB3    X1 
          SB3    B2-B3
          PL     B3,DIS3.1   IF VALUE AT LEAST MINIMUM SIZE 
  
          SB2    X1          MINIMUM SIZE 
          LX4    B3          SHIFT RESULT TO ACCOMODATE EXTRA ZEROES
          SA1    =10H0000000000 
          SB3    B3+B1       FORM MASK
          MX0    1
          LX0    B3 
          BX4    -X0*X4      CLEAR SPACE FOR LEADING ZEROES 
          BX1    X0*X1       ISOLATE REQUIRED NUMBER OF ZEROES
          BX4    X1+X4       MERGE LEADING ZEROES WITH VALUE
  
 DIS3.1   BSS    0
  
*                B2  = 6*NUMBER OF CHARACTERS 
*                X4  = DISPLAY CODE(DECIMAL), LEFT JUSTIFIED, BLANK FILL
*                X6  = RIGHT JUSTIFIED - BLANK FILL 
  
          SB3    B2-B1
          MX1    1
          SA5    MSGBUF 
          AX1    X1,B3       FORM MASK
          BX4    X1*X4       CLEAR TRAILING BLANKS
          BX7    X4 
          MX0    30 
          LX7    30 
          LX4    30 
          BX7    -X0*X7      LEAVE FIRST 5 DIGITS IN LOWER HALF 
          BX6    X0*X4       LEAVE LAST 5 DIGITS IN UPPER HALF
          BX7    X5+X7
          SA6    MSGBUF+1    STORE LAST 5 DIGITS
          SA7    MSGBUF      STORE FIRST FIVE DIGITS IN FIRST WORD
  
*         THE DECIMAL DISPLAY CODE IS NOW AT MSGBUF.  IF THE VALUE
*         IS LARGE ENOUGH THEN THE SIXTH ETC. CHARACTERS ARE AT 
*         MSGBUF+1.  SINCE TEN IS THE MAXIMUM CHARACTERS THE LOWER
*         30 BITS OF MSGBUF+1 ARE ZERO. 
*         THE NEXT COMPONENT OF THE MESSAGE IS THE BLANKS AND POSSIBLY
*         A MINUS SIGN AT MSGBUF+2.  IF THE OCTAL DISPLAY REQUIRES
*         MORE THEN TEN CHARACTERS THEN THE UPPER CHARACTERS ARE
*         STORED AFTER THE BLANKS (AND MINUS SIGN) IN MSGBUF+2
*         AND MSGBUF+3.   THE THIRD COMPONENT OF THE MESSAGE IS THE 
*         LOWER TEN CHARACTERS OF THE OCTAL DISPLAY AND THE POST
*         RADIX OF B WHICH WILL BE STORED AT MSGBUF+4.
  
          SA1    EXPVAL 
          SA3    DISABS 
          SA2    DISBLK      THREE BLANKS 
          SX6    1R 
          PL     X1,DIS4     IF POSITIVE NUMBER 
          SX6    1R-         SET MINUS SIGN FOR THE OCTAL NUMBER
 DIS4     BSS 
          LX6    36 
          BX6    X2+X6       FOUR BLANKS OR THREE BLANKS AND MINUS
          SA6    MSGBUF+2 
          SA2    DISABS 
          MX0    30 
          BX1    X0*X2       UPPER HALF 
          LX1    30 
          ZR     X1,DIS5     IF LESS THAN 30 BITS 
  
          RJ     =XCOD       CONVERT UPPER HALF, (COD IS IN CCLSUB) 
  
*                B2  = 6*NUMBER OF CHARACTERS 
*                X4  = LEFT JUSTIFIED, BLANK FILL 
  
          SB3    B2-B1
          MX1    1
          AX1    X1,B3       FORM MASK
          BX4    X1*X4       NOW LEFT JUSTIFIED, ZERO FILL
          MX0    24 
          LX4    36 
          BX6    -X0*X4      EXTRACT UPPER SIX CHAR.
          BX7    X0*X4       LOWER FOUR CHAR. 
          SA5    MSGBUF+2 
          BX6    X5+X6
          SA6    MSGBUF+2 
          SA7    MSGBUF+3 
  
*         PROBLEM  -  THE CONVERSION ROUTINE WILL SUPPRESS LEADING ZEROS
*         HOWEVER THE LOWER 30 BITS OF A LARGE VALUE SHOULD NOT SUPPRESS
*         LEADING ZEROS BECAUSE THEY ARE NOT ACTUALLY LEADING.  TO GET
*         AROUND THIS EXAMINE THE BITS 29-27 AND IF ZERO MAKE A SPECIAL 
*         CALL TO COD WITH THE BITS SET TO ALL ONES.  THEN ON RETURN
*         CHANGE THE LEFT MOST CHARACTER TO A ZERO. 
  
          SA1    DISABS 
          MX0    30 
          BX1    -X0*X1 
          MX7    3
          LX7    30 
          BX6    X1*X7
          NZ     X6,DIS5     IF IT WILL CONVERT TO 10 CHAR. 
  
          BX1    X1+X7       MODIFY LEADING DIGIT TO A SEVEN
          RJ     =XCOD       CONVERT
  
*                B2  = 6*NUMBER OF CHARACTERS 
*                X4  = LEFT JUSTIFIED, BLANK FILL 
  
          MX7    6
          BX4    -X7*X4      CLEAR FIRST DIGIT
          SX0    1R0
          LX0    54 
          BX4    X0+X4       INSERT LEADING ZERO
          JP     DIS6        CONTINUE 
  
 DIS5     BSS 
          SA1    DISABS 
          MX0    30 
          BX1    -X0*X1      LOWER FIVE CHARACTERS
          RJ     =XCOD       CONVERT LOWER HALF, COD IS IN CCLSUB 
  
*         CHECK FOR A VARIABLE WITH A DEFINED MINIMUM SIZE
*         AND INSERT ANY LEADING ZEROES THAT ARE REQUIRED.
  
          SA1    DISTIME
          SB3    X1 
          SB3    B2-B3
          PL     B3,DIS6     IF VALUE AT LEAST MINIMUM SIZE 
  
          SB2    X1          MINIMUM SIZE 
          LX4    B3          SHIFT RESULT TO ACCOMODATE EXTRA ZEROES
          SA1    =10H0000000000 
          SB3    B3+B1       FORM MASK
          MX0    1
          LX0    B3 
          BX4    -X0*X4      CLEAR SPACE FOR LEADING ZEROES 
          BX1    X0*X1       ISOLATE REQUIRED NUMBER OF ZEROES
          BX4    X1+X4       MERGE LEADING ZEROES WITH VALUE
  
*                B2  = 6*NUMBER OF CHARACTERS 
*                X4  = LEFT JUSTIFIED, BLANK FILLED 
*                X6  = RIGHT JUSTIFIED - BLANK FILL 
  
 DIS6     BSS 
          SB3    B2-B1
          MX1    1
          SX6    1RB
          AX1    X1,B3       FORM MASK
          LX6    54 
          BX4    X1*X4       CLEAR TRAILING BLANKS
          AX0    X6,B2
          BX7    X4 
          SB7    60 
          GE     B2,B7,DIS7  IF TEN CHARACTERS
          BX7    X0+X4       ADD POST RADIX OF B
          MX6    0
 DIS7     BSS 
          SA7    MSGBUF+4    STORE LOWER TEN OCTAL CHAR.
          SA6    MSGBUF+5    STORE 0 OR POST RADIX(IF TEN). 
          SX3    MSGBUF 
          SX0    MSGBUF+2 
          SX1    MSGBUF+4 
          LX0    18 
          LX1    36 
          BX3    X3+X0
          BX3    X3+X1
 DIS7.1   BSS    0
          RJ     =XSTRMSG 
  
 DIS8     SA1    ANSSEP 
          SX7    1R.
          SX6    1R)
          BX7    X1-X7
          BX6    X1-X6
          ZR     X7,EXIT     IF PERIOD TERMINATOR 
  
          NZ     X6,DIS1     IF NOT TERMINATOR DISPLAY ANOTHER
  
          JP     EXIT 
  
 DISABS   BSS    1           TO STORE ABSOLUTE VALUE
 DISBLK   DATA   3L          THREE BLANKS 
 DISGT    DATA   3L GT
 DISLT    DATA   3L LT
 DISMAX   CON    9999999999  MAXIMUM VALUE FOR DECIMAL CONVERSION 
