1 02/21/85  display_entry_point_dcl, depd
 2 
 3 Syntax as a command:  depd virtual_entry
 4 
 5 
 6 Syntax as an active function:  [depd virtual_entry]
 7 
 8 
 9 Function: prints a PL/I declare statement describing a procedure entry
10 point or other, system-wide, external data constant.  The command
11 obtains the entry point declaration: from data files which contain the
12 declarations of all unusual procedure entry points (ALM segments,
13 procedures written as subroutines but called as functions, etc.)  and
14 system-wide external data values (e.g., sys_info$max_seg_size,
15 iox_$user_output, etc.), or from argument descriptors for the entry
16 point parameters which are included with the procedure entry point
17 itself.
18 
19 When invoked as an active function, the declaration printed by a
20 command invocation is returned as the active function value.
21 
22 
23 Arguments:
24 virtual_entry
25    a character string representation of the procedure entry point or
26    external data value whose declaration is to be printed (see
27    virtual_entries.gi).
28 
29 
30 Notes: Most command and active function entry points do not declare
31 arguments in their procedure statements since they accept a variable
32 number of arguments.  They also do not use the options(variable)
33 attribute in their procedure statements.  Therefore, when the depd
34 command encounters a procedure entry point with no declared arguments
35 and without options(variable), it assumes the options(variable)
36 attribute required for commands and active functions and prints a
37 declare statement of the form:
38    dcl help entry options(variable);
39 depd distinguishes between such assumed options(variable) entries and
40 those which explicitly use the options(variable) attribute in their
41 procedure statement by printing "entry" for the assumed case and
42 "entry()" for the explicit case.  Thus, it prints a declaration for
43 depd, which explicitly uses options(variable), as:
44    dcl depd entry() options(variable);
45 
46 
47 For procedures which use structures as arguments, certain structure
48 declarations are inexactly returned as parameter declarations because
49 the mechanism for encoding argument descriptors does not provide an
50 adequate description of the alignment of a structure.  The descriptor
51 only determines whether the overall structure is packed or not, and
52 does not specify whether or not it was originally declared with the
53 aligned attribute.
54 
55 The following structures generate the same argument descriptors, even
56 though PL/I treats the level 1 structures as having different
57 attributes:
58    dcl 1 s2 structure aligned,
59          2 el1 fixed bin aligned,
60          2 el2 fixed bin aligned;
61 
62 
63    dcl 1 s2 structure,
64          2 el1 fixed bin aligned,
65          2 el2 fixed bin aligned;
66 depd reproduces the declaration for s2 when either s1 or s2 are used as
67 parameters for an entry point.  In order to bypass this problem,
68 declare the subroutine properly in your personal .dcl segment (see
69 "Notes on user-provided data files" below), and place this segment in
70 your "declare" search paths.
71 
72 
73 Notes on search list: The depd command uses the "declare" search list,
74 which has the synonym "dcl", to find data files describing unusual
75 procedure entry points.  The default search list identifies the data
76 file:
77    >sss>pl1.dcl
78 
79 For more information about search lists, see the descriptions of the
80 search facility commands and, in particular, the add_search_paths
81 command.
82 
83 
84 Notes on user-provided data files: Users may provide data files which
85 redeclare standard system entry points (e.g., redeclaring a subroutine
86 as a function) or which declare their own entry points or external
87 data items.  Data items have the general form of
88    virtual_entry declaration
89 
90 For example,
91    ioa_ entry options(variable)
92 
93 Note that the word "dcl" is not included in the data item, nor does the
94 declaration end with a semicolon (;).  External data values are
95 declared in a similar fashion.  For example,
96    iox_$user_output ptr external static