(*************************************************************************

     $RCSfile: RexxUtil.mod $
  Description: Rexx Variable Interface
     Requires: The object file rexxvars.o must be explicitly linked with
               the program.

   Created by: fjc (Frank Copeland)
    $Revision: 3.2 $
      $Author: fjc $
        $Date: 1994/08/08 16:10:59 $

  Copyright © 1994, Frank Copeland.
  This file is part of the Oberon-A Interface.
  See Oberon-A.doc for conditions of use and distribution.

*************************************************************************)

MODULE RexxUtil;

(*
** $C- CaseChk       $I- IndexChk  $L+ LongAdr   $N- NilChk
** $P- PortableCode  $R- RangeChk  $S- StackChk  $T- TypeChk
** $V- OvflChk       $Z- ZeroVars
*)

IMPORT
  SYS := SYSTEM,
  e   := Exec,
  rx  := Rexx;

(*------------------------------------*)
PROCEDURE CheckRexxMsg * ["CheckRexxMsg"]
  ( rexxmsg [8] : rx.RexxMsgPtr )
  : BOOLEAN;


(*------------------------------------*)
(* Secondary result is returned in register A1 *)
PROCEDURE GetRexxVar0 ["GetRexxVar"]
  ( rexxmsg    [8] : rx.RexxMsgPtr;
    name       [9] : ARRAY OF CHAR )
  : LONGINT;

(*------------------------------------*)
PROCEDURE GetRexxVar *
  ( rexxmsg    : rx.RexxMsgPtr;
    name       : ARRAY OF CHAR;
    VAR result : e.STRPTR )
  : LONGINT;

  VAR temp : LONGINT;

(* $r- No RETURN check *)
(* $D- Don't copy open arrays *)
BEGIN
  temp := GetRexxVar0 (rexxmsg, name);
  SYS.GETREG (9, result);
  RETURN temp
END GetRexxVar;

(*------------------------------------*)
PROCEDURE SetRexxVar * ["SetRexxVar"]
  ( rexxmsg [8] : rx.RexxMsgPtr;
    name    [9] : ARRAY OF CHAR;
    value   [0] : ARRAY OF CHAR;
    length  [1] : LONGINT )
  : LONGINT;

END RexxUtil.
