HP OpenVMS Systemsask the wizard |
The Question is: The DCL RUN (detached) PROCESS command does not support passing arguments to main( argc, argv). Neither does SYS$CREPRC(). How can I pass args to main() of a detached process without using SUBMIT? How does SUBMIT do it? Thank you very much. The Answer is : SUBMIT does not pass arguments to an image running a detached process, rather it passes arguments to the CLI of a detached process. See F$GETQUI function "DISPLAY_ENTRY" item codes "PARAMETER_1" through "PARAMETER_8". This mechanism is completely different from the C language specific argc/argv mechanism, though argc/argv also depends on the CLI to communicate the arguments to the running program. The command "RUN/DETACHED image" creates a process running the specified image WITHOUT a CLI. This means there are a number of features which cannot be used within this image. For example, LIB$SPAWN, LIB$SET_LOGICAL and argc/argv among others. It is not necessary to use SUBMIT to pass arguments to a detached process, but it IS necessary to have a process running under a CLI. This can be achieved by specifying the image SYS$SYSTEM:LOGINOUT.EXE to the RUN command and feeding it DCL commands through SYS$INPUT. For example DETACH.COM $ myprog="$device:[directory]myprog.exe" ! Define foreign command $ myprog arg1 arg2 arg3 ! invoke the image with args $ EXIT Command to start the detached process $ RUN/DETACHED/INPUT=device:[directory]DETACH.COM SYS$SYSTEM:LOGINOUT.EXE Depending on the exact needs, you may find it necessary to dynamically generate the input command procedure to change argument values. Or you could pass the commands and the parameters to the created process via an input mailbox, reading output data back via another mailbox. You may also be able to use DECnet task-to-task (client-server network communications), or a webserver CGI script or other similar approach. Or a file. Within DCL, examples of client-server network communcations are available in the OpenVMS documentation set and within the Digital Press Writing Real Programs in DCL book. Network communications are covered in the DECnet documentation as well as the TCP/IP Programming documentation. Existing discussions of the f$getqui lexical include the following topics: (813), (1240), (2159), (3951), (4546), (4568), (4903), (5188) (5471), (5567), (5651), (5793), (5982), (6315), (6877), etc.
|