HP OpenVMS Systemsask the wizard |
The Question is:
Am trying to migrate a application written in DEC vax6.2 to aplha vms v7.2.
Basically am facing some problems related to RTL's - for example the below
piece of code written in v6.2, when executed in v7.2 it crashes. Could you
please provide me a solution to this problem:
#include <ssdef>
#include <jpidef>
int sc_pid, test_pid, ret_status;
short int result_len;
....
....
....
ret_status = LIB$GETJPI( JPI$_PID,
&sc_pid,"",
&test_pid,"",
&result_len);
...
...
The Answer is :
The OpenVMS Wizard will assume that "crash" here means that the code
fails at run-time, and that the code probably fails with an access
violation (ACCVIO) error. (When posting, a complete and concise example
and the exact message(s) received can be quite useful -- otherwise, the
Wizard must guess at the error and at the problem, and might well guess
incorrectly.)
The itemcode argument is passed by reference, not value.
When the process name and resultant string arguments are not required,
specify them as zero -- and not as the address of a zero-length constant
string.
Here is an example of calling lib$getjpi:
#include <jpidef.h>
#include <lib$routines.h>
#include <ssdef.h>
#include <stsdef.h>
main()
{
int InputPid, OutputPid, RetStat;
unsigned short int RetLen;
InputPid = 0;
RetStat = lib$getjpi( &JPI$_PID,
&InputPid,
0,
&OutputPid,
0,
&RetLen );
if (!$VMS_STATUS_SUCCESS( RetStat ))
return RetStat;
return SS$_NORMAL;
}
|