Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

NLSFormatNumber

NLS Function: Returns a correctly formatted number string for the current locale. This routine is only available for Windows.

Module

USE IFNLS

result = NLSFormatNumber (outstr, instr [, flags])

outstr

(Output) Character*(*). Is a string containing the correctly formatted number for the current locale. If outstr is longer than the formatted number, it is padded with blanks.

instr

(Input) Character*(*). Is a number string to be formatted. It can only contain the characters '0' through '9', one decimal point (a period) if a floating-point value, and a minus sign in the first position if negative. All other characters are invalid and cause the function to return an error.

flags

(Input; optional) INTEGER(4). If specified, modifies the number conversion. If you omit flags, the flag NLS$Normal is used. Available values (defined in IFNLS.F90) are:

  • NLS$Normal - No special formatting

  • NLS$NoUserOverride - Do not use user overrides

Results

The result type is INTEGER(4). The result is the number of characters written to outstr (bytes are counted, not multibyte characters).

If an error occurs, the result is one of the following negative values:

  • NLS$ErrorInsufficentBuffer - outstr buffer is too small

  • NLS$ErrorInvalidFlags - flags has an illegal value

  • NLS$ErrorInvalidInput - instr has an illegal value

Example

 USE IFNLS
 CHARACTER(40) str
 INTEGER(4) i
 i = NLSFormatNumber(str, "1.23")
 print *, str                            ! prints 1.23
 i = NLSFormatNumber(str, "1000000.99")
 print *, str                            ! prints 1,000,000.99
 i = NLSSetLocale("Spanish", "Spain")
 i = NLSFormatNumber(str, "1.23")
 print *, str                            ! prints 1,23
 i = NLSFormatNumber(str, "1000000.99")
 print *, str                            ! prints 1.000.000,99
 END