1 02/08/84  assign_
  2 
  3 
  4 Entry points in assign_:
  5    (List is generated by the help command)
  6 
  7 
  8 :Entry: assign_: 02/08/84  assign_
  9 
 10 Function: assigns a specified source value to a specified target.
 11 This subroutine handles the following data types: 1-12, 19-22, 33, 34,
 12 41-46.  Any other type will produce an error.  It uses rounding in the
 13 conversion when the target is floating point or when the source is
 14 floating and the target is character, and uses truncation in all other
 15 cases.
 16 
 17 
 18 Syntax:
 19 declare assign_ entry (ptr, fixed bin, fixed bin(35), ptr, fixed bin,
 20      fixed bin(35));
 21 call assign_ (target_ptr, target_type, target_length, source_ptr,
 22      source_type, source_length);
 23 
 24 
 25 Arguments:
 26 target_ptr
 27    points to the target of the assignment; it can contain a bit offset.
 28    (Input)
 29 target_type
 30    specifies the type of the target; its value is 2*M+P where M is the
 31    Multics standard data type code (see the Programmer's Reference
 32    Manual) and P is 0 if the target is unpacked and 1 if the target is
 33    packed.  (Input)
 34 
 35 
 36 target_length
 37    is the string length or arithmetic scale and precision of the
 38    target.  If the target is arithmetic, the target_length word
 39    consists of two adjacent unaligned halfwords.  The left halfword is
 40    a fixed bin(17) representing the signed scale and the right halfword
 41    is a fixed bin(18) unsigned integer representing the precision.
 42    (Input) The include file encoded_precision.incl.pl1 declares this
 43    as:
 44       dcl 1 encoded_precision  based aligned,
 45             2 scale            fixed bin(17) unaligned,
 46             2 prec             fixed bin(18) unsigned unaligned;
 47 
 48 
 49 source_ptr
 50    points at the source of the assignment; it can contain a bit offset.
 51    (Input)
 52 source_type
 53    specifies the source type using the same format as target_type.
 54    (Input)
 55 source_length
 56    is the string length or arithmetic scale and precision of the source
 57    using the same format as target_length.  (Input)
 58 
 59 
 60 :Entry:  computational_:  02/08/84 assign_$computational_
 61 
 62 
 63 Function: assigns a specified source value to a specified target.  It
 64 can handle any computational Multics data type including all PL/I
 65 computational data and all COBOL and FORTRAN data types.  This entry
 66 uses the same rules for rounding and truncation as assign_.
 67 
 68 
 69 Syntax:
 70 declare assign_$computational_ entry (ptr, ptr, fixed bin(35));
 71 call assign_$computational_ (tar_str_ptr, src_str_ptr, code);
 72 
 73 
 74 Arguments:
 75 tar_str_ptr
 76    is a pointer to a structure which defines the address and attributes
 77    of the target.  The format of this structure is defined in
 78    computational_data.incl.pl1.  (Input)
 79 src_str_ptr
 80    is a pointer to a structure giving the attributes of the source.
 81    This structure has the same format as the one used for the target.
 82    (Input)
 83 code
 84    is a standard system code.  It will be zero if the conversion was
 85    sucessful, or error_table_$bad_conversion if either data type was
 86    not computational.  It is also possible that the conversion
 87    condition will be signalled, if the source data can not be converted
 88    to the requested target type.  (Output)
 89 
 90 
 91 :Entry:  assign_round_:  02/08/84 assign_$assign_round_
 92 
 93 
 94 Function: assigns a source value to a target value, but always rounds.
 95 Otherwise it is identical to assign_.
 96 
 97 
 98 Syntax:
 99 declare assign_$assign_round_ entry (ptr, fixed bin, fixed bin(35),
100      ptr, fixed bin, fixed bin(35));
101 call assign_$assign_round_ (target_ptr, target_type, target_length,
102      source_ptr, source_type, source_length);
103 
104 
105 Arguments:
106 target_ptr
107    points to the target of the assignment; it can contain a bit offset.
108    (Input)
109 target_type
110    specifies the type of the target.  (Input)
111 target_length
112    is the string length or arithmetic scale and precision of the
113    target.  (Input)
114 
115 
116 source_ptr
117    points at the source of the assignment; it can contain a bit offset.
118    (Input)
119 source_type
120    specifies the source type using the same format as target_type.
121    (Input)
122 source_length
123    is the string length or arithmetic scale and precision of the source
124    using the same format as target_length.  (Input)
125 
126 
127 :Entry:  assign_truncate_:  02/08/84 assign_$assign_truncate_
128 
129 
130 Function: assigns a source value to a target value, but always
131 truncates.  Otherwise it is identical to assign_.
132 
133 
134 Syntax:
135 declare assign_$assign_truncate_ entry (ptr, fixed bin, fixed bin(35),
136      ptr, fixed bin, fixed bin(35));
137 call assign_$assign_truncate_ (target_ptr, target_type, target_length,
138      source_ptr, source_type, source_length);
139 
140 
141 Arguments:
142 target_ptr
143    points to the target of the assignment; it can contain a bit offset.
144    (Input)
145 target_type
146    specifies the type of the target.  (Input)
147 target_length
148    is the string length or arithmetic scale and precision of the
149    target.  (Input)
150 
151 
152 source_ptr
153    points at the source of the assignment; it can contain a bit offset.
154    (Input)
155 source_type
156    specifies the source type using the same format as target_type.
157    (Input)
158 source_length
159    is the string length or arithmetic scale and precision of the source
160    using the same format as target_length.  (Input)