1 06/18/80  check_short_strings
 2 
 3 Syntax:  check_short_strings path
 4 
 5 
 6 Function:  checks a program for some particular cases of invalid PL/I that will
 7 no longer happen to work in PL/I Release 26.
 8 
 9 
10 Arguments:
11 path
12    is the pathname of a PL/I source segment; the pl1 suffix may be omitted.
13 
14 
15 Notes:  For information on how PL/I release 26 differs from previous releases,
16 please see pl1_code_changes.info.  Check_short_strings only checks for some
17 entry misdeclarations; it does not check for misdeclarations in based variables
18 or external static variables.
19 
20 Check_short_strings will indicate if a program misdeclares an entry so there is
21 a mismatch in the alignment attribute for short bit string or short character
22 parameters or return values, and the invalid program would have happened to
23 work with PL/I release 25 and will not work in PL/I release 26.  Programs with
24 this type of misdeclaration declare an entry to have an unaligned short string
25 parameter or return value, the called program actually has the parameter or
26 return value declared aligned, and the argument passed to the entry is a member
27 of a structure and starts on the first bit of a word.  If the argument is a
28 level one variable, the values of any pad bits to the right of the value of the
29 variable are not used for data.  If the argument doesn't start on the first bit
30 of the word, the programs fail with PL/I release 25 and check_short_strings
31 will not indicate this.  Check_short_strings is designed to only catch invalid
32 programs that happened to work with release 25 and won't work with release 26.
33 
34 
35 Check_short_strings compiles the program in the process directory.  It then
36 checks all call statements and function references to see if a short string
37 argument is a member of a structure and starts on a word boundary.  If this is
38 the case, it initiates the called program using the search rules and checks the
39 called program's argument descriptors to see if the corresponding parameter or
40 return value is aligned.  If so, it prints a message.
41 
42 
43 Check_short_strings must be able to find PL/I release 26 via the search rules.