MODULE dpm$display_helpers;
?? RIGHT := 110 ??

{ PURPOSE:
{   This Module contains requests to convert integers to strings and other stuff to
{   display messages from monitor.

?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc oss$mainframe_wired_literal
*copyc ost$halfword
*copyc ost$status
?? POP ??
?? OLDTITLE ??
?? NEWTITLE := 'Global Declarations Declared By This Module', EJECT ??

  VAR
    v$divisor_octal: [READ, oss$mainframe_wired_literal] array [1 .. 6] of
          integer := [1, 8, 64, 512, 4096, 32768],
    v$divisor_dec: [READ, oss$mainframe_wired_literal] array [1 .. 4] of integer := [1, 10, 100, 1000],
    v$divisor_hex: [READ, oss$mainframe_wired_literal] array [1 .. 8] of
          integer := [1, 10(16), 100(16), 1000(16), 10000(16), 100000(16), 1000000(16), 10000000(16)];

?? OLDTITLE ??
?? NEWTITLE := '[xdcl] DPP$CONVERT_INT_TO_STR_HEX', EJECT ??

  PROCEDURE [XDCL] dpp$convert_int_to_str_hex
    (    number_of_characters: 1 .. 8;
         word: 0 .. 0ffffffff(16);
     VAR msg: string ( * ));

    VAR
      i: integer,
      k: integer,
      value: integer;

    k := 1;
    FOR i := number_of_characters DOWNTO 1 DO
      value := (word DIV v$divisor_hex [k]) MOD 16;
      IF value > 9 THEN
        value := value + 7;
      IFEND;
      msg (i) := $CHAR (value + $INTEGER ('0'));
      k := k + 1;
    FOREND;

  PROCEND dpp$convert_int_to_str_hex;
?? OLDTITLE ??
?? NEWTITLE := '[xdcl] DPP$CONVERT_INT_TO_STR_DEC', EJECT ??

  PROCEDURE [XDCL] dpp$convert_int_to_str_dec
    (    number_of_characters: 1 .. 4;
         word: 0 .. 0ffff(16);
     VAR msg: string ( * ));

    VAR
      i: integer,
      k: integer;

    k := 1;
    FOR i := number_of_characters DOWNTO 1 DO
      msg (i) := $CHAR (((word DIV v$divisor_dec [k]) MOD 10) + $INTEGER ('0'));
      k := k + 1;
    FOREND;

  PROCEND dpp$convert_int_to_str_dec;
?? OLDTITLE ??
?? NEWTITLE := '[xdcl] DPP$CONVERT_INT_TO_STR_OCTAL', EJECT ??

  PROCEDURE [XDCL] dpp$convert_int_to_str_octal
    (    number_of_characters: 1 .. 6;
         word: 0 .. 0ffff(16);
     VAR msg: string ( * ));

    VAR
      i: integer,
      k: integer;

    k := 1;
    FOR i := number_of_characters DOWNTO 1 DO
      msg (i) := $CHAR (((word DIV v$divisor_octal [k]) MOD 8) + $INTEGER ('0'));
      k := k + 1;
    FOREND;

  PROCEND dpp$convert_int_to_str_octal;
?? OLDTITLE ??
MODEND dpm$display_helpers;
