Sponsored Content
Top Forums Programming solaris appl migration: sprintf decimal separator Post 302313018 by coldas57 on Monday 4th of May 2009 11:24:23 AM
Old 05-04-2009
solaris appl migration: sprintf decimal separator

Hi,

I am trying to migrate an application from Solaris to AIX 5.3.1. In both platforms the locale settings are as follows:

Result of executing "locale"
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"

In solaris when you execute this program (this is a sample, in the original code there are lots of classes but at the end they call sprintf function to fill a char[] variable):

Code:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char * argv[])
{
    char cadena[25];
    double a = 0;

    memset(cadena,0,sizeof(cadena));

    sprintf(cadena, "%-f", a);
    printf("The content is : %s\n", cadena);
}

In AIX I am compiling this code (main.cpp) with:

IBM XL C/C++ Enterprise Edition for AIX, V9.0
Version: 09.00.0000.0007


In solaris the output is :

0,000000 -> with a comma separator

But in AIX when I try to execute this, the result is:

0.000000 -> with a point separator

I am trying to migrate the code having in mind the idea of not touching the original code. Any idea?,

Thank you in advance for your attention and time.
David
 

10 More Discussions You Might Find Interesting

1. Solaris

problem with sprintf snprintf in Solaris

******************************** Following is not the real issue. The issue is with popen. Plz continue forward with the thread to get a better picture. ******************************** Hi, I am working on a customised ftp application. In it we have used sprintf to store a UNIX command... (7 Replies)
Discussion started by: diganta
7 Replies

2. Solaris

Migration Solaris 5.8 to 10

Hi, it is necessary to make the migration of Solaris 5.8 for Solaris 10, would like to know which the best form to execute this task, if to be able to say me where I can arrange some manual that helps me to make this task. Thanks :o (2 Replies)
Discussion started by: bruno_a_correia
2 Replies

3. UNIX for Advanced & Expert Users

Solaris migration

Hi , There is going to be a server migration from Solaris 8.0 to Solaris10.0. Could anyone give me some tips and documents regarding the steps to be remembered,tips to be followed etc. like syntax differences any new changes to the existing commands and tools we use whatever the... (1 Reply)
Discussion started by: mohanpadamata
1 Replies

4. HP-UX

Migration from HP-UX to Solaris/Linux

Hi eveyone Ours is an application hosted on HP-UX 11 and we are trying to migrate the server to different flavour of UNIX. We are actually looking at the option of migrating it to Sun Solaris or Linux. We are trying to evaulate the pros and cons of migrating our application to Solaris/Linux.... (6 Replies)
Discussion started by: turaga.krishna
6 Replies

5. Solaris

Migration from solaris 8 to 10

Hello, We have upgraded our system from SunOS 5.8 to Solaris 10. I would like to know if the applications (written in c, c++, pro*c, java,..) running on the 5.8 can run on the Solaris 10 without code modification or the need to be recompiled ? thanks you for your help. (4 Replies)
Discussion started by: Jidma
4 Replies

6. Solaris

Storage Migration on Solaris server

Hi All, I need your help urgently. Below I have given the brief description of the Architecture and the Problem. The brief details of the architecture: We have 5 Containers(Non-Global Zones) running on one T5220 Box. The Global Zone is running Solaris 10. The Non-global Zones are... (6 Replies)
Discussion started by: kamaldeep1986
6 Replies

7. Solaris

Migration from AIX to Solaris

Hi All, We are planing to do a migration of our server from AIX 5.3 to Solaris (Linux). But we are not aware about the gap between the both and also impact of that gap. We want to migrate following things, - Common directories setup (like control-M, emer,sysout, and others) - Inbound &... (1 Reply)
Discussion started by: vinod369
1 Replies

8. Linux

Migration from solaris to linux

Hi, Currently I can able to access php script from solaris. I want to access from Linux I have done the following things: 1) I have copied all the scripts from solaris to linux. 2) I have installed php,mysql,apache. I tried with http://Hostname/username/test.php . This is not working .... (6 Replies)
Discussion started by: Mani_apr08
6 Replies

9. Solaris

Migration of Solaris 10 on physical host to Solaris Zones

Hi All Kindly let me know how can I move Solaris 10 OS running update 10 on physical machine to another machine solaris zone running Solaris 10 update 11 (2 Replies)
Discussion started by: amity
2 Replies

10. Solaris

Migration from AIX to Solaris

We are going to work on a project which aims at migrating set of applications from AIX to Solaris. The major portion of the source code involves C, C++, Shell/PERL scripts and Oracle database. We are grateful hear about any commercial tools available for porting AIX to Solaris. Another... (2 Replies)
Discussion started by: Namitap
2 Replies
setlocale(3C)															     setlocale(3C)

