1 05/10/84  hunt_dec
 2 
 3 Syntax as a command:  hunt_dec {path} {-control_args}
 4 
 5 
 6 Function:  searches a specified subtree of the hierarchy for all PL/I
 7 object segments that are either freestanding or included in an archive
 8 file.
 9 
10 
11 Arguments:
12 path
13    is the pathname of a directory to be interpreted as the root of the
14    subtree in which to search and classify PL/I object segments.  If
15    you don't specify path, the working directory is assumed.
16 
17 
18 Control arguments:
19 -aligned_decimal path, -ad path
20    creates the ASCII segment listing the absolute pathnames of PL/I
21    object segments and archive segments containing components
22    classified as "aligned decimal" with path suffixed with "hd".
23 -unaligned_decimal path, -ud path
24    creates the ASCII segment listing the absolute pathnames of PL/I
25    object segments and archive segments containing components
26    classified as "unaligned decimal" with path suffixed with "hd".
27 
28 
29 Notes:  Each PL/I object segment is classified according to its use of
30 arithmetic decimal instructions and how these instructions access the
31 data.  The three classes are "no decimal", "aligned decimal", and
32 "unaligned decimal".
33 
34 This command aids you when PL/I programs compiled using "unaligned
35 decimal" are to be recompiled using the newer PL/I compiler
36 implementing packed decimal, which was part of Multics Release 8.0.
37 This was an incompatible change because the layout of variables
38 containing the unaligned and decimal attributes was changed.
39 Therefore, find those PL/I programs that used "unaligned decimal" so
40 that the appropriate program and data base changes can be made before
41 recompiling the program using the new compiler.
42 
43 
44 If you specify no control arguments, two ASCII segments are created in
45 the working directory.  One segment, aligned_decimal.hd, is a list of
46 the absolute pathnames of PL/I object segments and archive segments
47 containing PL/I object segments classified as "aligned decimal".  The
48 absolute pathname of the archive segment is followed by a space, then
49 by the name of the archive's component classified as "aligned decimal".
50 This occurs for each component of the archive that is classified as
51 such.  Another segment, unaligned_decimal.hd, is created in the working
52 directory for the class "unaligned decimal".  No segment is created for
53 the class "no decimal".
54 
55 
56 This command uses the following algorithm to classify PL/I object
57 segments.  The text section is scanned for EIS decimal arithmetic
58 instructions generated by the PL/I compiler.  If none are found, the
59 object segment is classified as "no decimal".  If some are found, they
60 and their descriptors are examined for address modification and nonzero
61 digit offsets.  If either is present, the object segment is classified
62 as "unaligned decimal"; otherwise, it is classified as "aligned
63 decimal".
64 
65 This command forces access to all segments in its search path.  If
66 unable to access a segment, it bypasses the segment without classifying
67 it.