BRINGING UP THE ADA REPOSITORY HELP SYSTEM by Richard Conn The following is a terminal session which illustrates the steps which may be taking in bringing up the Help System available for the DoD Ada Software Repository on SIMTEL20. The actual displays may vary from system to system due to differences in the programs used, particularly the FTP (File Transfer Protocol) program and your Ada compiler. This session was performed on a VAX 11/785 running VMS 4.2 and DEC Ada V1.1-10. The Defense Data Network host computer is NOSC-TECR. Comments, prefixed with "--", are scattered throughout the session. Address questions to ADA-SW-REQUEST@SIMTEL20. -- Session Begins -- Run the FTP program, connect to the SIMTEL20 host computer, -- log in, and obtain the files HELP.SRC and HELP.DAT from the -- directory PD: $ ftp simtel20 Connection Opened Using 8-bit bytes. help.src help.src HELP.SRC.1 started. 59644 bytes in 19 seconds--25112 bps help.dat help.dat HELP.DAT.3 started. 6715 bytes in 2 seconds--26856 bps $ pager PAGER, Version 1.6 Type HELP for Help PAGER> unpage help.src help.dis 25 Lines help_sysdep.ada 84 Lines help.ada 718 Lines help_analyze.ada 274 Lines help_build.ada 239 Lines help.doc 620 Lines help.rno 243 Lines PAGER> x -- Now edit the file HELP_SYSDEP.ADA, which is the system-dependencies -- file. The only change I made in this edit session is the name of -- the default Help file. I could have also changed other parameters, -- such as the sequence required to clear the CRT screen, if I desired. $ ed help_sysdep.ada 1 *%wh 1 2 --|MODULE: HELP_SYSDEP 3 --|AUTHOR: CONN 4 --|LOCATION: PDL-TOOLS 5 --|SEE_ALSO: HELP 6 --|SEE_ALSO: HELP_ANALYZE 7 --|SEE_ALSO: HELP_BUILD 8 --|IEEE_PDL: SUPPORT_MODULE 9 --|DESIGN_STATUS : DONE 10 --|IMPLEMENTATION_STATUS : DONE 11 --|DOCUMENTATION_STATUS : DONE 12 --|DATE_RELEASED : 9 Sep 85 13 --|DATE_LAST_MODIFIED : 11 Sep 85 14 --|ABSTRACT: 15 --| HELP_SYSDEP is a Systems-Dependency package for the HELP 16 --| system of programs. It contains terminal-specific information 17 --| (such as the number of lines on a screen and number of columns) . 18 --| Other information is also provided, including a CLEAR_SCREEN 19 --| routine. If more than one terminal is to be used and/or a 20 --| clear screen or different clear screen sequences are used or 21 --| not available, simply make the body of this routine a "null;"; 22 --| if only one terminal is used or several terminal types with the 23 --| same clear screen sequence, set up the CLEAR_SCREEN routine to 24 --| issue this sequence. 25 -- 26 with DIRECT_IO; 27 package HELP_SYSDEP is 28 29 -- 30 -- HELP_FILE_NAME is the default name of the help file 31 -- It may be a fully-qualified file name (which includes directory reference) 32 -- so that the program will find it from any directory the program runs from. 33 -- 34 HELP_FILE_NAME : constant STRING := "USER4:[ADAREPOS.TIPDL.EXE]PD L_TOOLS.HLP" 35 ; 36 37 -- 38 -- SCREEN_WIDTH and SCREEN_LENGTH are terminal attributes 39 -- 40 SCREEN_WIDTH : constant NATURAL := 75; 41 SCREEN_LENGTH : constant NATURAL := 23; 42 43 -- 44 -- Description of a screen 45 -- 46 subtype SCREEN_TEXT is STRING(1 .. SCREEN_WIDTH); 47 type SCREEN_LINE is 48 record 49 LINE : SCREEN_TEXT; 50 LAST : NATURAL; 51 end record; 52 type SCREEN_LINE_ARRAY is array(1 .. SCREEN_LENGTH) of SCREEN_LIN E; 53 type SCREEN is 54 record 55 LINES : SCREEN_LINE_ARRAY; 56 LAST : NATURAL; 57 end record; 58 59 -- 60 -- System-Dependent (Terminal-Dependent) Clear Screen routine 61 -- If not implemented, should contain a body of "null;" 62 -- 63 procedure CLEAR_SCREEN; 64 65 -- 66 -- Random-Access File I/O for HELP programs 67 -- 68 package SDIRECT is 69 new DIRECT_IO(ELEMENT_TYPE => SCREEN); 70 71 end HELP_SYSDEP; 72 73 with TEXT_IO; 74 package body HELP_SYSDEP is 75 76 procedure CLEAR_SCREEN is 77 begin 78 TEXT_IO.PUT(ASCII.ESC); 79 TEXT_IO.PUT_LINE("[2J"); 80 TEXT_IO.PUT(ASCII.ESC); 81 TEXT_IO.PUT("[1;1H"); 82 end CLEAR_SCREEN; 83 84 end HELP_SYSDEP; [EOB] *'user4' 34 HELP_FILE_NAME : constant STRING := "USER4:[ADAREPOS.TIPDL.EXE]PD L_TOOLS.HLP" -- Here is where I make the substitution: -- Change "USER4:[ADAREPOS.TIPDL.EXE]PDL_TOOLS" into -- "DBA4:[CONTR13.EXE]AHELP" -- The new line is indicated, and the default help file is named AHELP.HLP *s/USER4:[ADAREPOS.TIPDL.EXE]PDL_TOOLS/DBA4:[CONTR13.EXE]AHELP/ 34 HELP_FILE_NAME : constant STRING := "DBA4:[CONTR13.EXE]AHELP.HLP" 1 substitution *exit DBA4:[CONTR13.DEMO]HELP_SYSDEP.ADA;2 84 lines -- Now, I create a library to contain the object files generated by the -- Ada compilations (which will be performed shortly) and identify this -- library as the one I wish to use. Such is the purpose of the two ACS -- commands which follow. $ acs create library [.lib] Library DBA4:[CONTR13.DEMO.LIB] created $ acs set library [.lib] Current program library is DBA4:[CONTR13.DEMO.LIB] -- The following are the compilations and links required. HELP_SYSDEP.ADA -- must be compiled before the tools. The tools are HELP_ANALYZE.ADA, -- HELP_BUILD.ADA, and HELP.ADA, and they may be compiled in any order after -- HELP_SYSDEP.ADA has been compiled. $ ada help_sysdep $ ada help_analyze $ ada help_build $ ada help $ acs link help_analyze Invoking the VAX/VMS Linker $ acs link help_build Invoking the VAX/VMS Linker $ acs link help Invoking the VAX/VMS Linker -- Finally, I run HELP_BUILD to create the required Direct-Access file -- (named AHELP.HLP from my edit of HELP_SYSDEP.ADA) from the data file -- I copied from SIMTEL20 (which was HELP.DAT). $ run help_build HELP File Builder, Version 1.0 Source Text File > help.dat Help File to Build (RETURN for Default)> Number of Screens Written: 28 Number of Headers Written: 28 -- HELP_ANALYZE displays the contents of the Direct-Access file created -- by HELP_BUILD $ run help_analyze HELP Analyzer, Version 1.0 Help File (RETURN for Default)> 1 ADA: Start = 1 Stop = 1 1 BENCHMARKS: Start = 2 Stop = 2 1 COMPILATION-ORDER: Start = 3 Stop = 3 1 COMPONENTS: Start = 4 Stop = 4 1 CROSS-REFERENCE: Start = 5 Stop = 5 1 DDN: Start = 6 Stop = 6 1 EDITORS: Start = 7 Stop = 7 1 EDUCATION: Start = 8 Stop = 8 1 EXTERNAL-TOOLS: Start = 9 Stop = 9 1 FORMGEN: Start = 10 Stop = 10 1 GENERAL: Start = 11 Stop = 11 1 GKS: Start = 12 Stop = 12 1 MANAGEMENT-TOOLS: Start = 13 Stop = 13 1 MATH: Start = 14 Stop = 14 1 MENU: Start = 15 Stop = 15 1 MESSAGE-HANDLING: Start = 16 Stop = 16 1 METRICS: Start = 17 Stop = 17 1 NOSC-TOOLS: Start = 18 Stop = 18 1 PAGER: Start = 19 Stop = 19 1 POINTERS: Start = 20 Stop = 20 1 PRETTY-PRINTERS: Start = 21 Stop = 21 1 SPELLER: Start = 22 Stop = 22 1 STARTER-KIT: Start = 23 Stop = 23 1 STUBBER: Start = 24 Stop = 24 1 STYLE: Start = 25 Stop = 25 1 TOOLS: Start = 26 Stop = 26 1 VIRTERM: Start = 27 Stop = 27 1 SPECIAL_NOTES: Start = 28 Stop = 28 -- Finally, HELP runs the Help System on the default Help file AHELP.HLP $ run help HELP, Version 1.2 Help File (RETURN for Default)> ADA BENCHMARKS COMPILATION-ORDER COMPONENTS CROSS-REFERENCE DDN EDITORS EDUCATION EXTERNAL-TOOLS FORMGEN GENERAL GKS MANAGEMENT-TOOLS MATH MENU MESSAGE-HANDLING METRICS NOSC-TOOLS PAGER POINTERS PRETTY-PRINTERS SPELLER STARTER-KIT STUBBER STYLE TOOLS VIRTERM SPECIAL_NOTES Level 0 Menu: (Exit, Selection) math 1 MATH This subdirectory contains packages of math routines. All routines are written in Ada. Routines for trig functions, exponential functions, matrix manipulation, bit manipulation, and others are contained here. Level 0 Topic: 1 MATH (Print, Exit, Up) x