Drew McCormack writes: > What I need are the following features: > > 1) A means of storing pointers to procedures in a data structure. I > know this is not directly supported, but is there some back door to > achieving this (other than C)? They are supported in f2k, which you said you can't wait for. Other than that, there is no reasonably standard or portable way, no. There are always vendor-specific hacks, bt they aren't even close to portable. > 2) Procedures that effectively take generic pointers (ie like C's > void*) to memory as arguments. Since Fortran is pass by reference, I > should be able to achieve this as long as I avoid using an explicit > interface, which will enforce strong typing. I will need to be able to > get the memory address of the passed arguments though. Is there an > official fortran function to get the memory address of a variable? Again, not until f2k. And again, there are vendor-specific hacks, but nothing portable. Some vendors have such functions. P.S. No, Fortran is not pass-by-reference. Assume that too much and you will get in trouble because it isn't true. Most implementations do something at least much like pass-by-reference in most situations. But there are some cases where you basically *CAN'T* do pass-by-reference. And optimizers have a long history of causing failures in codes that assume pass-by-reference. In simple cases like calling a C hack to get the address of a named variable, and if you steer clear of array sections, pointers, and other complications, it will probably work. However, even if it works for your application, I see so many cases of bugs caused my mistaked assumtions of pass-by-reference that I cannot let this common myth be restated without challenge. Every time that it is restated increases the number of times that someone else will believe it and write a buggy program because of it. Even if it holds for your application, I hate to see other programmers mislead into writing buggy code....which does happen on this subject. > 3) Procedures that can have a variable number of arguments (like "..." > in C). I know you can do this with the 'optional' keyword from f90, but > it requires an explicit interface (right?), and that conflicts with (2) > above. Right. Also, there is a specific finite list of optional arguments; this really isn't much like the ... in C. > Can anyone give me pointers or suggested solutions to one or more of > these requirements? For the first 2, I really think that your best near-term options are either to use a C wrapper back door or to find vendors that have early implementations of the relevant f2k features. I don't think you'll do much better. I can't think of anything good for the last one... heck, I'm leary of the C "..." feature even in C. I have some inherited C code that I can't port from one of my linux boxes to another because the C "..." feature has multiple incompatable implementations, and the one used in the code isn't supported by the version of the compiler on the new system. (Suppose if I spent enough hours I could port it, but it takes me a *LOT* of time to do much of anything in C and the trivial attempts here didn't work.) -- Richard Maine | Good judgment comes from experience; [log in to unmask] | experience comes from bad judgment. | -- Mark Twain