From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,2d8bc00b1190f5f9,start X-Google-Attributes: gid103376,public From: Lou Glassy Subject: GETARG in Ada? Date: 1999/02/27 Message-ID: <7b9r2g$lha$1@netra.msu.montana.edu>#1/1 X-Deja-AN: 449411764 X-Complaints-To: usenet@news.montana.edu X-Trace: netra.msu.montana.edu 920154000 22058 153.90.240.121 (27 Feb 1999 22:20:00 GMT) Organization: Montana State University User-Agent: tin/pre-1.4-980226 (UNIX) (Linux/2.0.34 (i586)) NNTP-Posting-Date: 27 Feb 1999 22:20:00 GMT Newsgroups: comp.lang.ada Date: 1999-02-27T22:20:00+00:00 List-Id: Question: Can anyone help me clean up this program? No, this is not a homework assignment. I'm an old Fortran programmer, learning Ada... Here is a little Fortran program (compiles, runs with g77 under Linux) that prints out the arguments on the Unix command line: PROGRAM TEST_GETARG IMPLICIT NONE INTEGER ARG_COUNT, I CHARACTER(LEN=20) CURRENT_ARG ARG_COUNT = IARGC() PRINT *, 'number of args = ', ARG_COUNT DO I = 1, ARG_COUNT CALL GETARG(I, CURRENT_ARG) PRINT *, 'ARG ', I, '=', CURRENT_ARG END DO END I'd like to do the same thing in Ada-95. For concreteness, I'm using GNAT (3.10p), but I'm guessing any A95 implementation on a Unix box would eat something similar to the following: with TEXT_IO; use TEXT_IO; with ADA.COMMAND_LINE; use ADA.COMMAND_LINE; with ADA.STRINGS; use ADA.STRINGS; with ADA.STRINGS.FIXED; use ADA.STRINGS.FIXED; procedure TEST_GETARG is package INT_IO is new INTEGER_IO(INTEGER); use INT_IO; ARG_COUNT: INTEGER; MAX_ARG_LENGTH: constant INTEGER := 80; ARG: STRING(1..MAX_ARG_LENGTH) := (others => ' '); begin ARG_COUNT := ADA.COMMAND_LINE.ARGUMENT_COUNT; PUT("number of command-line args = "); PUT(ARG_COUNT); NEW_LINE; if ARG_COUNT > 0 then for CURRENT_ARG in 1..ARG_COUNT loop PUT("arg "); PUT(CURRENT_ARG); PUT("="); ARG(1..ADA.COMMAND_lINE.ARGUMENT(CURRENT_ARG)'LENGTH) := ADA.COMMAND_lINE.ARGUMENT(CURRENT_ARG); PUT(TRIM(ARG,RIGHT)); NEW_LINE; end loop; end if; end TEST_GETARG; ------------------------------------------ My A95 "TEST_GETARG" program works, I'm just trying to figure out how to write it more cleanly. I much appreciate Ehud Lamm's "Ada Idiom Page" and other postings kind souls have made to comp.lang.ada. My question is, how would an experienced Ada programmer write my little TEST_GETARG program in Ada-95? Is there an easier way to handle strings than this? Thanks in advance... -lou Lou Glassy (glassy@cs.montana.edu)