comp.lang.ada
 help / color / mirror / Atom feed
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: <8708261947.AA20994@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)

             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