0% encontró este documento útil (0 votos)
95 vistas3 páginas

4gl GET ENV

La función fgl_getenv() toma como argumento el nombre de una variable de entorno y devuelve el valor de dicha variable. Evalúa el argumento para buscar la variable de entorno solicitada y devolver su valor como cadena de caracteres. Si la variable no existe, devuelve NULL.

Cargado por

José Santana
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
95 vistas3 páginas

4gl GET ENV

La función fgl_getenv() toma como argumento el nombre de una variable de entorno y devuelve el valor de dicha variable. Evalúa el argumento para buscar la variable de entorno solicitada y devolver su valor como cadena de caracteres. Si la variable no existe, devuelve NULL.

Cargado por

José Santana
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 3

fgl_getenv()

fgl_getenv() toma un argumento de expresión de caracteres que es el nombre de la variable y


devuelve una cadena de caracteres, que es el valor de esta variable de entorno.

El argumento de fgl_getenv( ) debe ser una expresión de carácter que devuelva el nombre de una
variable de entorno. Para evaluar una llamada a fgl_getenv() , 4GL realiza las siguientes acciones
en tiempo de ejecución:
1.Evalúa el argumento de expresión de caracteres de fgl_getenv()

2.Busca entre las variables de entorno el valor devuelto


Si la variable solicitada existe, la función la devuelve como una cadena de caracteres y luego devuelve
el control de ejecución al contexto de llamada. De lo contrario, la función devuelve NULL.
El identificador de una variable de entorno no es una expresión 4GL, por lo que normalmente
especifica el argumento como una cadena entre comillas o una variable de carácter. Por ejemplo, esta
llamada evalúa el valor DBFORMAT:

fgl_getenv("FORMATODB")

Puede asignar el nombre de la variable de entorno a una variable de carácter y usar esa variable como
argumento de la función. Si declara una variable CHAR o VARCHAR llamada env_var y le asigna el
nombre de una variable de entorno, la llamada a fgl_getenv() podría verse así:

fgl_getenv(env_var)

Si el argumento es una variable de carácter, asegúrese de declararlo con el tamaño suficiente para
almacenar el valor de carácter devuelto por fgl_getenv() , de lo contrario, 4GL truncará el valor
devuelto.
Si la variable de entorno especificada no está definida, fgl_getenv() devuelve un valor nulo. Si la
variable de entorno está definida pero no tiene un valor asignado, fgl_getenv() devuelve espacios
en blanco.
Puede usar fgl_getenv() en cualquier lugar dentro de un programa 4GL para examinar el valor de
una variable de entorno.
El programa de ejemplo siguiente muestra el valor de la variable de entorno especificada por el
usuario. La variable de entorno se identifica mediante la variable de carácter env_variable y su
contenido se almacena en una variable llamada env_path:

MAIN
DEFINE
env CHAR(500),
env_variable CHAR(60),
output_string STRING
CALL fgl_winprompt(5, 2, "Enter the name of the environment variable", "",  60, 0) returning
env_variable
LET env = fgl_getenv(env_variable)
IF env is not NULL THEN -- check if environment variable exists
LET output_string = "The environment variable \""  ,env_variable clipped, "\" is set to:\n\n",  env
clipped
CALL fgl_winmessage("Info",output_string,"info")
ELSE
LET output_string = "The environment variable \""  ,env_variable clipped, "\" was not found!"
CALL fgl_winmessage("Warning",output_string,"warning")
END IF
END MAIN

There are various ways of answering this.


I'm sorely tempted to say "and that's why I wrote SQLCMD twenty (oh, grief; no, it's thirty now — 1986!)
thirty years ago". DB-Access is very useful for all sorts of purposes, but this sort of shell scripting is not its
forte, and SQLCMD was written to cover that deficiency.
NAME=$(sqlcmd -d davedb -e 'set isolation to dirty read' \
-e 'select site_name from site')
Assuming that getting hold of SQLCMD (note, this is not the Microsoft johnny-come-lately program of the
same name) is not an option, then you'll want to consider how to tweak DB-Access into submission. It does its
utmost to fight back!
Given that you want to capture the name in a shell variable, you can perhaps use:
cat <<'EOF' |
SET ISOLATION TO DIRTY READ;
OUTPUT TO "/dev/stdout" WITHOUT HEADINGS SELECT site_name FROM site;
EOF
dbaccess davedb - 2>/dev/null |
tr -d ' \n'

También podría gustarte