![]() Chapter Contents |
![]() Previous |
![]() Next |
| putenv |
| Portability: | UNIX compatible |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| CAUTION | |
| PORTABILITY | |
| USAGE NOTES | |
| EXAMPLE | |
| RELATED FUNCTIONS | |
| SEE ALSO |
| SYNOPSIS |
#include <lclib.h> int putenv(const char *string);
| DESCRIPTION |
The
putenv
function creates an environment variable with a specified name and
value, or replaces an existing environment variable with a new value. The
name and value are specified by the string pointed to by the argument
string
. For example,
| [[scope]:] [groupname].]varname[=value] |
For portable use, the scope and groupname parts of the string must be omitted, and a value must be present. The parts are
| PRogram | |
| External (or STorage) | |
| PErmanent (or Lasting) | |
| SEssion. |
scope is not case sensitive. The uppercase letters indicate the minimum abbreviation that may be specified for the scope name. See Environment Variables for a definition of the environment-variable scopes. The SEssion scope is CMS specific and refers to GLOBALV SESSION variables. For all other systems, a SEssion-scope specification is treated as if it were an External-scope specification. If you do not specify scope, PRogram scope is assumed. Scopes other than PRogram are valid only under TSO, CMS, and CICS.
""
is assumed. For nonprogram-scope variables, the value is truncated
if it is longer than supported for that scope.
| RETURN VALUE |
putenv
returns 0 if successful or -1 if unsuccessful.
| CAUTION |
Do not modify the environment by changing
the external variable
environ
or the data
it points to in a program that uses
putenv
.
The
putenv
function may cause the value
of
environ
to change.
| PORTABILITY |
putenv
is defined by many UNIX and MS-DOS C compilers. Scopes and groups for environment
variables are SAS/C extensions.
| USAGE NOTES |
You can define the same variable name
in more than one scope. However,
getenv
always returns the value of shortest duration. For example, if a program-scope
variable is defined,
getenv
always returns
its value.
| EXAMPLE |
This example creates an environment variable
named
HOME
, if it does not already exist,
and then invokes an USS shell command:
#include <stdio.h>
#include <lclib.h>
#include <lcstring.h>
main()
{
char home[17]
char cmd[300]
int rc;
/* if environment variable HOME not defined */
if (!getenv("HOME")) {
strcpy(home, "HOME=/u/");
cuserid(home+8); /* Append userid to directory name. */
strlwr(home); /* Translate to lowercase letters. */
rc = putenv(home); /* Define HOME environment variable. */
if (rc !=0) {
perror("putenv failure");
exit(EXIT_FAILURE);
}
}
puts("Enter shell command");
memcpy(cmd, "//sh:", 5); /* prefix for system function */
gets(cmd+5);
rc = system(cmd); /* Invoke the shell command. */
printf("shell command status code was %d.n", rc);
}
| RELATED FUNCTIONS |
| SEE ALSO |
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.