[J3] Can a procedure pointer have character(*) result type?

Malcolm Cohen malcolm at nag-j.co.jp
Wed Nov 30 05:20:40 UTC 2022

Daniel writes

> The question I have is regarding if a assumed-length dummy procedure pointer is allowed. 

No, it is not.


The constraint


> C723 A function name declared with an asterisk type-param-value shall not be an array, a pointer,


is operational: there is no doubt that a procedure pointer is a pointer, see the definition of pointer:




data pointer or procedure pointer


Therefore assumed-length is not permitted.


> From an implementation viewpoint, I don't see a problem with this usage


I do. That comment assumes information that is not necessary to be passed is nonetheless passed. I see no reason to assume all implementations pass unnecessary information unnecessarily. (Individual implementations may have their own reasons for passing extra information.)


> Your example without pointer worked fine with NAG, but I get an internal compiler error (ICE) when you add it back in


There seems to be a missing error test. I will look into it.




Finally, I note that assumed-length functions were already obsolescent in Fortran 95. Procedure pointers were only added in Fortran 2003. It is the long-standing policy of the committee that unless there are good reasons to the contrary, obsolescent features will not be enhanced.


So it is not a surprise that we did not add this feature.




..............Malcolm Cohen, NAG Oxford/Tokyo.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20221130/73f72f5b/attachment.htm>

More information about the J3 mailing list