01/06/82 apl_quadcall Syntax: Function call: V <- qCALL (entry_dcl; arg1; arg2; ...; argN) Subroutine call: qCALL (entry_dcl; arg1; arg2; ...; argN) where 'q' is the APL quad symbol. Function: an APL system function to provide APL users the ability to call a FORTRAN or PL/I routine. If the routine is a subroutine, no result is returned to APL. But if the routine is a function, the function's value is returned as the result. Arguments: entry_dcl is an APL character value containing a PL/I style entry declaration specifying the routine to be called, the number of arguments it takes, whether it is a subroutine or function, and the types of the arguments and function value. (Input) (See 'Entry Declaration' below for details.) arg1, arg2, ... argN are the APL variables and values to be used as the arguments of the routine which is being called. (Update) If an argument is a simple variable (as opposed to a constant, an expression or an indexed variable), the value of that variable is updated to reflect any changes made by the called routine. Entry Declaration: The entry declaration is identical to that of PL/I (except that the 'entry' keyword is optional), with the following restrictions: (1) The attributes in a parameter declaration must be in the folowing order: dimensions, type, size and alignment. (2) A lower bound may not be specified for a dimension. (3) The mode (i.e 'real' or 'complex') may not be specified. (4) The only types supported are: bit, char, entry, fixed bin, and float bin. (5) Neither dimensions nor parameter descriptions (other than 'options (variable)') may be specified for 'entry' values. (6) A scale factor may not be specified for 'fixed' values. (7) 'fixed' and 'float' values may not be unaligned. A typical declaration would be: 'get_line_length_$stream(char(*), fixed bin(35)) returns(fixed bin)' Notes: If a simple variable is passed as an argument, that variable need not have been previously assigned a value. In such a case, the value passed to the called routine for that argument has the shape and type indicated by the entry declaration and is initialized to binary zeroes. The value of an argument must agree with the type specified in the entry declaration. For example, if an argument is to be passed as a 'bit' value, it must be numeric and contain only zeroes and ones. The shape of an argument must agree with that specified in the entry declaration. This usually means that an argument has the shape indicated by the declaration. However, an argument that is to be passed as a 'bit' or 'char' value is also considered to have the correct shape if its rank is one greater than in the declaration, its shape when the last dimension is excluded is the same as in the declaration, and the length of the last dimension is the same as the size attribute in the declaration. For example a 3x4 character matrix may be passed as '(3, 4) char (1)' or '(3) char (4)'. Either a positive integer or an asterisk may be used in the entry declaration to specify the length of a dimension or the size of a 'bit' or 'char' value. An asterisk in a dimension specification means use the current length of the corresponding dimension of the argument. An asterisk in a size attribute means use the current length of the last dimension of the argument. Asterisks may not be used when the corresponding argument is a simple variable that has not yet been assigned a value. Asterisks may only be used in the 'returns' attribute if the routine being called was written in PL/I and contains asterisks in the 'returns' attribute of its header. If 'options (variable)' is given in place of parameter declarations, any number of arguments may be supplied. A rank N numeric argument is passed as an N-dimension array of 'float bin(63)' numbers. A rank N character argument is passed as an (N-1)-dimension array of 'char(M)', where M is the size of the argument's last dimension. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved