When used, the func_arg_1 argument describes carriage-control information for the input data record, and the func_arg_2 argument describes carriage-control information for the output data record. The input data record is passed to the format routine (input filter or output filter) for processing, and the output data record is returned by the format routine (input filter or output filter). One of the tasks performed by the main format routine (routine code PSM$K_MAIN_FORMAT) is that of embedding the carriage-control information (specified by func_arg_1) into the data record (specified by func_desc_1). Thus, the output data (specified by func_desc_2) contains embedded carriage control and is thus no longer in record format; it is, therefore, properly referred to as an output data stream rather than an output data record. Similarly, the output filter routine (routine code PSM$K_OUTPUT_ FILTER), which executes after the main format routine, uses neither the func_arg_1 nor func_arg_2 argument; the data it receives (via func_desc_1) and the data it returns (via func_ desc_2) are data streams, not data records. However, the input filter routine (routine code PSM$K_INPUT_ FILTER), which executes before the main format routine, uses both func_arg_1 and func_arg_2. This is so because the main format routine has not yet executed, and so the carriage control information has not yet been embedded in the data record.