From: LOUBOUTIN@CLSEPF51.BITNET
Subject: (none)
Date: Tue, 25-Aug-87 12:58:00 EDT [thread overview]
Date: Tue Aug 25 12:58:00 1987
Message-ID: <8708261720.AA17968@ucbvax.Berkeley.EDU> (raw)
$@jan_sys:jsend INFO-ADA@ADA20.ISI.EDU 25-AUG-1987-17-54-41-87.TMP
Using CLI$DCL_PARSE of VAX/VMS
$exit!------------------------------------------------------------------------
Problems using CLI$DCL_PARSE provided by VAX/VMS in an Ada program
==================================================================
I've been working with VAX/VMS version 4.6 operating system and the DEC
Ada compiler version 1.4. I've been trying to use, without much success,the
utility routine CLI$DCL_PARSE when I provide it with an input routine
written in Ada. Here are the listings of the compilation units making up a
sample Ada program that doesn't work.
The main program is
with COMMAND_TABLE;
with COMMAND_PROCEDURES;
with IO_ROUTINES;
with CONDITION_HANDLING;
with SYSTEM;
procedure CLI_BUG is
INVALID_ROUTINE_ERROR: exception;
----------------------------------------------------------------------------
procedure DCL_PARSE (DCL_TABLE_ADDRESS : in SYSTEM.ADDRESS;
INPUT_ROUTINE_ADDRESS: in SYSTEM.ADDRESS;
COMMAND_STRING : in STRING ;
PROMPT_STRING : in STRING ) is
STATUS : CONDITION_HANDLING.COND_VALUE_TYPE;
procedure CLI_DCL_PARSE (STATUS : out
CONDITION_HANDLING.COND_VALUE_TYPE;
COMMAND_STR : in STRING :=
STRING'NULL_PARAMETER;
TABLE : in SYSTEM.ADDRESS;
PARAM_ROUT : in SYSTEM.ADDRESS;
PROMPT_ROUT : in SYSTEM.ADDRESS;
PROMPT_STR : in STRING :=
STRING'NULL_PARAMETER);
--+ OVERVIEW : For more information see CLI$DCL_PARSE routine in the
--+ utility routines manual
pragma INTERFACE (EXTERNAL, CLI_DCL_PARSE);
pragma IMPORT_VALUED_PROCEDURE (CLI_DCL_PARSE,
"CLI$DCL_PARSE",
MECHANISM => (VALUE,
DESCRIPTOR(A),
VALUE,
VALUE,
VALUE,
DESCRIPTOR(S)));
begin
if COMMAND_STRING = "" then
CLI_DCL_PARSE (STATUS => STATUS,
TABLE => DCL_TABLE_ADDRESS,
PROMPT_STR => PROMPT_STRING,
PARAM_ROUT => INPUT_ROUTINE_ADDRESS,
PROMPT_ROUT => INPUT_ROUTINE_ADDRESS);
else
CLI_DCL_PARSE (STATUS => STATUS,
COMMAND_STR => COMMAND_STRING,
TABLE => DCL_TABLE_ADDRESS,
PROMPT_STR => PROMPT_STRING,
PARAM_ROUT => INPUT_ROUTINE_ADDRESS,
PROMPT_ROUT => INPUT_ROUTINE_ADDRESS);
end if ;
if not CONDITION_HANDLING.SUCCESS(STATUS) then
CONDITION_HANDLING.SIGNAL(STATUS);
end if ;
end DCL_PARSE;
---------------------------------------------------------------------------
procedure DISPATCH is
STATUS : CONDITION_HANDLING.COND_VALUE_TYPE := 1;
CLI_INVROUT: constant CONDITION_HANDLING.COND_VALUE_TYPE := 16#38912#;
procedure CLI_DISPATCH (STATUS : out CONDITION_HANDLING.COND_VALUE_TYPE);
--+ OVERVIEW:
--+ For more information see CLI$DISPATCH routine in the utility
--+ routines manual.
--+ STATUS:
--+ If a routine is successfully invoked, the routine status is
--+ the status returned by the action routine. Otherwise a staus of
--+ CLI$_INVROUT is returned. This condition value is found in R0.
--+ if a routine written in ADA is invoked the condition value returned
--+ will be 0. CONDITION_VALUE.SUCCESS(0) = false. Thus
--+ CONDITION_VALUE.MATCH_COND should be used.
pragma INTERFACE (EXTERNAL, CLI_DISPATCH);
pragma IMPORT_VALUED_PROCEDURE (CLI_DISPATCH,
"CLI$DISPATCH",
MECHANISM => (VALUE));
begin
CLI_DISPATCH(STATUS);
if CONDITION_HANDLING.MATCH_COND(
CONDITION_HANDLING.COND_VALUE_TYPE(STATUS), CLI_INVROUT) = 1 then
raise INVALID_ROUTINE_ERROR;
end if ;
end DISPATCH;
---------------------------------------------------------------------------
begin
loop
DCL_PARSE(DCL_TABLE_ADDRESS => COMMAND_TABLE.COMMANDS'ADDRESS,
INPUT_ROUTINE_ADDRESS => IO_ROUTINES.READ_ROUTINE'ADDRESS,
PROMPT_STRING => ">>",
COMMAND_STRING => "");
DISPATCH;
end loop;
end CLI_BUG;
================================================================================
The input routine called by CLI$DCL_PARSE is declared in
package IO_ROUTINES is
procedure READ_ROUTINE(GET_STR : out STRING;
PROMPT_STR: STRING;
OUT_LEN : out INTEGER);
pragma EXPORT_PROCEDURE(READ_ROUTINE);
--+ OVERVIEW:
--+ This routine will be called by CLI$DCL_PARSE to read a command line.
--+ The utility routinesmanual states that it should have the same three
--+ argument calling format as the run time library routine LIB$GET_INPUT.
end IO_ROUTINES;
with TEXT_IO;
package body IO_ROUTINES is
procedure READ_ROUTINE(GET_STR : out STRING;
PROMPT_STR: STRING;
OUT_LEN : out INTEGER) is
begin
TEXT_IO.PUT(PROMPT_STR); TEXT_IO.GET_LINE(GET_STR, OUT_LEN);
end READ_ROUTINE;
end IO_ROUTINES;
================================================================================
It is necessary to declare a package to interface the available
commands. This package is declared as
package COMMAND_TABLE is
procedure COMMANDS;
pragma INTERFACE(CDU, COMMANDS);
pragma IMPORT_PROCEDURE(COMMANDS,"COMMANDS");
end COMMAND_TABLE;
The commands are declared in a non Ada file. Let's suppose that
this file is called COMMAND_TABLE.CLD. It contains
MODULE COMMANDS
DEFINE VERB COMM1
ROUTINE COMM1
It must be compiled by the command
$ set command/obj command_table
This would create the file command_table.obj in the default directory.
It must be entered in the acs library by the command
$ acs copy foreign command_table command_table
================================================================================
The procedure called by the command COMM1 is declared in
package COMMAND_PROCEDURES is
procedure COMM1;
pragma EXPORT_PROCEDURE(COMM1);
--+ OVERVIEW:
--+ These procedures will be called when the commands COMM1 and COMM2
--+ are input.
end COMMAND_PROCEDURES;
with TEXT_IO;
package body COMMAND_PROCEDURES is
procedure COMM1 is
begin
TEXT_IO.PUT_LINE("I'm COMM1");
end COMM1;
end COMMAND_PROCEDURES;
================================================================================
Once all these compilation units have been compiled and linked, the
execution prompts
>>
If COMM1 is typed
>>COMM1
the following messages are output.
%NONAME-W-NOMSG, Message number 00000000
%TRACE-W-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
7FF5F8FD 7FF5F8FD
00001215 00001215
CLI_BUG DCL_PARSE 45 000000A3 00000EF1
CLI_BUG CLI_BUG 100 00000084 00001092
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 00000009 00000809
000012EE 000012EE
0000D9D2 0000D9D2
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 0000001B 0000081B
000012C9 000012C9
%NONAME-W-NOMSG, Message number 00000000
%TRACE-W-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
CLI_BUG DCL_PARSE 59 00000176 00000FC4
CLI_BUG CLI_BUG 100 00000084 00001092
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 00000009 00000809
000012EE 000012EE
0000D9D2 0000D9D2
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 0000001B 0000081B
000012C9 000012C9
%CLI-E-INVROUT, invalid routine specified in command tables - check .CLD file
%TRACE-E-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
7FF613F0 7FF613F0
00001256 00001256
CLI_BUG DISPATCH 87 00000020 00000FE5
CLI_BUG CLI_BUG 102 0000008C 0000109A
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 00000009 00000809
000012EE 000012EE
0000D9D2 0000D9D2
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 0000001B 0000081B
000012C9 000012C9
%ADA-F-EXCEPTION, Exception INVALID_ROUTINE_ERROR
-ADA-I-EXCRAIPRI, Exception raised prior to PC = 0000100D
%TRACE-E-TRACEBACK, symbolic stack dump follows
module name routine name line rel PC abs PC
0000DBD6 0000DBD6
----- above condition handler called with exception 0031800C:
%ADA-F-EXCEPTION, Exception INVALID_ROUTINE_ERROR
-ADA-I-EXCRAIPRI, Exception raised prior to PC = 0000100D
----- end of exception message
000117DB 000117DB
CLI_BUG DISPATCH 90 00000048 0000100D
CLI_BUG CLI_BUG 102 0000008C 0000109A
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 00000009 00000809
000012EE 000012EE
0000D9D2 0000D9D2
ADA$ELAB_CLI_BU ADA$ELAB_CLI_BUG 0000001B 0000081B
000012C9 000012C9
I had the same messages even when I used a different body for the
procedure READ_INPUT. Using the debugger I've noticed that CLI$DCL_PARSE
couldn't receive parameter GET_STR from READ_ROUTINE though this parameter
is in mode "out". I wasn't able to find the reason. I would be very
interested if anyone had any experience on the subject.
Thanks for any help,
Isak Maim
Swiss Federal
Institute of Technology
Lausanne,
-----------
Switzerland
tel: (21) 47 42 37
Email: MAIM@CLSEPF51 (EARN/BITNET)
next reply other threads:[~1987-08-25 16:58 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
1987-08-25 16:58 LOUBOUTIN [this message]
-- strict thread matches above, loose matches on Subject: below --
1996-07-23 0:00 <None> **
1993-09-01 7:24 (none) N.B. Hedd
1993-01-27 23:32 <none> xim
1993-01-27 23:09 <none> xim
1993-01-27 16:39 <none> xim
1993-01-27 16:29 <none> slava
1993-01-26 23:13 <none> xim
1992-12-04 4:03 (none) Michael Feldman
1992-12-03 16:57 (none) dog.ee.lbl.gov!overload.lbl.gov!agate!linus!linus.mitre.org!news!emery
1992-12-03 15:59 (none) Tuck er Taft
1992-12-03 14:43 (none) dog.ee.lbl.gov!overload.lbl.gov!agate!usenet.ins.cwru.edu!magnus.acs.ohio
1992-04-03 15:57 <none> David Emery
1991-09-20 18:58 <None> cis.ohio-state.edu!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!usen
1991-06-20 13:18 (none) Eric E. Mays 52202
1991-06-20 13:18 (none) Eric E. Mays 52202
1991-05-27 8:20 (none) Giorgio del rio
1991-05-14 13:35 <None> Ace Stewart
1991-03-26 20:38 (none) Eric E. Mays 52202
1991-02-28 17:50 (none) Giorgio del rio
1991-01-10 16:38 (none) GS-09 Ken McCook;SCDD
1990-09-20 18:21 (none) "John P. Solomond, Director, AJPO"
1990-09-24 8:52 ` (none) Richard A. O'Keefe
1990-08-08 21:12 (none) Jose_Duarte
1990-05-07 18:37 (none) Ken McCook;SCDQ;
1990-02-14 16:43 (none) Dave Williamson
1989-09-02 22:13 (none) cdonalds
1989-09-04 1:43 ` (none) Richard O'Keefe
1989-04-14 11:43 (none) jrovert
1989-04-03 13:23 (none) Norman Cohen
1989-03-09 22:07 (none) Norman Cohen
1989-03-08 13:59 (none) Norman Cohen
1989-03-06 19:20 (none) TSIGLER
1989-03-06 14:49 (none) Javier Romanach / GMV
1989-02-24 0:46 (none) Marie T. Minogue
1989-02-16 17:05 (none) Richard.S.D'Ippolito
1989-01-13 17:11 (none) NCOHEN
1988-11-21 22:34 (none) Mark Nelson
1988-11-07 12:52 (none) gita R. Rajan
1988-10-20 18:40 (none) sdl
1988-09-16 9:51 (none) TVOVERBE
1988-06-03 12:08 (none) Greg Gicca
1988-04-07 20:15 (none) sdl
1988-03-17 1:24 (none) sdl
1988-03-12 2:48 (none) sdl
1988-03-09 3:18 (none) sdl
1988-03-07 15:16 (none) amb
1987-12-23 10:54 (none) CARNAL
1987-09-15 19:39 (none) Alex Blakemore
1987-08-28 15:31 (none) LOUBOUTIN
1987-08-25 16:58 (none) LOUBOUTIN
1987-06-09 17:17 (none) SARX
1987-06-04 16:21 (none) seafac
1987-05-29 4:57 (none) postmaster
1987-05-27 3:03 (none) jklemens
1987-03-14 1:22 (none) CONTR47
1987-01-16 16:24 (none) FRASER
1986-12-21 23:16 (none) diby
1986-09-22 16:36 (none) "Pat Rogers, High Tech Lab"
1986-09-22 16:36 (none) "Pat Rogers, High Tech Lab"
1986-06-05 19:39 (none) info-ada-request
1986-06-05 12:15 (none) info-ada-request
1986-04-08 14:54 (none) Stephen.Hutchinson
1986-03-16 18:52 (none) info-ada-request
1986-02-03 19:07 (none) GAUSTIN
1985-12-05 21:42 (none) , ,
1985-12-05 20:54 (none) ,
1985-12-05 20:50 (none) info-ada
1985-12-05 17:45 (none) info-ada
1985-12-08 21:08 ` (none) Jay R. Ashworth
1985-12-05 15:46 (none) info-ada
1985-12-05 6:09 (none) info-ada
1985-12-06 1:04 ` (none) info-ada
1985-12-06 1:37 ` (none) info-ada
1985-12-06 1:47 ` (none) info-ada
1985-12-04 18:34 (none) RCONN
1985-12-06 1:02 ` (none) info-ada
1985-12-06 1:32 ` (none) info-ada
1985-12-06 1:46 ` (none) info-ada
1985-12-04 16:41 (none) RCONN
1985-12-06 0:59 ` (none) info-ada
1985-12-06 1:29 ` (none) info-ada
1985-12-06 1:46 ` (none) info-ada
1985-12-04 7:50 (none) ,
1985-12-06 0:47 ` (none) info-ada
1985-12-06 1:13 ` (none) info-ada
1985-12-06 1:44 ` (none) info-ada
1985-12-03 22:07 (none) ,
1985-12-06 0:47 ` (none) info-ada
1985-12-06 1:10 ` (none) info-ada
1985-12-06 1:42 ` (none) info-ada
1985-12-03 11:13 (none) ,
1985-12-06 0:42 ` (none) info-ada
1985-12-06 1:08 ` (none) info-ada
1985-12-06 1:41 ` (none) info-ada
1985-12-03 4:24 (none) info-ada
1985-12-06 0:41 ` (none) info-ada
1985-12-06 1:06 ` (none) info-ada
1985-12-06 1:40 ` (none) info-ada
1985-12-06 1:48 ` (none) info-ada
1985-12-12 22:22 ` (none) info-ada
1985-12-02 20:44 (none) Stachour.CSC_RP
1985-12-06 0:41 ` (none) info-ada
1985-11-29 14:35 Ada Professionalism Document Edward V. Berard
1985-12-04 9:09 ` (none) ,
1985-12-06 0:49 ` (none) info-ada
1985-12-10 11:32 ` (none) info-ada
1985-12-06 1:15 ` (none) info-ada
1985-12-06 1:45 ` (none) info-ada
1985-12-06 5:04 ` (none)??? Dick Dunn
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox