Subject: Examples of alternative PASS_OBJ syntax J3/02-201 From: Kurt W. Hirchert (Meeting 161) 14 May 2002 Below are some examples of the current PASS_OBJ syntax, the syntax proposed by Van Snyder in 02-167, and a syntax I believe reflects the suggestions of Rich Maine in premeeting e-mail: ! type-bound procedure bound to module procedure of same name with ! PASS_OBJ to the first argument PROCEDURE,PASS_OBJ::name ! draft PROCEDURE::name ! Snyder PROCEDURE,OBJECT::name ! Snyder - variant PROCEDURE::name(*) ! Maine PROCEDURE::name(argument=*) ! Maine - variant ! type-bound procedure bound to module procedure of different name ! with PASS_OBJ to the first argument PROCEDURE,PASS_OBJ::name=>other ! draft PROCEDURE::name=>other ! Snyder PROCEDURE::name=>other(*) ! Maine ! type-bound procedure with deferred binding and PASS_OBJ ! to the first argument PROCEDURE(interface),PASS_OBJ::name=>NULL() ! draft PROCEDURE(interface)::name=>NULL() ! Snyder PROCEDURE(interface(*))::name=>NULL() ! Maine ! type-bound procedure when PASS_OBJ not possible PROCEDURE::name ! draft PROCEDURE::name ! Snyder PROCEDURE,NO_OBJECT::name ! Snyder - variant PROCEDURE::name ! Maine ! type-bound procedure when PASS_OBJ possible but not wanted PROCEDURE::name ! draft PROCEDURE,NO_OBJECT::name ! Snyder PROCEDURE::name ! Maine ! type-bound procedure with PASS_OBJ to first possible but not first PROCEDURE,PASS_OBJ::name ! draft PROCEDURE::name ! Snyder as written PROCEDURE,OBJECT(argument)::name ! Snyder - other SV result PROCEDURE::name(argument=*) ! Maine ! type-bound procedure with PASS_OBJ to argument not first possible ! <> ! draft PROCEDURE,OBJECT(argument)::name ! Snyder PROCEDURE::name(argument=*) ! Maine ! Procedure pointer component examples look like type-bound procedure ! examples with the POINTER attribute added. ! Many of the generic type-bound procedure examples would look like ! the ordinary type-bound procedure examples with GENERIC replacing ! PROCEDURE. Two other examples follow. ! type-bound generic with two specifics; both specifics receive ! PASS_OBJ in the same dummy argument GENERIC,PASS_OBJ::generic=>name1,name2 ! draft GENERIC,OBJECT(argument)::generic=>name1,name2 ! Snyder GENERIC::generic=>name1,name2 ! Snyder - best case GENERIC::generic=>name1(argument=*),name2(argument=*) ! Maine GENERIC::generic=>name1(*),name2(*) ! Maine - best case ! type-bound generic with two specifics; specifics receive PASS_OBJ ! in different arguments GENERIC,PASS_OBJ::generic=>name1,name2 ! draft, when possible GENERIC,OBJECT(argument1)::generic=>name1; GENERIC,OBJECT(argument2):: & & generic=>name2 ! Snyder GENERIC::generic=>name1(argument1=*),name2(argument2=*) ! Maine - end -