HP OpenVMS Systemsask the wizard |
The Question is: Is there a simple way to format numbers with commas (9,999,999) for a DCL command procedure output report? Maybe using the F$FAO lexical? The Answer is :
No capabilities to format integers through the insertion of commas or
periods (or other characters) presently exist within the OpenVMS system
service sys$fao, nor within the associated f$fao DCL lexical function.
Explicit DCL code to format the integer, or the creation and the use of
an executable image that accepts and processes the input integer and
provides the resulting string via DCL symbol(s), will be required.
The OpenVMS Wizard will log a request to enhance OpenVMS.
The following DCL loop will provide the required comma insertions..
$X=P1
$L=F$LEN(x)
$
$loop:
$L = L - 3
$IF L.GT.0
$THEN
$ X = F$EXT(0,L,X) + "," + f$EXT(L,99,X)
$ GOTO loop
$ENDIF
$
$WRITE SYS$OUTPUT x
...as will the following C code...
#include [locale.h]
#include [stdio.h]
#include [stdlib.h]
main(int argc, char** argv){
setlocale(LC_ALL,"en_US.ISO8859-1");
printf("%'d\n",atoi(argv[1]));
}
Please note that the C code include statement syntax is incorrect,
having been deliberately altered to permit display via web browsers.
(Replace the square brackets with angle brackets before compilation.)
|