Hi Arjen,

Arjen Markus ha scritto:
> Hi Davide, Hazen,
> 
> yes, g77 is complaining because of the "implicit none" statements.
> I have now added "external floor" and "real*8 floor", so the error
> messages are gone.
> 
> The second (warning) message is about calling plslabelfunc with a
> literal 0, rather than a procedure name. gfortran ignores this,
> but g77 gives a warning. I am not sure how to proceed here - I
> will look into it later on.

Apart from being a warning, this will probably not work because a 
literal 0 means passing a pointer to a zero value, not a NULL pointer, 
so the C will see it as a valid pointer and try to call it with 
unpredictable results. I think there is no clean, portable way to pass a 
null pointer in f77; the only solution in my view here -ugly, I agree- 
if f77 support has to be maintained, is to change the API for fortran 
and do some kind of plslabeldisablefunc() or something like that.
In f90 it can be done cleanly by defining an interface to 2 subroutines, 
one receiving a procedure and one receiving an integer, the second can 
then call a C wrapper passing the null pointer, something similar is 
done in f90gl for glutNullFunc (see: http://math.nist.gov/f90gl/ )
        Hope this helps, Davide

> 
> Regards,
> 
> Arjen
> 
> On 2009-11-12 08:58, Davide Cesari wrote:
>> Hi,
>> since floor is declared as function, you need something like
>>
>> times = floor()
>>
>> times = call floor() is definitely wrong; maybe, if you have declared 
>> "implicit none", you need to declare floor as real at the beginning of 
>> the program unit, something like:
>>
>> real floor
>>
>>     Davide
>>
>> Hazen Babcock ha scritto:
>>> Hi Arjen,
>>>
>>> Thanks for working on this. Unfortunately I'm still getting the error 
>>> about the floor function. I thought perhaps I needed to add something 
>>> like "external floor" in the normalize_longitude function but that 
>>> only gave me a different error. "times = call floor (..)" also does 
>>> not seem to work. Adding a "return" statement to the floor procedure 
>>> similarly failed. I assume that is must somehow be possible to call 
>>> functions in fortran but I'm quite puzzled about how one actually 
>>> goes about it.
>>>
>>> I also get what appears to be a warning about the call to 
>>> plslabelfunc(). "Argument #1 of 'plslabelfunc' is passed by reference 
>>> at (2) but is a procedure at (1)".
>>>
>>> thanks,
>>> -Hazen
>>>
>>> Arjen Markus wrote:
>>>> Hi Hazen,
>>>>
>>>> just now I started to include the changes for x19f.f, when I realised
>>>> that the label argument poses a bit of a problem: Fortran expects a
>>>> hidden argument to hold the actual string length. For the other
>>>> interfaces we can circumvent that issue and in the F95 interface
>>>> this is solved by using "length" explicitly.
>>>>
>>>> Well, the changes should work, unfortunately I do not have access
>>>> right now to a proper build environment to really test it. Please
>>>> let me know if there is any trouble.
>>>>
>>>> Regards,
>>>>
>>>> Arjen
>>>>
>>>> On 2009-11-07 23:05, Hazen Babcock wrote:
>>>>> Hi Arjen,
>>>>>
>>>>> Since I just ran into exactly this problem myself (with mingw on 
>>>>> windows)... Should we fix example x19f.f to work with f77? It is in 
>>>>> the f77 examples folder so I think it is reasonable for the user to 
>>>>> assume that it should be possible to compile this example with a 
>>>>> f77 compiler.
>>>>>
>>>>> best,
>>>>> -Hazen
>>>>>
>>>>> Arjen Markus wrote:
>>>>>> Hi Werner,
>>>>>>
>>>>>> the floor function does not exist in FORTRAN 77, so you need
>>>>>> to implement it, for instance:
>>>>>>
>>>>>> *234567
>>>>>>        REAL FUNCTION FLOOR(X)
>>>>>>        REAL X
>>>>>>        FLOOR = FLOAT(INT(X))
>>>>>>        RETURN
>>>>>>        END
>>>>>>
>>>>>> The declaration "character*(length) label" is a Fortran 90
>>>>>> facility. Use:
>>>>>>
>>>>>>        character*(*) label
>>>>>>
>>>>>> This should actually be handled by the C interface (the
>>>>>> string length is passed as a hidden argument ...) I do not
>>>>>> have time the coming days to look into it closely, but I
>>>>>> will try.
>>>>>>
>>>>>> You can not pass a null pointer (0) in FORTRAN 77. To turn the
>>>>>> labeller off, I am afraid you will have to use either a separate
>>>>>> routine (call plslabelfuncoff) or use a dummy routine.
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Arjen
>>>>>>
>>>>>> On 2009-09-15 13:47, Werner Smekal wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> when I compile the latest revision of PLplot with MinGW 3.4.5  
>>>>>>> including the g77 compiler I get the following compiler error:
>>>>>>>
>>>>>>> Scanning dependencies of target x19f
>>>>>>> [ 88%] Building Fortran object examples/f77/CMakeFiles/x19f.dir/ 
>>>>>>> x19f.f.obj
>>>>>>> E:\plbuild\examples\f77\x19f.f: In function `normalize_longitude':
>>>>>>> E:\plbuild\examples\f77\x19f.f:80: warning:
>>>>>>>              times = floor ((abs(lon) + 180.0d0) / 360.0d0)
>>>>>>>                      ^
>>>>>>> Reference to unimplemented intrinsic `FLOOR' at (^) (assumed 
>>>>>>> EXTERNAL)
>>>>>>> E:\plbuild\examples\f77\x19f.f:80:
>>>>>>>              times = floor ((abs(lon) + 180.0d0) / 360.0d0)
>>>>>>>                      ^
>>>>>>> Invalid declaration of or reference to symbol `floor' at (^)  
>>>>>>> [initially seen at (^)]
>>>>>>> E:\plbuild\examples\f77\x19f.f: In subroutine `geolocation_labeler':
>>>>>>> E:\plbuild\examples\f77\x19f.f:91:
>>>>>>>           subroutine geolocation_labeler(axis, value, label, length)
>>>>>>>                                                              1
>>>>>>> E:\plbuild\examples\f77\x19f.f:95: (continued):
>>>>>>>           character*(length) label
>>>>>>>                      2
>>>>>>> Invalid declaration of or reference to symbol `length' at (2)  
>>>>>>> [initially seen at (1)]
>>>>>>> E:\plbuild\examples\f77\x19f.f: In program `x19f':
>>>>>>> E:\plbuild\examples\f77\x19f.f:161: warning:
>>>>>>>           call plslabelfunc(geolocation_labeler)
>>>>>>>                1
>>>>>>> E:\plbuild\examples\f77\x19f.f:177: (continued):
>>>>>>>           call plslabelfunc(0)
>>>>>>>                2
>>>>>>> Argument #1 of `plslabelfunc' is passed by reference at (2) but 
>>>>>>> is a  procedure at (1) [info -f g77 M GLOBALS]
>>>>>>> mingw32-make[2]: *** 
>>>>>>> [examples/f77/CMakeFiles/x19f.dir/x19f.f.obj]  Error 1
>>>>>>> mingw32-make[1]: *** [examples/f77/CMakeFiles/x19f.dir/all] Error 2
>>>>>>> mingw32-make: *** [all] Error 2
>>>>>>>
>>>>>>> Maybe someone who is more knowledgeable about Fortran can help me 
>>>>>>> out  make this example work.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Werner
>>>>>>>
>>>>>>> -- 
>>>>>>> Dr. Werner Smekal
>>>>>>> Institut fuer Allgemeine Physik
>>>>>>> Technische Universitaet Wien
>>>>>>> Wiedner Hauptstr 8-10
>>>>>>> A-1040 Wien
>>>>>>> Austria
>>>>>>> DVR-Nr: 0005886
>>>>>>>
>>>>>>> email: sme...@iap.tuwien.ac.at
>>>>>>> web:   http://www.iap.tuwien.ac.at/~smekal
>>>>>>> phone: +43-(0)1-58801-13463 (office)
>>>>>>>         +43-(0)1-58801-13469 (laboratory)
>>>>>>> fax:   +43-(0)1-58801-13499
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------
>>>>>>>  
>>>>>>>
>>>>>>> Come build with us! The BlackBerry® Developer Conference in 
>>>>>>> SF, CA
>>>>>>> is the only developer event you need to attend this year. 
>>>>>>> Jumpstart your
>>>>>>> developing skills, take BlackBerry mobile applications to market 
>>>>>>> and stay ahead of the curve. Join us from November 9-12, 
>>>>>>> 2009. Register now!
>>>>>>> http://p.sf.net/sfu/devconf
>>>>>>> _______________________________________________
>>>>>>> Plplot-devel mailing list
>>>>>>> Plplot-devel@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/plplot-devel
>>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>>  
>>>>>>
>>>>>> Come build with us! The BlackBerry® Developer Conference in 
>>>>>> SF, CA
>>>>>> is the only developer event you need to attend this year. 
>>>>>> Jumpstart your
>>>>>> developing skills, take BlackBerry mobile applications to market 
>>>>>> and stay ahead of the curve. Join us from November 9-12, 2009. 
>>>>>> Register now!
>>>>>> http://p.sf.net/sfu/devconf
>>>>>> _______________________________________________
>>>>>> Plplot-devel mailing list
>>>>>> Plplot-devel@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/plplot-devel
>>>>>>
>>>
>>> ------------------------------------------------------------------------------
>>>  
>>>
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 
>>> 30-Day trial. Simplify your report design, integration and deployment 
>>> - and focus on what you do best, core application coding. Discover 
>>> what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>> _______________________________________________
>>> Plplot-devel mailing list
>>> Plplot-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/plplot-devel
>>>
>>
>>
> 


-- 
============================= Davide Cesari ============================
Servizio IdroMeteorologico ARPA Emilia Romagna
Area Modellistica Numerica e Radarmeteorologia
  Phone/Fax: +39 051525926/+39 0516497501
  E-mail:    dces...@arpa.emr.it
  Home page: http://www.webalice.it/o.drofa/davide/
  Address:   ARPA-SIM, Viale Silvani 6, 40122 Bologna, Italy
========================================================================


This message has been scanned for malware by Websense. www.websense.com

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to