home *** CD-ROM | disk | FTP | other *** search
/ Programmer's ROM - The Computer Language Library / programmersrom.iso / ada / manage / rttest.dat < prev    next >
Encoding:
Text File  |  1988-05-03  |  57.7 KB  |  1,492 lines

  1. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. --checkout.com
  3. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  4. $ SET NOON
  5. $ DIFFERENCE RUN3.RPT; ;1
  6. $ DIFFERENCE RUN4.RPT; ;1
  7. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  8. --cleanup.com
  9. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  10. $SET NOON
  11. $DELETE *.*PR;*
  12. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  13. --reqstest.com
  14. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  15. $ ! ReqsRef test command file.
  16. $ set verify
  17. $ ! ---> The following two lines are installation dependent ---->
  18. $ set default [nosc.work.tools.reqsref.test]
  19. $ reqsref := $user1:[nosc.work.tools.reqsref]reqsref.exe
  20. $ ! 
  21. $ ! First, run REQSREF over the test input files:
  22. $ REQSREF(("*.ADA", "*.SPC"));
  23. $ REQSREF(("MTEST.BDY", "NONAME.SOM"), REPORT => NOREPORT);
  24. $ REQSREF(("TEST2.SUB"), ("*.*PR"), OUTPUT => "RUN3.RPT");
  25. $ REQSREF(PAIRS_FILES => ("*.*PR"), REPORT => LOCATION, OUTPUT => "RUN4.RPT");
  26. $ ! 
  27. $ ! The following test should generate three error messages, as follows:
  28. $ ! 
  29. $ ! ?? Invalid paragraph string at line 4, column 29.
  30. $ ! ?? Invalid document id at line 7, column 29.
  31. $ ! ?? Invalid document id at line 10, column 33.
  32. $ ! 
  33. $ SET NOON
  34. $ REQSREF(("BADREFS.DAT"));
  35. $ !
  36. $ ! Next, compare the output with a previous run (that was checked by hand)
  37. $ !
  38. $ DIFFERENCE RUN3.RPT; ;1
  39. $ DIFFERENCE RUN4.RPT; ;1
  40. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  41. --testrun.com
  42. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  43. $SET ON
  44. $REQSREF (("*.ADA", "*.SPC"));
  45. $REQSREF (("MTEST.BDY", "NONAME.SOM"), REPORT => NOREPORT);
  46. $REQSREF (("TEST2.SUB"), ("*.*PR"), OUTPUT => "RUN3.RPT");
  47. $REQSREF (PAIRS_FILES => ("*.*PR"), REPORT => LOCATION, OUTPUT => "RUN4.RPT");
  48. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  49. --ktest.spc
  50. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  51. package kTest is
  52.  
  53. procedure P;
  54. -- Test one ref per line, all possible flag chars, with and without
  55. -- extra spaces:
  56. --| Requirements_Satisfied: Doc.Name.P 1
  57. --|+Requirements_Satisfied: Doc.Name.P 2
  58. --|-Requirements_Satisfied: Doc.Name.P 3
  59. --|+ Requirements_Satisfied: Doc.Name.P.Plus 2
  60. --|- Requirements_Satisfied: Doc.Name.P.Minus 3
  61.  
  62. procedure Q;
  63. -- Test multiple refs per line:
  64. --| Requirements_Satisfied: Doc.Name.Q 1, Doc.Name.Q 2, Doc.Name.Q 3
  65.  
  66. procedure R;
  67. -- Test multiple refs and multiple lines:
  68. --| Requirements_Satisfied: Doc.Name.R 1, Doc.Name.R 2, Doc.Name.R 3
  69. --| Requirements_Satisfied: Doc.Name.R 1.1, Doc.Name.R 2.1, Doc.Name.R 3.1
  70. --| Requirements_Satisfied: Doc.Name.R 1.2, Doc.Name.R 2.2, Doc.Name.R 3.2
  71.  
  72. procedure S;
  73. -- Test multiple refs and continuation lines, with and without trailing comma
  74. --| Requirements_Satisfied: Doc.Name.S 1, Doc.Name.S 2, Doc.Name.S 3,
  75. --| Doc.Name.S 1.1, Doc.Name.S 2.1, Doc.Name.S 3.1
  76. --| Doc.Name.S 1.2, Doc.Name.S 2.2, Doc.Name.S 3.2
  77.  
  78.  
  79. -- Now, same tests check ! in place of |
  80.  
  81. procedure P1;
  82. --!    Requirements_Satisfied:    Doc.Name.P    1
  83. --!+Requirements_Satisfied:    Doc.Name.P    2
  84. --!-Requirements_Satisfied:    Doc.Name.P    3
  85. --!+    Requirements_Satisfied:    Doc.Name.P.Plus    2
  86. --!-    Requirements_Satisfied:    Doc.Name.P.Minus    3
  87.  
  88. procedure Q1;
  89. --! Requirements_Satisfied: Doc.Name.Q1 1, Doc.Name.Q1 2, Doc.Name.Q1 3
  90.  
  91. procedure R1;
  92. --! Requirements_Satisfied: Doc.Name.R1 1, Doc.Name.R1 2, Doc.Name.R1 3
  93. --! Requirements_Satisfied: Doc.Name.R1 1.1, Doc.Name.R1 2.1, Doc.Name.R1 3.1
  94. --! Requirements_Satisfied: Doc.Name.R1 1.2, Doc.Name.R1 2.2, Doc.Name.R1 3.2
  95.  
  96. procedure S1;
  97. --! Requirements_Satisfied: Doc.Name.S1 1, Doc.Name.S1 2, Doc.Name.S1 3,
  98. --! Doc.Name.S1 1.1, Doc.Name.S1 2.1, Doc.Name.S1 3.1
  99. --! Doc.Name.S1 1.2, Doc.Name.S1 2.2, Doc.Name.S1 3.2
  100.  
  101. -- Uppercase keyword:
  102. procedure UC;
  103. --| Requirements_Satisfied: Doc.Name.UC 1
  104.  
  105. -- Lower case keyword:
  106. procedure LC;
  107. --| Requirements_Satisfied: Doc.Name.LC 1
  108.  
  109. procedure Ref_1_2_no_3;
  110. --| Requirements_Satisfied: Ref 1
  111. --| Ref 2
  112. -- This comment causes the next comment to be ignored:
  113. --| Ref 3
  114.  
  115. end KTest;
  116. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  117. --mtest.spc
  118. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  119. with reqsref_utilities;  use reqsref_utilities;
  120. with text_io;
  121. --| Requirements Satisfied:a 9
  122. with binarytrees;
  123. with heap_sort;
  124. with document_ref;
  125.  
  126. package merge_pkg is
  127. --| Requirements Satisfied:   one.two 4.5
  128. type file_ptr is access text_io.file_type;
  129. --| Requirements Satisfied:   red 89
  130. subtype path is sl.list;              -- A list which contains the components
  131. --| Requirements Satisfied: u.v 1.2.3                                      
  132.  
  133. type req_record is
  134.    record
  135.       ref: document_ref.reference_string;
  136.       source_file_name: sp.string_type;
  137.       pairs_file_name: sp.string_type;
  138.       pairs_file: file_ptr;
  139.       location_string: sp.string_type;
  140.    end record;
  141. --| Requirements Satisfied: requirement 5
  142. type seq is array (integer range <>) of req_record;   
  143.  
  144. package file_tree_pkg is new binarytrees(
  145.                       itemtype => path,
  146.                       "<"       => reqsref_utilities.lessthan); 
  147. package ftp renames file_tree_pkg;
  148.  
  149.  
  150. ref_width: constant integer := 30;    -- maximal number of characters in a
  151.                                       -- reference string
  152. file_name_width: constant integer := 60; -- maximal number of characters in 
  153.                                          -- a file pathname
  154. unit_width: constant integer := 40;   -- maximal number of characters in a
  155.                                       -- program unit name   
  156. file_tree: ftp.tree;       
  157.  
  158. procedure location_merge(pairs_files: in sl.list);   -- list of pairs files
  159. -- Raises:
  160. --| Requirements Satisfied: u.v 1.2.3
  161. -- Requires:
  162. -- The files in pairs_list must be pairs files, e. i. files created by 
  163. -- REQSREF containing pairs of Requirement-Cited and Location-in-Code. 
  164. -- Effects:
  165. -- This procedure is called when the sort_by parameter is set to LOCATION.
  166. -- It sorts the pairs files alphabetically. Then from each file it gets those
  167. -- lines which contain pairs sorted by location and passes them to 
  168. -- proccess_ location_line. 
  169.  
  170. procedure requirement_merge (pairs_files: in sl.list);  -- list of pairs files
  171. --| Requirements Satisfied: that (6) 9
  172. -- Raises:
  173.  
  174. -- Requires:
  175. -- The files in pairs_list must be pairs files, e.i. files created by
  176. -- REQSREF, containing pairs of Requirement-Cited and Location-in-Code.
  177.  
  178. -- Effects:
  179. -- This procedure is called when the sort_by parameter is set to REQUIREMENT.
  180. -- It merges the pairs which are sorted by requirement so that a report can
  181. -- be generated. The records are first sorted by REQUIREMENT then by file
  182. -- names, then by line numbers.
  183.  
  184. procedure process_location_line (
  185.                       line: in sp.string_type);  -- A string whose first
  186.                                                  -- part is a requirement,
  187.                                                  -- followed by a list of Ada
  188.                                                  -- locations and line numbers
  189.  
  190. -- Raises:
  191.  
  192. -- Requires:
  193.  
  194. -- Effects:
  195. -- Gets the requirements, Ada unit names and line numbers of the requirement
  196. -- in the file from LINE and prints the information to the report file.
  197.  
  198. procedure process_req_line (line: in sp.string_type;  -- A string whose first
  199.                                                       -- part is an Ada unit 
  200.                                                       -- name. That is followed
  201.                                                       -- by a list of 
  202.                                                       -- requirements and their
  203.                                                       -- line_numbers in the 
  204.                                                       -- file.
  205.                             req : in out req_record); -- The record whose
  206.                                                       -- fields are to hold
  207.                                                       -- information from 
  208.                                                       -- line
  209. -- Raises:
  210.  
  211. -- Requires:
  212.  
  213. -- Effects:   
  214. -- Takes Requirement and Location from line and assigns them to the 
  215. -- appropriate fields of req.
  216.  
  217. procedure print_record (req: in req_record);   -- Record to be printed
  218. -- Raises:
  219. -- Requires:
  220. -- Effects:
  221. -- Prints information from the req_record to the report file.
  222.  
  223.  
  224. function get_path (file_name: in sp.string_type) -- complete file name
  225.                    return path;  
  226. -- Raises:
  227.  
  228. -- Requires:
  229.  
  230. -- Efects:
  231. -- Returns a list of the components of the file name.
  232.  
  233.  
  234. function image   -- list of components of a file name
  235.                 return string;   
  236. -- Raises:
  237.  
  238. -- Requires:
  239.  
  240. -- Effects:
  241. -- Returns string which contains the file name
  242.  
  243.  
  244. function req_less_eq (x: req_record;
  245.                       y: req_record)
  246.                       return boolean;
  247. -- Raises:
  248. -- Requires:
  249. -- Effects:
  250. -- This comparison function compares the reference_string fields and the
  251. -- file_name fields of x and y. It returns true if x.ref , y.ref, or if
  252. -- in case of their equality x.file_name <= y.file_name.
  253.  
  254.  
  255. procedure req_sort is new heap_sort  ;                
  256. -- Requires:
  257.  
  258. -- Effects:
  259. -- Sorts an array of req_records first by reference strings then by file
  260. -- names.
  261.  
  262. -- Raises:
  263. -- Requires:
  264. -- Effects:
  265. -- For a given pairs file name this function returns the corresponding source
  266. -- file name.
  267.  
  268. end merge_pkg;
  269. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  270. --sort.spc
  271. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  272. -- $Source: /nosc/work/abstractions/sort/RCS/sort.spc,v $
  273. -- $Revision: 1.2 $ -- $Date: 85/01/31 16:43:49 $ -- $Author: ron $
  274.  
  275. -- $Source: /nosc/work/abstractions/sort/RCS/sort.spc,v $
  276. -- $Revision: 1.2 $ -- $Date: 85/01/31 16:43:49 $ -- $Author: ron $
  277.  
  278. generic
  279.     type item_type is private;
  280.         --| Component type of array to be sorted.
  281.     
  282.     with function "<="(x, y: item_type) return boolean;
  283.         --| Required to totally order item_type;
  284.     
  285.     type index_type is (<>);
  286.         --| Index type of array to be sorted.
  287. --| Requirements_Satisfied:a.c 4
  288.     type sequence is array(index_type range <>) of item_type;
  289.         --| Type of array to be sorted.
  290.  
  291. procedure heap_sort(s: in out sequence) --| Requirements_Satisfied: now 4
  292.                                         ;--| Requirements_Satisfied:heute 3
  293.     --| Overview:
  294.     --| Heap sort is an O(n lg n) guaranteed time sorting algorithm.
  295.     --| This procedure provides heap sort for arrays of arbitrary index
  296.     --| and component type.
  297. --| Requirements_Satisfied:b.c 99
  298.     --| Notes:
  299.     --| Programmer: Ron Kownacki
  300.  
  301.     --| Effects:
  302.     --|     Let s1 and s2 denote the value of s before and after an
  303.     --| invocation of heap_sort.  Then s1 and s2 have the following
  304.     --| properties:
  305.     --|   1. For i,j in s'range, i <= j implies that s2(i) <= s2(j).
  306.     --|   2. s2(s'first) through s2(s'last) is a permutation of
  307.     --|      s1(s'first) through s1(s'last).
  308.     --|
  309.     --| Requires:
  310.     --|     <= must form a total order over item_type.
  311.     --|
  312.     --| Algorithm:
  313.     --|     The algorithm is described in Knuth, vol 3, and Aho et al,
  314.     --| The Design and Analysis of Computer Algorithms.
  315.     --| Requirements_Satisfied:u.v 1.2.3
  316.  
  317. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  318. --sptest.spc
  319. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  320. Package Delim_Test is
  321.  
  322. -- See if spaces can be used to separate requirement strings:
  323.  
  324. procedure P;
  325. --| Requirement: Doc.Name 1.1 Doc.Name 1.2
  326.  
  327. end Delim_Test;
  328. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  329. --b910acab.ada
  330. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  331. -- B910ACA-B.ADA
  332.  
  333. -- CHECK THAT THE IDENTIFIER OF A SINGLE TASK NAMES A TASK OBJECT
  334. -- NOT A TASK TYPE.
  335. --
  336. --
  337. --
  338.  
  339. -- WEI  3/ 4/82
  340. -- RJK  2/ 1/84     ADDED TO ACVC
  341.  
  342. PROCEDURE B910ACA IS
  343.  
  344.      I : INTEGER;
  345.  
  346.      TASK T IS  --| Requirements Satisfied: a.b.c 7
  347.           ENTRY E;
  348.      END T;
  349.  
  350.      THIS_TASK : T;    -- ERROR: T DENOTES A TASK OBJECT, NOT A TYPE.
  351.  
  352.      TASK BODY T IS
  353.      --| Requirements_Satisfied: a.n 11
  354.      BEGIN
  355.           ACCEPT E;
  356.      END T;
  357.  
  358. BEGIN
  359.      T.E;                   -- OK.
  360.      I := T'STORAGE_SIZE;   -- OK.
  361.      I := T.E'COUNT;        -- ERROR: NOT INSIDE TASK.
  362.      I := T'SIZE;           -- OK.
  363. END B910ACA;
  364. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  365. --rtest.ada
  366. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  367. -------SPEC---------------------------------------------------------------
  368. function REQSREF return INTEGER   --|Requirements_Satisfied:bill(7) 5
  369. ; --|Requirements_Satisfied:hans 6
  370. --------BODY---------------------------------------------------------------
  371. with reqs; use reqs;  --Thea 8
  372. with string_lists;
  373. with Standard_interface; 
  374. with string_pkg;  use string_pkg;   
  375. --|Requirements_Satisfied:Thea 5
  376. with file_manager;
  377. with Text_io;
  378. with host_lib;
  379.  
  380. function REQSREF --|Requirements_Satisfied:here 3.2
  381.  return INTEGER is
  382. --|Requirements_Satisfied:one.two 888
  383.  
  384. package SP  renames string_pkg;
  385. package FM  renames file_manager;
  386. package stringtype is new standard_interface.string_argument("string");
  387. package SORT is new STANDARD_INTERFACE.ENUMERATED_ARGUMENT(
  388.                               ENUM_TYPE    => SORT_TYPE,
  389.                               ENUM_TYPE_NAME => "sort_type");
  390. Reqsr:   Standard_Interface.Process_Handle;          
  391. --|Requirements_Satisfied:STRING 88
  392.  
  393. output_file : SP.string_type;
  394. SOURCE_LIST : STRING_LISTS.LIST;
  395. --PAIRS_LIST  : STRING_LISTS.LIST;
  396. SORT_KIND : SORT_TYPE;
  397. --report    : boolean;
  398. debug_string : SP.string_type;
  399. report_string : SP.string_type;
  400. SOURCE_ARG: SP.STRING_TYPE;
  401. PAIRS_ARG: SP.STRING_TYPE;
  402. OUTPUT_ARG : SP.STRING_TYPE;
  403. FILE:      SP.STRING_TYPE;
  404. Iter:      string_lists.listiter;
  405.  
  406.     procedure parse_file_names (input : in out SP.string_type;
  407.                  list  : in out string_lists.list) is
  408.  
  409.  
  410.     position : natural := 1;
  411.     prev_pos : natural := 1;
  412.     --|Requirements_Satisfied: a.b(1)33
  413.         temp_pos : natural := 1;
  414.     output   : SP.string_type;
  415.     name     : SP.string_type;
  416.     length   : natural;
  417.     file_names : string_lists.list;
  418.  
  419.     name_error : exception;        -- raised when a name is enclosed by
  420.  
  421. procedure TRY is
  422. I: INTEGER;
  423. begin
  424. --|Requirements_Satisfied: this 5
  425. TEXT_IO.PUT("done");
  426. end try;                    -- only one quote
  427.  
  428.     begin
  429.         SP.mark;
  430.         loop
  431.         -- get each element of a comma separated list.
  432.         -- the list must not be empty to start with.
  433.             exit when position = 0;
  434.  
  435.                position := SP.match_c (input, ',', prev_pos);
  436.         -- match the next comma, 0 indicates there isn't one
  437.             if position = 0 then
  438.             name := SP.substr (input,
  439.                        prev_pos,
  440.                        (SP.length (input)- (prev_pos - 1) ));
  441.         else
  442.             name := SP.substr (input,
  443.                        prev_pos,
  444.                        position - prev_pos);
  445.         end if;
  446.         length :=  SP.length (name);
  447.         if SP.equal (SP.substr (name, 1, 1), """") and
  448.            SP.equal (SP.substr (name, length, 1), """") then
  449.             output := output & name & ", ";
  450.             name := SP.substr (name, 2, length-2);
  451.         elsif SP.equal (SP.substr (name, 1, 1), """") or
  452.               SP.equal (SP.substr (name, length, 1), """") then
  453.             raise name_error;
  454.         else
  455.             output := output & """" & name & """, ";
  456.         end if;
  457.         begin
  458.             file_names := FM.expand (name,
  459.                          FM.No_Version
  460.                         );
  461.             string_lists.Attach (list, 
  462.                         file_names);
  463.             exception
  464.             when FM.file_not_found =>
  465.                 Text_io.Put ("File ");
  466.                 Text_io.put (SP.value (name));
  467.                 TEXT_IO.PUT_LINE (" does not exist.");
  468.                 exit;
  469.             when FM.device_not_ready =>
  470.                 Text_io.put ("Device not ready: ");
  471.                 Text_io.put_line (SP.value (name));
  472.                 exit;
  473.             when FM.directory_not_found =>
  474.                 Text_io.put ("Directory not found: ");
  475.                 Text_io.put_line (SP.value (name));
  476.                 exit;
  477.             when FM.Expand_error | FM.parse_error =>
  478.                 Text_io.put ("File name error: ");
  479.                 Text_io.put_line (SP.value (name));
  480.                 exit;
  481.             end;
  482.         -- skip any spaces after the comma.
  483.         temp_pos := SP.match_not_c (input, ' ', position+1);
  484.             prev_pos := temp_pos;
  485.     end loop;
  486.     input := SP.make_persistent (SP.upper (SP.substr (
  487.                         output, 
  488.                              1, 
  489.                              SP.length (output)-2)));
  490.       -- substring because output will always have an extra ', ' on 
  491.       -- the end which we want to strip off.
  492.     
  493.     SP.release;
  494.  
  495.      end ;
  496.      --|Requirements_Satisfied:last_string 97
  497.  
  498.     
  499. begin  -- reqsref
  500. --|Requirements_Satisfied:test 110.1
  501.         sp.mark;
  502.         Host_Lib.Set_Error;
  503.    
  504.         Standard_Interface.Define_Process(
  505.     Proc    => Reqsr,
  506.     Name    => "Requirements_Reference",
  507.     Help    => "Reqsrefs Ada source file");
  508. --|Requirements_Satisfied:Very_long_requirement_string(65) 1.2.3
  509.     Stringtype.Define_Argument(
  510.     Proc => Reqsr,
  511.     Name => "source_files",
  512.     Help => "Names of the input source files");
  513.  
  514.     Stringtype.Define_Argument(
  515.     Proc    => Reqsr,
  516.     Name    => "output",
  517.     Default => "",
  518.     Help    => "Name of the report file (defaults to standard output)");
  519.  
  520.         sort.Define_Argument(
  521.     Proc    => Reqsr,
  522.     Name    => "sort",
  523.     Default => requirement,
  524.     Help    => "requirement or location (defaults to requirement)");
  525.  
  526.     Standard_Interface.Define_Help(
  527.     Proc => Reqsr,
  528.     HELP => "    Put help here");
  529.  
  530.     STANDARD_INTERFACE.APPEND_HELP(
  531.         PROC => REQSR,
  532.         help => "more help"); 
  533.  
  534.         Standard_Interface.Parse_Line(Reqsr);
  535.     
  536.         SOURCE_ARG := STRINGTYPE.GET_ARGUMENT(
  537.                           PROC => REQSR,
  538.                           NAME => "source_files");
  539.         OUTPUT_ARG := STRINGTYPE.GET_ARGUMENT(
  540.                           PROC => REQSR,
  541.                           NAME => "output");
  542.                   
  543.  
  544.         SP.Release;
  545.  
  546.     
  547.     
  548.   
  549.         PARSE_FILE_NAMES (source_arg, SOURCE_LIST);
  550.         --parse_file_names (pairs_arg, pairs_list);
  551.         output_file := SP.make_persistent (output_arg);
  552.     --SORT_KIND := SORT_TYPE'VALUE (SP.VALUE (ARG_ARRAY (4)));
  553.         --report    := boolean'value (sp.value (arg_array (5)));
  554.  
  555.     --debug_string := arg_array (1);
  556.     
  557.         if not string_lists.IsEmpty (source_list) then    
  558.         ITER := STRING_LISTS.MAKELISTITER (SOURCE_LIST);
  559.             while STRING_LISTS.MORE (ITER) loop
  560.                 begin
  561.                     string_lists.next (iter, file);
  562.                     DO_SOURCE_FILE (FILE);
  563.                 end;
  564.             end loop;
  565.     else
  566.         Text_io.put_line ("No input files: not generating a report.");
  567.         end if;
  568.  
  569.     
  570.         
  571.     return host_lib.return_code(Host_lib.success);
  572.                    
  573.     exception
  574. --|Requirements_Satisfied: new(4)4.5
  575.         when STANDARD_INTERFACE.PROCESS_HELP =>
  576.             return HOST_LIB.RETURN_CODE(HOST_LIB.INFORMATION);
  577.         when STANDARD_INTERFACE.ABORT_PROCESS =>
  578.             return host_lib.return_code(host_lib.error);
  579. --    when internal_error =>
  580. --        Text_io.put ("Compile_Order internal error");
  581. --    when others =>
  582. --        Text_io.put ("Compile_Order internal error");
  583.  
  584. end reqsref;
  585. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  586. --mtest.bdy
  587. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  588. with paginated_output;
  589. package body merge_pkg is
  590. --| Requirements Satisfied    
  591. --| green 3
  592.  package PO renames paginated_output;
  593. --| Requirements_Satisfied
  594. --| another (4) 8
  595. package int_io is new text_io.integer_io (integer);
  596. int_string: string(1..6);
  597. last: integer;
  598. source_file_name: sp.string_type;
  599. --
  600. --
  601. function get_path (file_name: in sp.string_type) return path is 
  602. --| Requirements Satisfied:     u.v 1.2.3
  603.    position: natural := 8;
  604. --
  605.    prev_pos: natural := 8;
  606.    temp_pos: natural := sp.match_c (file_name, ']', 1);
  607.    component: sp.string_type := sp.create ("");
  608.    path_name: sl.list := sl.create;
  609.  
  610.    begin
  611.       sp.mark;
  612.       loop
  613.          exit when position >= temp_pos;
  614.          position := sp.match_c(file_name, '.', prev_pos);
  615.          if position > temp_pos then
  616.             position := temp_pos;
  617.          end if;
  618.          component := sp.substr(file_name,
  619.                                 prev_pos,
  620.                                 position - prev_pos);
  621.          path_name := sl.attach(path_name, component);
  622.          prev_pos := position + 1;
  623.       end loop;
  624.       component := sp.substr(file_name,
  625.                              prev_pos,
  626.                              sp.length(file_name)  - (prev_pos -1));
  627.       path_name := sl.attach(path_name, component);
  628.       return path_name;
  629.    end get_path;
  630.  
  631. function image return string is 
  632. --| Requirements_Satisfied:
  633. --| u.v 1.2.3
  634.    index: integer;
  635.    s: sp.string_type := sp.create("[");
  636.    t: sp.string_type;
  637.    iter: sl.listiter := sl.makelistiter(path_name);  
  638.    begin
  639.       for index in 1 .. sl.length(path_name) - 2 loop         
  640.          sl.next(iter, t);
  641.          s := sp."&"(s, t);
  642.          s := sp."&"(s, ".");
  643.       end loop;
  644.       sl.next(iter, t);
  645.       s := sp."&"(s, t);
  646.       s := sp."&"(s,"]");
  647.       sl.next(iter, t);
  648.       s := sp."&"(s,t);
  649.       return sp.value(s);
  650.    end image;   
  651.  
  652.    procedure location_merge (pairs_files: in sl.list) is
  653.  
  654.    -- This procedure sorts and reada pairs files. A pairs file is a file 
  655.    -- created by REQSREF, which contains two sections: pairs sorted by 
  656.    -- requirement and the same pairs sorted by location. '@' is used to 
  657.    -- separate these sections. Location_merge is only interested in the
  658.    -- second part of a pairs file, the pairs sorted by location.
  659.    -- The elements of the pairs_files list are first sorted and stored in a
  660.    -- binary tree. Then each file is opened and read line by line. When the
  661.    -- separator '@' is found the following lines are passed to process_
  662.    -- location_line in order to be printed.
  663.  
  664.       present: boolean;
  665.       max_line: integer := 1000;
  666.       line: string (1..max_line);
  667.       str: sp.string_type;
  668.       pairs_file: text_io.file_type;
  669.       path_name: path;
  670.       list_iter: sl.listiter;
  671.       root: ftp.tree; 
  672.       file_iter: ftp.treeiter;
  673.  
  674.       begin
  675.       -- sort the pairs_files
  676.          file_tree := ftp.create;
  677.          list_iter := sl.makeListIter(pairs_files);
  678.          while sl.more (list_iter) loop
  679.             sl.next(list_iter, str);
  680.             path_name := get_path (str);     
  681.             ftp.insertnode (path_name, file_tree, root, present); 
  682.          end loop;
  683.  
  684.          -- For each pairs file get the stored information line by line.
  685.          file_iter := ftp.maketreeIter(file_tree);
  686.          while ftp.more(file_iter) loop
  687.             ftp.next(file_iter, path_name);
  688.             text_io.open (file => pairs_file,
  689.                           mode => text_io.in_file,
  690.                           name => image(path_name)); 
  691.  
  692.             text_io.set_input(pairs_file);
  693.             str := sp.create (image (path_name));
  694.             source_file_name := get_source_file_name (str);
  695. --| Requirements Satisfied: u.v 1.2.3
  696.             -- Skip over the first part of the file which contains the
  697.             -- pairs sorted by reqrequirement. 
  698.             loop
  699.                text_io.get_line (pairs_file, line, last);
  700.                exit when line(1) = '@';
  701.             end loop;
  702.             while not text_io.end_of_file (pairs_file) loop
  703.                text_io.get_line (pairs_file, line, last);
  704.                process_location_line (sp.create(line));
  705.             end loop;
  706.             text_io.close (pairs_file);
  707.          end loop;
  708.       end location_merge;                                
  709.  
  710.    procedure process_location_line (line: in sp.string_type) is
  711.  
  712.    -- This procedure takes a location line and extracts from it the 
  713.    -- location (which is a full Ada name) and the reference strings with
  714.    -- their line numbers. These items are then printed to the report file.
  715.    -- '%' separates the location from the list of reference strings. Two
  716.    -- reference strings are separated by '$', and ',' is used to separate  
  717.    -- a reference string and its line number.
  718.  
  719.       location_string: sp.string_type;
  720.       req_string     : sp.string_type;
  721.       number: integer;
  722.       line_number    : sp.string_type;
  723.       position, prev_pos : natural := 1;
  724.       temp_pos: positive;
  725.  
  726.       begin
  727.          position := sp.match_c (line,
  728.                                  '%',
  729.                                  prev_pos);           
  730.          location_string := sp.substr(line,
  731.                                       prev_pos,
  732.                                       position - prev_pos);
  733.          prev_pos := position + 1;
  734. --| Requirements Satisfied
  735. --| u.v 1.2.3
  736.          loop
  737.             position := sp.match_c (line,
  738.                                     ',',
  739.                                     prev_pos);
  740.             exit when position = 0 ;
  741.             req_string := sp.substr (line,
  742.                                      prev_pos,
  743.                                      position - prev_pos);
  744.             prev_pos := position + 1;
  745.             position := sp.match_c (line,
  746.                                     '$',
  747.                                     prev_pos);
  748.             line_number := sp.substr (line,
  749.                                       prev_pos,
  750.                                       position - prev_pos);
  751.           
  752.             prev_pos := position + 1;
  753.             po.put (source_file_name);
  754.             po.space (file_name_width - sp.length (source_file_name));
  755.             po.put (location_string);
  756.             po.space(unit_width - sp.length (location_string));
  757.             po.put (req_string);
  758.             po.space (ref_width - sp.length (req_string));
  759.             int_io.get (sp.value(line_number),
  760.                         number,
  761.                         temp_pos);
  762.             int_io.put (int_string, number );                               
  763.             po.put_line ( int_string);
  764.             exit when prev_pos >= last;
  765.          end loop;
  766.       end process_location_line; 
  767.  
  768.    function req_less_eq (x: req_record;
  769.                          y: req_record) return boolean is  
  770.       p: path := get_path (x.pairs_file_name);
  771.       q: path := get_path (y.pairs_file_name);
  772.       begin
  773.          if document_ref."<" (x.ref, y.ref) then
  774.             return true;
  775.          elsif document_ref.eq (x.ref, y.ref) then
  776.             if lessthan(p, q) then
  777.                return true;
  778.             else
  779.                return false;
  780.             end if;
  781.          else
  782.             return false;          
  783.          end if;
  784.       end req_less_eq;
  785.  
  786.    procedure requirement_merge (pairs_files: in sl.list) is
  787.  
  788.    -- Algorithm:
  789.    -- Assign the file names in the pairs_files list to the file_name
  790.    -- fields of the records in req_array. For each element x in req_array
  791.    -- open the corresponding pairs file, read its first line and assign
  792.    -- the appropriate strings to x.ref and x.location_string (see 
  793.    -- process_req_line). Sort the records in req_array tirst by requirements
  794.    -- then by file names. Pass the first record to print_record.
  795.    -- Let start be 1. 
  796.    -- while more records are found loop
  797.    --     read the next line from req_array(start).file.   
  798.    --     if the end of the relevant information in that file is found then
  799.    --        start := start + 1
  800.    --        pass req_array(start) to print_record.
  801.    --        read next line from req_array(start).file
  802.    --     end if
  803.    --     replace req_array(start) with the new record.
  804.    --     insert new record in proper place in req_array.
  805.    --     pass req_array(start) to print_record.
  806.    -- ene loop 
  807.  
  808.       subtype pairs_file_seq is seq (1 .. sl.length (pairs_files));
  809.  
  810.       max_line: integer := 1000;
  811.       str: sp.string_type;
  812.       line: string(1 .. max_line);
  813.       i: natural;
  814.       start: natural := 1;
  815.       iter: sl.listIter := sl.MakeListIter (pairs_files);
  816.       req_array: pairs_file_seq;
  817.       
  818.       begin
  819.          i := 0;
  820.          while sl.more (iter) loop
  821.             i := i + 1;
  822.             sl.next (iter, req_array(i).pairs_file_name);
  823.             req_array(i).source_file_name := get_source_file_name (
  824.                                              req_array(i).pairs_file_name);
  825.             req_array(i).pairs_file := new text_io.file_type;
  826.             text_io.open (
  827.                   file => req_array(i).pairs_file.all,
  828.                   name => sp.value(req_array(i).pairs_file_name),
  829.                   mode => text_io.in_file);
  830.             text_io.get_line (req_array(i).pairs_file.all, line, last);
  831.             str := sp.substr (sp.create (line), 1, last);
  832.             process_req_line (str,
  833.                               req_array(i));
  834.          end loop;
  835.          req_sort (req_array);
  836.          print_record (req_array(start)); 
  837.          loop
  838.             text_io.get_line(req_array(start).pairs_file.all, line, last);
  839.             if line(1) = '@' then
  840.                text_io.close (req_array(start).pairs_file.all);
  841.                exit when start = sl.length (pairs_files);
  842.                start := start + 1;
  843.                print_record (req_array(start));
  844.                text_io.get_line (req_array(start).pairs_file.all, line, last);
  845.             end if;
  846.             exit when line(1) = '@';
  847.             str := sp.substr (sp.create (line), 1, last);
  848.             process_req_line (str,
  849.                               req_array(start));
  850.             req_sort (req_array);
  851.             print_record (req_array(start));
  852.          end loop;    
  853.       end requirement_merge;
  854.  
  855.    procedure process_req_line (line: in sp.string_type;
  856.                                req: in out req_record) is
  857.  
  858.    -- This procedure looks at a req_line and extracts the reference
  859.    -- string and the locations from it. The reference string is assigned to
  860.    -- req.ref and the location part is assigned to req.location_string.
  861.    -- '%' separates the reference string from the list of locations.
  862.   
  863.       position: natural := 1;
  864.       prev_pos: natural := 1;
  865.       i: natural := 1;
  866.       str: sp.string_type;
  867.       begin
  868.          position := sp.match_c (line, '%', prev_pos);
  869.          str := sp.substr (line, prev_pos,
  870.                            position - prev_pos);
  871.          document_ref.scan (s => sp.value(str),
  872.                             index => i,
  873.                             rs => req.ref);
  874.          prev_pos := position + 1;
  875.          req.location_string := sp.substr (line, prev_pos,
  876.                                        sp.length (line) - position);
  877.       end process_req_line;
  878.  
  879.    procedure print_record (req: in req_record) is
  880.  
  881.    -- This prints information from req to the report file. req.location_string
  882.    -- contains Ada unit names and the line numbers of the requirements.
  883.    -- '$' separates two locations, and ',' separates a unit name from a line
  884.    -- number.
  885.  
  886.       location_string: sp.string_type;
  887.       line_number: sp.string_type;
  888.       position: natural := 1;
  889.       temp_pos: natural;
  890.       number: integer;
  891.       prev_pos: natural := 1;
  892.       str: sp.string_type;
  893.       refstr: sp.string_type;
  894.       
  895.       begin
  896.          refstr := sp.create (document_ref.image (req.ref));
  897.          loop
  898.             position := sp.match_c (req.location_string, ',', prev_pos);
  899.             exit when position = 0;
  900.             location_string := sp.substr (req.location_string, prev_pos,
  901.                                           position - prev_pos);
  902.             prev_pos := position + 1;
  903.             position := sp.match_c (req.location_string, '$', prev_pos);
  904.             line_number := sp.substr (req.location_string, prev_pos,
  905.                                           position - prev_pos);
  906.  
  907.             prev_pos := position + 1;
  908.             po.put (refstr);
  909.             po.space (ref_width - sp.length (refstr));
  910.             po.put (req.source_file_name);
  911.             po.space (file_name_width - sp.length (req.source_file_name));            
  912.             po.put (location_string);
  913.             po.space (unit_width - sp.length (location_string));
  914.             int_io.get (sp.value (line_number),
  915.                         number,
  916.                         temp_pos);
  917.             int_io.put (int_string, number);
  918.             po.put_line (int_string);
  919.             exit when prev_pos >= last;
  920.          end loop;
  921.  
  922.       end print_record;                                        
  923.      
  924.    function get_source_file_name (
  925.                     pairs_file_name: in sp.string_type)
  926.                     return sp.string_type is
  927.       suffix: sp.string_type;
  928.  
  929.       begin
  930.          suffix := sp.substr (
  931.                    pairs_file_name, sp.length(pairs_file_name) - 2, 3);
  932.          if sp.equal (suffix, "APR") then
  933.             suffix := sp.create ("ADA");
  934.          elsif sp.equal (suffix, "BPR") then
  935.             suffix := sp.create ("BDY");
  936.          elsif sp.equal (suffix, "DPR") then
  937.             suffix := sp.create ("DAT");
  938.          elsif sp.equal (suffix, "SPR") then         
  939.             suffix := sp.create ("SPC");
  940.          elsif sp.equal (suffix, "UPR") then
  941.             suffix := sp.create ("SUB");
  942.          else
  943.             Text_io.put_line (text_io.standard_output,
  944.                               sp.value (pairs_file_name) &
  945.                               " is not a pairs_file.");
  946.       end if;
  947.       return (sp."&" (
  948.               sp.substr (pairs_file_name, 1, sp.length (pairs_file_name) - 3),
  949.               suffix));
  950.    end get_source_file_name;
  951.  
  952. end merge_pkg;
  953. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  954. --noname.som
  955. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  956. -- B83A01C.ADA
  957.  
  958.  
  959. -- CHECK THAT A STATEMENT LABEL INSIDE AN ACCEPT STATEMENT CANNOT BE
  960. --    THE SAME AS A STATEMENT LABEL OUTSIDE IT.
  961.  
  962.  
  963. -- RM 02/05/80
  964.  
  965.  
  966. PROCEDURE  B83A01C  IS
  967.  
  968.      TASK  TASK1  IS
  969.                      --| Requirements_Satisfied: name_5 (1.2) 1.2
  970.           ENTRY  E1 ;
  971.           ENTRY  E2 ; 
  972.     END  TASK1 ;
  973.  
  974.      TASK BODY  TASK1  IS
  975.      BEGIN
  976.  
  977.           << LAB_OUTSIDE_INACCEPT >>             NULL ;
  978.                       --| Requirements_Satisfied: name_5(1.2) 1.1 
  979.           BEGIN
  980.  
  981.                << LAB_INBLOCK_INACCEPT >>        NULL ;
  982.  
  983.                FOR  I  IN  1..2  LOOP
  984.                     << LAB_INBLOCKLOOP_INACCEPT>>NULL ;
  985.                END LOOP;
  986.  
  987.           END ;
  988.  
  989.           FOR  I  IN  INTEGER  LOOP
  990.                << LAB_INLOOP_INACCEPT >>         NULL ;
  991.           END LOOP;
  992.  
  993.           <<L1>> null;
  994.           if I = 2 then
  995.                I := 7;
  996.       else
  997.                goto L;
  998.           end if;
  999.           goto L1;
  1000.           <<L>> null;
  1001.      
  1002.           ACCEPT  E1  DO
  1003.                << LAB_OUTSIDE_INACCEPT >>        NULL ;-- ERROR: DUPLIC.
  1004.                << LAB_INBLOCK_INACCEPT >>        NULL ;-- ERROR: DUPLIC.
  1005.                << LAB_INBLOCKLOOP_INACCEPT>>     NULL ;-- ERROR: DUPLIC.
  1006.                << LAB_INLOOP_INACCEPT >>         NULL ;-- ERROR: DUPLIC.
  1007.                << LAB_INACCEPT_INACCEPT >>       NULL ;
  1008.           END  E1 ;
  1009.  
  1010.           ACCEPT  E2  DO
  1011.                << LAB_INACCEPT_INACCEPT >>       NULL ;-- ERROR: DUPLIC.
  1012.           END  E2 ;
  1013.  
  1014.      END  TASK1 ;
  1015.  
  1016. BEGIN
  1017.  
  1018.           <<L1>> null;
  1019. --| Requirements_Satisfied: name.name(1.9.66).name(1.2) 6           
  1020.           if I = 2 then
  1021.                I := 7;
  1022.  
  1023. --| Requirements_Satisfied: name.name(1.9.66).name(1.2) 6
  1024.       else
  1025.                goto L;
  1026.           end if;
  1027.           goto L1;
  1028.           <<L>> null;
  1029.  
  1030.      NULL ;
  1031.  
  1032. END B83A01C ;
  1033. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1034. --mtest.bpr
  1035. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1036. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]MTEST.BDY
  1037. another(4) 8%merge_pkg, 7$
  1038. green 3%merge_pkg, 4$
  1039. u.v 1.2.3%merge_pkg.get_path, 15$merge_pkg.image, 46$merge_pkg.location_merge, 108$merge_pkg.process_location_line, 148$
  1040. @
  1041. merge_pkg%another(4) 8, 7$green 3, 4$
  1042. merge_pkg.get_path%u.v 1.2.3, 15$
  1043. merge_pkg.image%u.v 1.2.3, 46$
  1044. merge_pkg.location_merge%u.v 1.2.3, 108$
  1045. merge_pkg.process_location_line%u.v 1.2.3, 148$
  1046. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1047. --rtest.apr
  1048. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1049. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]RTEST.ADA
  1050. a.b(1) 33%REQSREF.parse_file_names, 46$
  1051. bill(7) 5%REQSREF, 2$
  1052. hans 6%REQSREF, 3$
  1053. here 3.2%REQSREF, 14$
  1054. last_string 97%REQSREF.parse_file_names, 130$
  1055. new(4) 4.5%REQSREF, 208$
  1056. one.two 888%REQSREF, 16$
  1057. STRING 88%REQSREF, 25$
  1058. test 110.1%REQSREF, 134$
  1059. Thea 5%, 9$
  1060. this 5%REQSREF.parse_file_names.TRY, 58$
  1061. Very_long_requirement_string(65) 1.2.3%REQSREF, 142$
  1062. @
  1063. %Thea 5, 9$
  1064. REQSREF%bill(7) 5, 2$hans 6, 3$here 3.2, 14$new(4) 4.5, 208$one.two 888, 16$STRING 88, 25$test 110.1, 134$Very_long_requirement_string(65) 1.2.3, 142$
  1065. REQSREF.parse_file_names%a.b(1) 33, 46$last_string 97, 130$
  1066. REQSREF.parse_file_names.TRY%this 5, 58$
  1067. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1068. --b910acab.apr
  1069. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1070. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]B910ACAB.ADA
  1071. a.b.c 7%B910ACA.T, 16$
  1072. a.n 11%B910ACA.T, 23$
  1073. @
  1074. B910ACA.T%a.b.c 7, 16$a.n 11, 23$
  1075. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1076. --noname.pr
  1077. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1078. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]NONAME.SOM
  1079. name.name(1.9.66).name(1.2) 6%B83A01C, 64$B83A01C, 68$
  1080. name_5(1.2) 1.1%B83A01C.TASK1, 23$
  1081. name_5(1.2) 1.2%B83A01C.TASK1, 14$
  1082. @
  1083. B83A01C%name.name(1.9.66).name(1.2) 6, 64$name.name(1.9.66).name(1.2) 6, 68$
  1084. B83A01C.TASK1%name_5(1.2) 1.1, 23$name_5(1.2) 1.2, 14$
  1085. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1086. --ktest.spr
  1087. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1088. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]KTEST.SPC
  1089. Doc.Name.LC 1%kTest.LC, 57$
  1090. Doc.Name.P 1%kTest.P, 6$kTest.P1, 32$
  1091. Doc.Name.P 2%kTest.P, 7$kTest.P1, 33$
  1092. Doc.Name.P 3%kTest.P, 8$kTest.P1, 34$
  1093. Doc.Name.P.Minus 3%kTest.P, 10$kTest.P1, 36$
  1094. Doc.Name.P.Plus 2%kTest.P, 9$kTest.P1, 35$
  1095. Doc.Name.Q 1%kTest.Q, 14$
  1096. Doc.Name.Q 2%kTest.Q, 14$
  1097. Doc.Name.Q 3%kTest.Q, 14$
  1098. Doc.Name.Q1 1%kTest.Q1, 39$
  1099. Doc.Name.Q1 2%kTest.Q1, 39$
  1100. Doc.Name.Q1 3%kTest.Q1, 39$
  1101. Doc.Name.R 1%kTest.R, 18$
  1102. Doc.Name.R 1.1%kTest.R, 19$
  1103. Doc.Name.R 1.2%kTest.R, 20$
  1104. Doc.Name.R 2%kTest.R, 18$
  1105. Doc.Name.R 2.1%kTest.R, 19$
  1106. Doc.Name.R 2.2%kTest.R, 20$
  1107. Doc.Name.R 3%kTest.R, 18$
  1108. Doc.Name.R 3.1%kTest.R, 19$
  1109. Doc.Name.R 3.2%kTest.R, 20$
  1110. Doc.Name.R1 1%kTest.R1, 42$
  1111. Doc.Name.R1 1.1%kTest.R1, 43$
  1112. Doc.Name.R1 1.2%kTest.R1, 44$
  1113. Doc.Name.R1 2%kTest.R1, 42$
  1114. Doc.Name.R1 2.1%kTest.R1, 43$
  1115. Doc.Name.R1 2.2%kTest.R1, 44$
  1116. Doc.Name.R1 3%kTest.R1, 42$
  1117. Doc.Name.R1 3.1%kTest.R1, 43$
  1118. Doc.Name.R1 3.2%kTest.R1, 44$
  1119. Doc.Name.S 1%kTest.S, 24$
  1120. Doc.Name.S 1.1%kTest.S, 25$
  1121. Doc.Name.S 1.2%kTest.S, 26$
  1122. Doc.Name.S 2%kTest.S, 24$
  1123. Doc.Name.S 2.1%kTest.S, 25$
  1124. Doc.Name.S 2.2%kTest.S, 26$
  1125. Doc.Name.S 3%kTest.S, 24$
  1126. Doc.Name.S 3.1%kTest.S, 25$
  1127. Doc.Name.S 3.2%kTest.S, 26$
  1128. Doc.Name.S1 1%kTest.S1, 47$
  1129. Doc.Name.S1 1.1%kTest.S1, 48$
  1130. Doc.Name.S1 1.2%kTest.S1, 49$
  1131. Doc.Name.S1 2%kTest.S1, 47$
  1132. Doc.Name.S1 2.1%kTest.S1, 48$
  1133. Doc.Name.S1 2.2%kTest.S1, 49$
  1134. Doc.Name.S1 3%kTest.S1, 47$
  1135. Doc.Name.S1 3.1%kTest.S1, 48$
  1136. Doc.Name.S1 3.2%kTest.S1, 49$
  1137. Doc.Name.UC 1%kTest.UC, 53$
  1138. Ref 1%kTest.Ref_1_2_no_3, 60$
  1139. Ref 2%kTest.Ref_1_2_no_3, 61$
  1140. @
  1141. kTest.LC%Doc.Name.LC 1, 57$
  1142. kTest.P%Doc.Name.P 1, 6$Doc.Name.P 2, 7$Doc.Name.P 3, 8$Doc.Name.P.Minus 3, 10$Doc.Name.P.Plus 2, 9$
  1143. kTest.P1%Doc.Name.P 1, 32$Doc.Name.P 2, 33$Doc.Name.P 3, 34$Doc.Name.P.Minus 3, 36$Doc.Name.P.Plus 2, 35$
  1144. kTest.Q%Doc.Name.Q 1, 14$Doc.Name.Q 2, 14$Doc.Name.Q 3, 14$
  1145. kTest.Q1%Doc.Name.Q1 1, 39$Doc.Name.Q1 2, 39$Doc.Name.Q1 3, 39$
  1146. kTest.R%Doc.Name.R 1, 18$Doc.Name.R 1.1, 19$Doc.Name.R 1.2, 20$Doc.Name.R 2, 18$Doc.Name.R 2.1, 19$Doc.Name.R 2.2, 20$Doc.Name.R 3, 18$Doc.Name.R 3.1, 19$Doc.Name.R 3.2, 20$
  1147. kTest.R1%Doc.Name.R1 1, 42$Doc.Name.R1 1.1, 43$Doc.Name.R1 1.2, 44$Doc.Name.R1 2, 42$Doc.Name.R1 2.1, 43$Doc.Name.R1 2.2, 44$Doc.Name.R1 3, 42$Doc.Name.R1 3.1, 43$Doc.Name.R1 3.2, 44$
  1148. kTest.Ref_1_2_no_3%Ref 1, 60$Ref 2, 61$
  1149. kTest.S%Doc.Name.S 1, 24$Doc.Name.S 1.1, 25$Doc.Name.S 1.2, 26$Doc.Name.S 2, 24$Doc.Name.S 2.1, 25$Doc.Name.S 2.2, 26$Doc.Name.S 3, 24$Doc.Name.S 3.1, 25$Doc.Name.S 3.2, 26$
  1150. kTest.S1%Doc.Name.S1 1, 47$Doc.Name.S1 1.1, 48$Doc.Name.S1 1.2, 49$Doc.Name.S1 2, 47$Doc.Name.S1 2.1, 48$Doc.Name.S1 2.2, 49$Doc.Name.S1 3, 47$Doc.Name.S1 3.1, 48$Doc.Name.S1 3.2, 49$
  1151. kTest.UC%Doc.Name.UC 1, 53$
  1152. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1153. --mtest.spr
  1154. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1155. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]MTEST.SPC
  1156. a 9%, 3$
  1157. one.two 4.5%merge_pkg, 9$
  1158. red 89%merge_pkg, 11$
  1159. requirement 5%merge_pkg, 23$
  1160. that(6) 9%merge_pkg.requirement_merge, 53$
  1161. u.v 1.2.3%merge_pkg, 13$merge_pkg.location_merge, 42$
  1162. @
  1163. %a 9, 3$
  1164. merge_pkg%one.two 4.5, 9$red 89, 11$requirement 5, 23$u.v 1.2.3, 13$
  1165. merge_pkg.location_merge%u.v 1.2.3, 42$
  1166. merge_pkg.requirement_merge%that(6) 9, 53$
  1167. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1168. --sort.spr
  1169. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1170. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]SORT.SPC
  1171. a.c 4%, 16$
  1172. b.c 99%, 26$
  1173. heute 3%, 21$
  1174. now 4%heap_sort, 20$
  1175. u.v 1.2.3%, 44$
  1176. @
  1177. %a.c 4, 16$b.c 99, 26$heute 3, 21$u.v 1.2.3, 44$
  1178. heap_sort%now 4, 20$
  1179. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1180. --test2.sub
  1181. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1182. --with text_io;
  1183. --| Requirements_Satisfied:    AUI 99
  1184. with ParserDeclarations;
  1185. with reqsref_Utilities;
  1186.  
  1187. separate (Lex)
  1188. function GetNextNonCommentToken return PD.ParseStackElement is
  1189.  
  1190.         use reqsref_Utilities;
  1191.  
  1192.     begin
  1193. --| Requirements_Satisfied: a 9
  1194.         loop
  1195.             CST := GetNextSourceToken;
  1196.  
  1197.             if (CST.gram_sym_val = PT.PackageTokenValue) OR
  1198.                (CST.gram_sym_val = PT.ProcedureTokenValue) OR
  1199.                (CST.gram_sym_val = PT.FunctionTokenValue) OR
  1200.                (CST.gram_sym_val = PT.TaskTokenValue) then
  1201.  
  1202. --| Requirements_Satisfied:first 3.5
  1203.                 Ident_Flag := True;
  1204.  
  1205.             elsif (CST.gram_sym_val = PT.IdentifierTokenValue) OR
  1206.                   (CST.gram_sym_val = PT.StringTokenValue) then
  1207.  
  1208.                 if Ident_Flag then
  1209.                     Identifier := CST.lexed_token.text;
  1210.                     Ident_Flag := False;
  1211.                 end if;
  1212.  
  1213.             end if;
  1214.  
  1215.             if (CST.gram_sym_val = PT.Comment_TokenValue) then
  1216.                 if (is_docref(pd.get_source_text(cst.lexed_token.text))) then
  1217.                    Text_io.put_line (pd.get_source_text(CST.lexed_token.text));
  1218.                 end if;
  1219.             end if;
  1220.  
  1221.  
  1222.             exit when (CST.gram_sym_val = PT.EOF_TokenValue) or
  1223.                       (CST.gram_sym_val /= PT.Comment_TokenValue);
  1224.  
  1225.  
  1226.         end loop;
  1227.  
  1228.         Previous_Line := CST.lexed_token.srcpos_line;
  1229.  
  1230. --| Requirements_Satisfied:           a.b(1) 1.2
  1231. --| Requirements_Satisfied:first 3.5
  1232. -- TEXT_IO.Put_Line(PD.Dump_Parse_Stack_Element(CST));
  1233. --| Requirements_Satisfied:a(1).b.c(2)5.5
  1234. --| Requirements_Satisfied:u.v 1.2.3
  1235.  
  1236.         return CST; -- return the token that is not a comment
  1237.     end GetNextNonCommentToken;
  1238. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1239. --test2.upr
  1240. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1241. USER1:[NOSC.RELEASES.V0301.REQSREF.TEST]TEST2.SUB
  1242. a 9%GetNextNonCommentToken, 12$
  1243. a.b(1) 1.2%GetNextNonCommentToken, 49$
  1244. a(1).b.c(2) 5.5%GetNextNonCommentToken, 52$
  1245. AUI 99%, 2$
  1246. first 3.5%GetNextNonCommentToken, 21$GetNextNonCommentToken, 50$
  1247. u.v 1.2.3%GetNextNonCommentToken, 53$
  1248. @
  1249. %AUI 99, 2$
  1250. GetNextNonCommentToken%a 9, 12$a.b(1) 1.2, 49$a(1).b.c(2) 5.5, 52$first 3.5, 21$first 3.5, 50$u.v 1.2.3, 53$
  1251. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1252. --run3.rpt
  1253. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1254.  
  1255. REQUIREMENTS_REFERENCE                             01/24/86  12:17:25   Page   1
  1256. Reqsref Report
  1257. Requirement         File             Line   Unit
  1258.  
  1259. a 9                 MTEST.SPC           3   
  1260. a 9                 TEST2.SUB          12   GetNextNonCommentToken
  1261. a.b(1) 1.2          TEST2.SUB          49   GetNextNonCommentToken
  1262. a.b(1) 33           RTEST.ADA          46   REQSREF.parse_file_names
  1263. a.b.c 7             B910ACAB.ADA       16   B910ACA.T
  1264. a(1).b.c(2) 5.5     TEST2.SUB          52   GetNextNonCommentToken
  1265. a.c 4               SORT.SPC           16   
  1266. a.n 11              B910ACAB.ADA       23   B910ACA.T
  1267. another(4) 8        MTEST.BDY           7   merge_pkg
  1268. AUI 99              TEST2.SUB           2   
  1269. b.c 99              SORT.SPC           26   
  1270. bill(7) 5           RTEST.ADA           2   REQSREF
  1271. Doc.Name.LC 1       KTEST.SPC          57   kTest.LC
  1272. Doc.Name.P 1        KTEST.SPC           6   kTest.P
  1273. Doc.Name.P 1        KTEST.SPC          32   kTest.P1
  1274. Doc.Name.P 2        KTEST.SPC           7   kTest.P
  1275. Doc.Name.P 2        KTEST.SPC          33   kTest.P1
  1276. Doc.Name.P 3        KTEST.SPC           8   kTest.P
  1277. Doc.Name.P 3        KTEST.SPC          34   kTest.P1
  1278. Doc.Name.P.Minus 3  KTEST.SPC          10   kTest.P
  1279. Doc.Name.P.Minus 3  KTEST.SPC          36   kTest.P1
  1280. Doc.Name.P.Plus 2   KTEST.SPC           9   kTest.P
  1281. Doc.Name.P.Plus 2   KTEST.SPC          35   kTest.P1
  1282. Doc.Name.Q 1        KTEST.SPC          14   kTest.Q
  1283. Doc.Name.Q 2        KTEST.SPC          14   kTest.Q
  1284. Doc.Name.Q 3        KTEST.SPC          14   kTest.Q
  1285. Doc.Name.Q1 1       KTEST.SPC          39   kTest.Q1
  1286. Doc.Name.Q1 2       KTEST.SPC          39   kTest.Q1
  1287. Doc.Name.Q1 3       KTEST.SPC          39   kTest.Q1
  1288. Doc.Name.R 1        KTEST.SPC          18   kTest.R
  1289. Doc.Name.R 1.1      KTEST.SPC          19   kTest.R
  1290. Doc.Name.R 1.2      KTEST.SPC          20   kTest.R
  1291. Doc.Name.R 2        KTEST.SPC          18   kTest.R
  1292. Doc.Name.R 2.1      KTEST.SPC          19   kTest.R
  1293. Doc.Name.R 2.2      KTEST.SPC          20   kTest.R
  1294. Doc.Name.R 3        KTEST.SPC          18   kTest.R
  1295. Doc.Name.R 3.1      KTEST.SPC          19   kTest.R
  1296. Doc.Name.R 3.2      KTEST.SPC          20   kTest.R
  1297. Doc.Name.R1 1       KTEST.SPC          42   kTest.R1
  1298. Doc.Name.R1 1.1     KTEST.SPC          43   kTest.R1
  1299. Doc.Name.R1 1.2     KTEST.SPC          44   kTest.R1
  1300. Doc.Name.R1 2       KTEST.SPC          42   kTest.R1
  1301. Doc.Name.R1 2.1     KTEST.SPC          43   kTest.R1
  1302. Doc.Name.R1 2.2     KTEST.SPC          44   kTest.R1
  1303. Doc.Name.R1 3       KTEST.SPC          42   kTest.R1
  1304. Doc.Name.R1 3.1     KTEST.SPC          43   kTest.R1
  1305. Doc.Name.R1 3.2     KTEST.SPC          44   kTest.R1
  1306. Doc.Name.S 1        KTEST.SPC          24   kTest.S
  1307. Doc.Name.S 1.1      KTEST.SPC          25   kTest.S
  1308. Doc.Name.S 1.2      KTEST.SPC          26   kTest.S
  1309. Doc.Name.S 2        KTEST.SPC          24   kTest.S
  1310. Doc.Name.S 2.1      KTEST.SPC          25   kTest.S
  1311. Doc.Name.S 2.2      KTEST.SPC          26   kTest.S
  1312. Doc.Name.S 3        KTEST.SPC          24   kTest.S
  1313. Doc.Name.S 3.1      KTEST.SPC          25   kTest.S
  1314. Doc.Name.S 3.2      KTEST.SPC          26   kTest.S
  1315. Doc.Name.S1 1       KTEST.SPC          47   kTest.S1
  1316. Doc.Name.S1 1.1     KTEST.SPC          48   kTest.S1
  1317. Doc.Name.S1 1.2     KTEST.SPC          49   kTest.S1
  1318. REQUIREMENTS_REFERENCE                             01/24/86  12:17:25   Page   2
  1319. Reqsref Report
  1320. Requirement         File             Line   Unit
  1321.  
  1322. Doc.Name.S1 2       KTEST.SPC          47   kTest.S1
  1323. Doc.Name.S1 2.1     KTEST.SPC          48   kTest.S1
  1324. Doc.Name.S1 2.2     KTEST.SPC          49   kTest.S1
  1325. Doc.Name.S1 3       KTEST.SPC          47   kTest.S1
  1326. Doc.Name.S1 3.1     KTEST.SPC          48   kTest.S1
  1327. Doc.Name.S1 3.2     KTEST.SPC          49   kTest.S1
  1328. Doc.Name.UC 1       KTEST.SPC          53   kTest.UC
  1329. first 3.5           TEST2.SUB          21   GetNextNonCommentToken
  1330. first 3.5           TEST2.SUB          50   GetNextNonCommentToken
  1331. green 3             MTEST.BDY           4   merge_pkg
  1332. hans 6              RTEST.ADA           3   REQSREF
  1333. here 3.2            RTEST.ADA          14   REQSREF
  1334. heute 3             SORT.SPC           21   
  1335. last_string 97      RTEST.ADA         130   REQSREF.parse_file_names
  1336. name.name(1.9.66).name(1.2) 6
  1337.                     NONAME.SOM         64   B83A01C
  1338. name.name(1.9.66).name(1.2) 6
  1339.                     NONAME.SOM         68   B83A01C
  1340. name_5(1.2) 1.1     NONAME.SOM         23   B83A01C.TASK1
  1341. name_5(1.2) 1.2     NONAME.SOM         14   B83A01C.TASK1
  1342. new(4) 4.5          RTEST.ADA         208   REQSREF
  1343. now 4               SORT.SPC           20   heap_sort
  1344. one.two 4.5         MTEST.SPC           9   merge_pkg
  1345. one.two 888         RTEST.ADA          16   REQSREF
  1346. red 89              MTEST.SPC          11   merge_pkg
  1347. Ref 1               KTEST.SPC          60   kTest.Ref_1_2_no_3
  1348. Ref 2               KTEST.SPC          61   kTest.Ref_1_2_no_3
  1349. requirement 5       MTEST.SPC          23   merge_pkg
  1350. STRING 88           RTEST.ADA          25   REQSREF
  1351. test 110.1          RTEST.ADA         134   REQSREF
  1352. that(6) 9           MTEST.SPC          53   merge_pkg.requirement_merge
  1353. Thea 5              RTEST.ADA           9   
  1354. this 5              RTEST.ADA          58   REQSREF.parse_file_names.TRY
  1355. u.v 1.2.3           MTEST.BDY          15   merge_pkg.get_path
  1356. u.v 1.2.3           MTEST.BDY          46   merge_pkg.image
  1357. u.v 1.2.3           MTEST.BDY         108   merge_pkg.location_merge
  1358. u.v 1.2.3           MTEST.BDY         148   merge_pkg.process_location_line
  1359. u.v 1.2.3           MTEST.SPC          13   merge_pkg
  1360. u.v 1.2.3           MTEST.SPC          42   merge_pkg.location_merge
  1361. u.v 1.2.3           SORT.SPC           44   
  1362. u.v 1.2.3           TEST2.SUB          53   GetNextNonCommentToken
  1363. Very_long_requirement_string(65) 1.2.3
  1364.                     RTEST.ADA         142   REQSREF
  1365. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1366. --run4.rpt
  1367. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1368.  
  1369. REQUIREMENTS_REFERENCE                             01/24/86  12:18:24   Page   1
  1370. Reqsref Report
  1371. File             Line   Unit                               Requirement
  1372.  
  1373. B910ACAB.ADA       16   B910ACA.T                          a.b.c 7
  1374. B910ACAB.ADA       23   B910ACA.T                          a.n 11
  1375. KTEST.SPC          57   kTest.LC                           Doc.Name.LC 1
  1376. KTEST.SPC           6   kTest.P                            Doc.Name.P 1
  1377. KTEST.SPC           7   kTest.P                            Doc.Name.P 2
  1378. KTEST.SPC           8   kTest.P                            Doc.Name.P 3
  1379. KTEST.SPC          10   kTest.P                            Doc.Name.P.Minus 3
  1380. KTEST.SPC           9   kTest.P                            Doc.Name.P.Plus 2
  1381. KTEST.SPC          32   kTest.P1                           Doc.Name.P 1
  1382. KTEST.SPC          33   kTest.P1                           Doc.Name.P 2
  1383. KTEST.SPC          34   kTest.P1                           Doc.Name.P 3
  1384. KTEST.SPC          36   kTest.P1                           Doc.Name.P.Minus 3
  1385. KTEST.SPC          35   kTest.P1                           Doc.Name.P.Plus 2
  1386. KTEST.SPC          14   kTest.Q                            Doc.Name.Q 1
  1387. KTEST.SPC          14   kTest.Q                            Doc.Name.Q 2
  1388. KTEST.SPC          14   kTest.Q                            Doc.Name.Q 3
  1389. KTEST.SPC          39   kTest.Q1                           Doc.Name.Q1 1
  1390. KTEST.SPC          39   kTest.Q1                           Doc.Name.Q1 2
  1391. KTEST.SPC          39   kTest.Q1                           Doc.Name.Q1 3
  1392. KTEST.SPC          18   kTest.R                            Doc.Name.R 1
  1393. KTEST.SPC          19   kTest.R                            Doc.Name.R 1.1
  1394. KTEST.SPC          20   kTest.R                            Doc.Name.R 1.2
  1395. KTEST.SPC          18   kTest.R                            Doc.Name.R 2
  1396. KTEST.SPC          19   kTest.R                            Doc.Name.R 2.1
  1397. KTEST.SPC          20   kTest.R                            Doc.Name.R 2.2
  1398. KTEST.SPC          18   kTest.R                            Doc.Name.R 3
  1399. KTEST.SPC          19   kTest.R                            Doc.Name.R 3.1
  1400. KTEST.SPC          20   kTest.R                            Doc.Name.R 3.2
  1401. KTEST.SPC          42   kTest.R1                           Doc.Name.R1 1
  1402. KTEST.SPC          43   kTest.R1                           Doc.Name.R1 1.1
  1403. KTEST.SPC          44   kTest.R1                           Doc.Name.R1 1.2
  1404. KTEST.SPC          42   kTest.R1                           Doc.Name.R1 2
  1405. KTEST.SPC          43   kTest.R1                           Doc.Name.R1 2.1
  1406. KTEST.SPC          44   kTest.R1                           Doc.Name.R1 2.2
  1407. KTEST.SPC          42   kTest.R1                           Doc.Name.R1 3
  1408. KTEST.SPC          43   kTest.R1                           Doc.Name.R1 3.1
  1409. KTEST.SPC          44   kTest.R1                           Doc.Name.R1 3.2
  1410. KTEST.SPC          60   kTest.Ref_1_2_no_3                 Ref 1
  1411. KTEST.SPC          61   kTest.Ref_1_2_no_3                 Ref 2
  1412. KTEST.SPC          24   kTest.S                            Doc.Name.S 1
  1413. KTEST.SPC          25   kTest.S                            Doc.Name.S 1.1
  1414. KTEST.SPC          26   kTest.S                            Doc.Name.S 1.2
  1415. KTEST.SPC          24   kTest.S                            Doc.Name.S 2
  1416. KTEST.SPC          25   kTest.S                            Doc.Name.S 2.1
  1417. KTEST.SPC          26   kTest.S                            Doc.Name.S 2.2
  1418. KTEST.SPC          24   kTest.S                            Doc.Name.S 3
  1419. KTEST.SPC          25   kTest.S                            Doc.Name.S 3.1
  1420. KTEST.SPC          26   kTest.S                            Doc.Name.S 3.2
  1421. KTEST.SPC          47   kTest.S1                           Doc.Name.S1 1
  1422. KTEST.SPC          48   kTest.S1                           Doc.Name.S1 1.1
  1423. KTEST.SPC          49   kTest.S1                           Doc.Name.S1 1.2
  1424. KTEST.SPC          47   kTest.S1                           Doc.Name.S1 2
  1425. KTEST.SPC          48   kTest.S1                           Doc.Name.S1 2.1
  1426. KTEST.SPC          49   kTest.S1                           Doc.Name.S1 2.2
  1427. KTEST.SPC          47   kTest.S1                           Doc.Name.S1 3
  1428. KTEST.SPC          48   kTest.S1                           Doc.Name.S1 3.1
  1429. KTEST.SPC          49   kTest.S1                           Doc.Name.S1 3.2
  1430. KTEST.SPC          53   kTest.UC                           Doc.Name.UC 1
  1431. MTEST.BDY           7   merge_pkg                          another(4) 8
  1432. REQUIREMENTS_REFERENCE                             01/24/86  12:18:24   Page   2
  1433. Reqsref Report
  1434. File             Line   Unit                               Requirement
  1435.  
  1436. MTEST.BDY           4   merge_pkg                          green 3
  1437. MTEST.BDY          15   merge_pkg.get_path                 u.v 1.2.3
  1438. MTEST.BDY          46   merge_pkg.image                    u.v 1.2.3
  1439. MTEST.BDY         108   merge_pkg.location_merge           u.v 1.2.3
  1440. MTEST.BDY         148   merge_pkg.process_location_line    u.v 1.2.3
  1441. MTEST.SPC           3                                      a 9
  1442. MTEST.SPC           9   merge_pkg                          one.two 4.5
  1443. MTEST.SPC          11   merge_pkg                          red 89
  1444. MTEST.SPC          23   merge_pkg                          requirement 5
  1445. MTEST.SPC          13   merge_pkg                          u.v 1.2.3
  1446. MTEST.SPC          42   merge_pkg.location_merge           u.v 1.2.3
  1447. MTEST.SPC          53   merge_pkg.requirement_merge        that(6) 9
  1448. NONAME.SOM         64   B83A01C                            name.name(1.9.66).name(1.2) 6
  1449. NONAME.SOM         68   B83A01C                            name.name(1.9.66).name(1.2) 6
  1450. NONAME.SOM         23   B83A01C.TASK1                      name_5(1.2) 1.1
  1451. NONAME.SOM         14   B83A01C.TASK1                      name_5(1.2) 1.2
  1452. RTEST.ADA           9                                      Thea 5
  1453. RTEST.ADA           2   REQSREF                            bill(7) 5
  1454. RTEST.ADA           3   REQSREF                            hans 6
  1455. RTEST.ADA          14   REQSREF                            here 3.2
  1456. RTEST.ADA         208   REQSREF                            new(4) 4.5
  1457. RTEST.ADA          16   REQSREF                            one.two 888
  1458. RTEST.ADA          25   REQSREF                            STRING 88
  1459. RTEST.ADA         134   REQSREF                            test 110.1
  1460. RTEST.ADA         142   REQSREF                            Very_long_requirement_string(65) 1.2.3
  1461. RTEST.ADA          46   REQSREF.parse_file_names           a.b(1) 33
  1462. RTEST.ADA         130   REQSREF.parse_file_names           last_string 97
  1463. RTEST.ADA          58   REQSREF.parse_file_names.TRY       this 5
  1464. SORT.SPC           16                                      a.c 4
  1465. SORT.SPC           26                                      b.c 99
  1466. SORT.SPC           21                                      heute 3
  1467. SORT.SPC           44                                      u.v 1.2.3
  1468. SORT.SPC           20   heap_sort                          now 4
  1469. TEST2.SUB           2                                      AUI 99
  1470. TEST2.SUB          12   GetNextNonCommentToken             a 9
  1471. TEST2.SUB          49   GetNextNonCommentToken             a.b(1) 1.2
  1472. TEST2.SUB          52   GetNextNonCommentToken             a(1).b.c(2) 5.5
  1473. TEST2.SUB          21   GetNextNonCommentToken             first 3.5
  1474. TEST2.SUB          50   GetNextNonCommentToken             first 3.5
  1475. TEST2.SUB          53   GetNextNonCommentToken             u.v 1.2.3
  1476. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1477. --badrefs.dat
  1478. --::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1479. package badrefs is
  1480.  
  1481. Procedure P;
  1482. --| Requirements_Satisfied: Doc_Name.No_Para
  1483.  
  1484. Procedure Q;
  1485. --| Requirements_Satisfied: 2
  1486.  
  1487. Procedure R;
  1488. --| Requirements_Satisfied: D 1, 2, 3
  1489.  
  1490.  
  1491. end badrefs;
  1492.