DEFINITION MODULE ForeignCommand;

(*
 This module provides an easy interface to a foreign command line in VMS.
 A foreign command comes from a simple DCL symbol definition of the form:

        command :== $device:[directory]program

 then the program is run like this:

        command  abc def

  or

        command
        prompt? abc def

 All parsing of options must be done by the user.
*)

(* V1.0, J. Andrea, May.4/92 *)
(* This code may be freely used and distributed, it may not be sold. *)

EXPORT QUALIFIED ReadCommand, NOptions, GetAll, GetOption;


PROCEDURE ReadCommand( prompt :ARRAY OF CHAR );
(* First step in getting options, this must be called before GetOption   *)
(* and should be called only once. The prompt is shown if the user types *)
(* the command line with no options. *)


PROCEDURE NOptions() :CARDINAL;
(* return the number of options given *)


PROCEDURE GetAll( VAR whole_line :ARRAY OF CHAR; VAR length :CARDINAL );
(* Return the whole command line, and its length *)


PROCEDURE GetOption( i :CARDINAL; VAR option :ARRAY OF CHAR;
                                  VAR length :CARDINAL );
(* Get the i'th option string, need not be called in order *)
(* A returned 'length' of zero means that that option is not available. *)

END ForeignCommand.
