Hi all,
We are using a Z/OS callable services (BPX1SPN) to create a child process
to run a specified executable file (ssh to be exact) from PL/I program.
According to the manual z/OS V1R4.0 UNIX System Services Programming:
Assembler Callable Service Reference the arguments must be coded :
a) Argument_count must be integer-fullword (DCL ARGUMENT_COUNT BIN FIXED
(31); if coded in PL/I).
Argument_count
Supplied parameter
Type: Integer
Length: Fullword
The name of a fullword that contains the number of pointers in the
lists for the Argument_length_list and the Argument_list. If the
program needs no arguments, specify 0.
b) Argument_length_list must be a structure of pointers that gives the
address of fullwords that gives the length of the arguments that is to be
passed to BPX1SPN (DCL ARGUMENT_LENGTH_LIST(10) POINTER; if coded in
PL/I).
Argument_length_list
Supplied parameter
Type: Structure
Length: Variable
The name of a list of pointers. Each pointer in the list is the
address of a fullword that gives the length of an argument that is to
be passed to the specified program. If the program needs no arguments,
specify 0.
c) Argument_list must be a structure of pointers that gives the address of
fullwords that gives the character string that is to be passed to BPX1SPN
(DCL ARGUMENT_LIST(10) POINTER; if coded in PL/I).
Argument_list
Supplied
parameter
Type:
Structure
Length: Variable specified by
Argument_length_list
The name of a list of pointers. Each pointer in the list is
the
address of a character string that is an argument to be passed to
the
specified program. Each argument is of the length that is
specified
by the corresponding element in the Argument_length_list. If
the
program needs no arguments, specify
0.
In our case, we are informing these variables like the exemple :
DCL ARGUMENT_COUNT BIN FIXED(31);
DCL ARGUMENT_LENGTH_LIST(1) POINTER;
DCL ARGUMENT_LENGTH(1 ) BIN FIXED(31);
DCL ARGUMENT_LIST(1) CHAR(255);
DCL ARGUMENT_LISTP(1) POINTER;
PATHNAME_LENGTH = 8;
PATHNAME = '/bin/ssh';
ARGUMENT_COUNT = 1;
ARGUMENT_LENGTH(01) = 19;
ARGUMENT_LENGTH_LIST(01) = ADDR(ARGUMENT_LENGTH(01));
ARGUMENT_LIST(01) = '[EMAIL PROTECTED] ls';
ARGUMENT_LISTP(01) = ADDR(ARGUMENT_LIST(01));
CALL BPX1SPN ( PATHNAME_LENGTH,
PATHNAME,
ARGUMENT_COUNT,
ARGUMENT_LENGTH_LIST,
ARGUMENT_LISTP,
ENVIRONMENT_COUNT,
ENVIRONMENT_DATA_LENGTHP,
ENVIRONMENT_DATA_LISTP,
FILEDESC_COUNT,
FILEDESC_LIST,
INHERIT_AREA_LEN,
INHERIT_AREA,
RETURN_VALUE,
RETURN_CODE,
REASON_CODE);
Although the return_code returns a valid PID, the arguments aren't
recognized by the command and the result isn't valid (we look at the
stdout fd).
BROWSE -- /SYSTEM/tmp/lcp.fd2 ---------------------- Line 00000000 Col
001 080
Command ===> Scroll ===>
CSR
********************************* Top of Data
**********************************
Usage: [EMAIL PROTECTED] ls Ýoptions~ host
Ýcommand~
Options:
-l user Log in using this user
name.
-n Redirect input
from /dev/null.
-F config Config file (default:
¨/.ssh/config).
-A Enable authentication agent
forwarding.
-a Disable authentication agent forwarding
(default).
-X Enable X11 connection
forwarding.
-x Disable X11 connection forwarding
(default).
-i file Identity for public key authentication (default:
¨/.ssh/identity)
Does anybody know where is the problem?
Thanks.
Josan Cardenosa
z/OS System Engineer
"la Caixa"
Barcelona - Spain
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html