HP 3000 Manuals

func asc [ System Debug Reference Manual ] MPE/iX 5.0 Documentation


System Debug Reference Manual

func asc 

Evaluates an expression and converts the result to an ASCII string.

Syntax 

      asc (value [formatspec])

Formal Declaration 

      asc:str (value:any [formatspec:str = "])

Parameters 

value            The expression to be formatted.

 formatspec      An optional format specification string can be specified
                 in order to select specific output base, left or right
                 justification, blank or zero fill, and field width.

                 A format specification string is a list of selected
                 format directives, optionally separated by blanks or
                 commas in order to avoid ambiguity.

                   "directive1 directive2, directive3 directive4 ...  "

                 The following table lists the supported format
                 directives which can be entered in upper- or lower-case:

                 +       Current output base ($, #, or % prefix
                         displayed)
                 -       Current output base (no prefix)
                 +<      Current input base ($, #, or % prefix displayed)
                 -<      Current input base (no prefix)

                 $       Hex output base ($ prefix displayed)
                 #       Decimal output base (# prefix displayed(
                 %       Octal output base (% prefix displayed)
                 H       Hex output base (no prefix)
                 D       Decimal output base (no prefix)
                 O       Octal output base (no prefix)

                 A       ASCII base (use "." for non-printable chars)
                 N       ASCII base (loads actual non-printable chars)

                 L       Left justified
                 R       Right justified

                 B       Blank filled
                 Z       Zero filled

                 M       Minimum field width, based on value
                 F       Fixed field width, based on the type of value
                 Wn      User specified field width n 

                 T       Typed (display the type of the value)
                 U       Untyped (do not display the type of the value)

                 QS      Quote single (surround w/ single quotes)
                 QD      Quote double (surround w/ double quotes)
                 QO      Quote original (surround w/ original quote
                         character)
                 QN      Quote none (no quotes)

                 The M directive (minimum field width) selects the
                 minimum possible field width necessary to format all
                 significant digits (or characters in the case of string
                 inputs).

                 The F directive (fixed field width) selects a fixed
                 field width based on the type of the value and the
                 selected output base.  Fixed field widths are listed in
                 the following table:

-----------------------------------------------------------------------------------------------------
|       Types       |     hex($,H)      |     dec(#,D)      |     oct(%,O)      |    ascii(A,N)     |
-----------------------------------------------------------------------------------------------------
|      S16,U16      |         4         |         6         |         6         |         2         |
-----------------------------------------------------------------------------------------------------
|      S32,U32      |         8         |        11         |        11         |         4         |
-----------------------------------------------------------------------------------------------------
|        S64        |        16         |        20         |        22         |         8         |
-----------------------------------------------------------------------------------------------------
|       SPTR        |         8         |        11         |        11         |         4         |
-----------------------------------------------------------------------------------------------------
|       LPTR        |        8.8        |       11.11       |       11.11       |         8         |
-----------------------------------------------------------------------------------------------------
|   ACPTR, LCPTR    |        8.8        |       11.11       |       11.11       |         8         |
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
|        STR        |                      field width = length of the string                       |
-----------------------------------------------------------------------------------------------------

                 The Wn directive (variable field width) allows the user
                 to specify the desired field width.  The W directive can
                 be specified with an arbitrary expression.  If the
                 specified width is less than the minimum necessary width
                 to display the value, then the user width is ignored,
                 and the minimum width is used instead.  All significant
                 digits are always printed.  For example:

                      number:"w6"
                      number:"w2*3"

                 The number of positions specified (either by Wn or F)
                 does not include the characters required for the radix
                 indicator (if specified) or sign (if negative).  Also,
                 the sign and radix indicator is always positioned just
                 preceding the first (leftmost) character.

                 Zero versus blank fill applies to leading spaces (for
                 right justification) only.  Trailing spaces are always
                 blank filled.

                 In specifications with quotes, the quotes do not count
                 in the number of positions specified.  The string is
                 built such that it appears inside the quotes as it would
                 without the quotes.

                 The T directive (typed) displays the type of the value,
                 preceding the value.  The U directive (untyped)
                 suppresses the display of the type.  Types are displayed
                 in uppercase, with a single trailing blank.  The width
                 of the type display string varies, based on the type,
                 and it is independent of any specified width (M, F, or
                 Wn) for the value display.

                 For values of type LPTR (long pointer, sid.offset, or
                 seg.offset) two separate format directives can be
                 specified, separated by a dot ".", to indicate
                 individual formatting choices for the "sid" portion and
                 the "offset" portion This is true for all code pointers
                 (ACPTR - Absolute Code pointers:  CST, CSTX;  LCPTR -
                 Logical Code Pointers:  PROG, GRP, PUB, LGRP, LPUB, SYS,
                 USER, TRANS). For example:

                      pc:"+.-, w4.8, r.l, b.z"

                 The following default values are used for omitted format
                 directives.  Note that the default format directives
                 depend on the type of value to be formatted:

                          value type                 default format
                          ----------                 --------------

                          STR, BOOL                  - R B M U
                          U16,S16,U32,S32,S64        + R B M U
                          SPTR                       + R Z F U
                          LPTR                       +.-  R.L  B.Z  M.F  U
                           ACPTR    LCPTR            +.-  R.L  B.Z  M.F  T
                            CST      PROG            +.-  R.L  B.Z  M.F  T
                            CSTX     GRP             +.-  R.L  B.Z  M.F  T
                                     PUB             +.-  R.L  B.Z  M.F  T
                                     LGRP            +.-  R.L  B.Z  M.F  T
                                     LPUB            +.-  R.L  B.Z  M.F  T
                                     SYS             +.-  R.L  B.Z  M.F  T
                                     USER            +.-  R.L  B.Z  M.F  T
                                     TRANS           +.-  R.L  B.Z  M.F  T

                 Note that absolute and logical code pointers display
                 their types (T) by default.  All other types default to
                 (U) untyped.

                 The Cn (column n) directive moves the current output
                 buffer position to the specified column position prior
                 to the next write into the output buffer.  Column
                 numbers start at column 1.  For example:

                      number:"c6"

                 Note:  The Cn directive is ignored by the ASC function
                 but is honored by the W, WL and WP commands.

Examples 

     $nmdat > var number u32(123) 
     $nmdat > wl asc(number) 
     $123
     $nmdat > wl asc(number,"-") 
     123
     $nmdat > wl asc(number,"t") 
     U32 $123
     $nmdat > wl asc(number "#") 
     #291
     $nmdat > wl asc(number, 'd') 
     291
     $nmdat > wl asc(number  'fr') 
          $123
     $nmdat > wl asc(number, "r,w6,-,z") 
     000123

Several examples of formatting an unsigned 32-bit value.

     $nmdat > var s1="test" 
     $nmdat > wl asc(s1) 
     test
     $nmdat > wl asc(s1, "QS") 
     'test'
     $nmdat > wl asc(s1  "QO") 
     "test"
     $nmdat > wl asc(s1  "t") 
     STR test
     $nmdat > wl asc(s1  "w2") 
     test
     $nmdat > wl asc(s1, "w2*4,r") 
         test
     $nmdat > var curwidth 8 
     $nmdat > wl asc(s1  'wcurwidth, r QD') 
     "    test"

Several examples of formatting a string.

     $nmdat > var long 2f.42c8 

     $nmdat > wl asc(long) 
     $2f.000042c8
     $nmdat > wl asc(long, "t") 
     LPTR $2f.000042c8
     $nmdat > wl asc(long, "-.+") 
     2f.$000042c8
     $nmdat > wl asc(long, "#.$ m.m") 
     #47.$42c8
     $nmdat > wl asc(long, "r.r, f.m z") 
     0000002f.42c8
     $nmdat > wl asc(long, "r.r w6.6 z.z") 
     00002f.0042c8
     $nmdat > wl asc(long, 'r.r  w6.2*3  z.z  qd') 
     "00002f.0042c8"
     $nmdat > wl asc(long, 'r.r,w(2*3).(4+2),b.b,$.$') 
         $2f.  $42c8

     $nmdat > var width 6.6 
     $nmdat > wl asc(long, 'r.l Wwidth, b.b, $.$') 
     $2f    .  $42c8

Several examples of formatting a long pointer.

Limitations, Restrictions 

none



MPE/iX 5.0 Documentation