08-204 To: J3 From: Van Snyder Subject: Transparent inter-program data transport via I/O statements Date: 2008 June 10 References: 08-007r2 1. Introduction Transporting a structure from one program to another via MPI or PVM or some other C-based library is tedious, error prone, and fragile. Asychronous data transport is problematical, and has been the subject of substantial correspondence. Coarrays are not going to help with inter-program data transport; they're only for intra-program data transport. 2. Proposal o Add a specifier to OPEN, say MORE= or EXTRA=, with a value that is a default character scalar expression. Its use is processor dependent. o Add section notes in Annex C urging processors to interpret the specifier to facilitate inter-program communication via input/output statements. Most systems already provide this, but the program at one end is specialized, e.g. NFS, not something general. A new specifier is not strictly necessary, since the interpretation of the FILE= specifier is processor dependent, but on most systems the file names are quite general so a processor might have trouble noticing something special. 3. Edits [203: 9.5.6.2 R905] ---------------------------------------------------- Editor: Add another RHS in alphabetical order: " <> EXTRA = " [204: 9.5.6.9+] -------------------------------------------------------- Editor: Add a new subclause: "9.5.6.9a EXTRA= specifier in the OPEN statement "The interpretation of the in the EXTRA= specifier is processor dependent. Interpretations are suggested in C.6.3. The relationship between the value of the EXTRA= specifier and the values of other specifiers, such as ACCESS= or FORM=, is processor dependent." [460: after "the encoding ... (9.5.6.9)" ] ----------------------------- Editor: Insert an item: "o the interpretation of the in the EXTRA= specifier in an OPEN statemet (9.5.6.9a);" [488: C.6.3p14+] ------------------------------------------------------- Editor: Add a paragraph: "The interpretation of the value of the EXTRA= specifier is processor dependent. One suggested use is to indicate that the connection is to be opened for inter-program data transfer, not data transfer between the program and a file, and to specify the mechanism of that transfer. This is especially useful for transferring structures since they would usually otherwise need to be treated one ultimate component at a time. It is useful, but less so, for objects of intrinsic types, since different routines are not needed for each type, kind and rank. Another potential use is to specify a nondefault representation for unformatted files, say XDR, or with byte orders reversed."