NAME
setlocale - modify and query a program's locale SYNOPSIS
#include <locale.h> char *setlocale(int category, const char *locale); The setlocale() function selects the appropriate piece of the program's locale as specified by the category and locale arguments. The cate- gory argument may have the following values: LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_MESSAGES, and LC_ALL. These names are defined in the <locale.h> header. The LC_ALL variable names all of a program's locale categories. The LC_CTYPE variable affects the behavior of character handling functions such as isdigit(3C) and tolower(3C), and multibyte character functions such as mbtowc(3C) and wctomb(3C). The LC_NUMERIC variable affects the decimal point character and thousands separator character for the formatted input/output functions and string conversion functions. The LC_TIME variable affects the date and time format as delivered by ascftime(3C) cftime(3C) getdate(3C) strftime(3C) and strptime(3C) The LC_COLLATE variable affects the sort order produced by collating functions such as strcoll(3C) and strxfrm(3C) The LC_MONETARY variable affects the monetary formatted information returned by localeconv(3C). The LC_MESSAGES variable affects the behavior of messaging functions such as dgettext(3C), gettext(3C), and gettxt(3C). A value of "C" for locale specifies the traditional UNIX system behavior. At program startup, the equivalent of setlocale(LC_ALL, "C") is executed. This has the effect of initializing each category to the locale described by the environment "C". A value of "" for locale specifies that the locale should be taken from environment variables. The order in which the environment variables are checked for the various categories is given below: +---------------+----------------+----------------+---------------+ |Category | 1st Env Var |2nd Env Var |3rd Env Var | +---------------+----------------+----------------+---------------+ |LC_CTYPE: | LC_ALL |LC_CTYPE |LANG | +---------------+----------------+----------------+---------------+ |LC_COLLATE: | LC_ALL |LC_COLLATE |LANG | +---------------+----------------+----------------+---------------+ |LC_TIME: | LC_ALL |LC_TIME |LANG | +---------------+----------------+----------------+---------------+ |LC_NUMERIC: | LC_ALL |LC_NUMERIC |LANG | +---------------+----------------+----------------+---------------+ |LC_MONETARY: | LC_ALL |LC_MONETARY |LANG | +---------------+----------------+----------------+---------------+ |LC_MESSAGES: | LC_ALL |LC_MESSAGES |LANG | +---------------+----------------+----------------+---------------+ If a pointer to a string is given for locale, setlocale() attempts to set the locale for the given category to locale. If setlocale() suc- ceeds, locale is returned. If setlocale() fails, a null pointer is returned and the program's locale is not changed. For category LC_ALL, the behavior is slightly different. If a pointer to a string is given for locale and LC_ALL is given for category, setlocale() attempts to set the locale for all the categories to locale. The locale may be a simple locale, consisting of a single locale, or a composite locale. If the locales for all the categories are the same after all the attempted locale changes, setlocale() will return a pointer to the common simple locale. If there is a mixture of locales among the categories, setlocale() will return a composite locale. Upon successful completion, setlocale() returns the string associated with the specified category for the new locale. Otherwise, setlo- cale() returns a null pointer and the program's locale is not changed. A null pointer for locale causes setlocale() to return a pointer to the string associated with the category for the program's current locale. The program's locale is not changed. The string returned by setlocale() is such that a subsequent call with that string and its associated category will restore that part of the program's locale. The string returned must not be modified by the program, but may be overwritten by a subsequent call to setlocale(). No errors are defined. /usr/lib/locale/locale locale database directory for locale See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |CSI |Enabled | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |MT-Safe with exceptions | +-----------------------------+-----------------------------+ locale(1), ctype(3C), getdate(3C) gettext(3C), gettxt(3C), isdigit(3C), localeconv(3C), mbtowc(3C), strcoll(3C), strftime(3C), strptime(3C) strxfrm(3C) tolower(3C), wctomb(3C), libc(3LIB), attributes(5), environ(5), locale(5), standards(5) It is unsafe for any thread to change locale (by calling setlocale() with a non-null locale argument) in a multithreaded application while any other thread in the application is using any locale-sensitive routine. To change locale in a multithreaded application, setlocale() should be called prior to using any locale-sensitive routine. Using setlocale() to query the current locale is safe and can be used any- where in a multithreaded application except when some other thread is changing locale. It is the user's responsibility to ensure that mixed locale categories are compatible. For example, setting LC_CTYPE=C and LC_TIME=ja (where ja indicates Japanese) will not work, because Japanese time cannot be represented in the "C" locale's ASCII codeset. 19 Sep 2005 setlocale(3C)
All times are GMT -4. The time now is 07:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy