J3/16-241 To: J3 From: Bill Long Subject: Missing constraint on VALUE Date: 2016 August 31 Reference: 16-007r2 Interp F08/0096 added a constraint to prohibit an array dummy argument with VALUE in a BIND(C) procedure. This was included in Corrigendum 3 for F2008. This was done as an edit to an existing constraint. Unfortunately, TS 29113 affected the same constraint, effectively eliminating the change from Corrigendum 3. The restriction from F08/0096 (and Corrigendum 3) needs to be restored. The edit could be made either in the VALUE attribute subclause, or in the subclause limiting procedures with BIND(C). Alternatives are provided for both options. Note that alternative 2 places the constraint in the subclause on Function subprograms, along with other constraints on BIND(C) procedures. This seems unnatural. Most of those constraints are independent of whether the procedure is a function or subroutine It might be better to have a separate subclause that includes the constraints on procedures with a suffix of proc-language-binding-spec. If that is done, the edit for alternative 2 should be made in that subclause. Edits to 16-007r2: ALTERNATIVE 1: [112:22+] In 8.5.18 VALUE attribute, after the last constraint, add a new constraint: "C865a An array dummy argument of a procedure with the BIND attribute shall not have the VALUE attribute." ALTERNATIVE 2: [330:37+] In 15.6.2.2 Function subprogram, after constraint C1561 beginning "If is specified for a procedure..." add a new constraint: "C1561a If is specified for a procedure, it shall not have an array dummy argument with the VALUE attribute."