[ncl-talk] A question about "return" from WRAPIT

Barry Lynn barry.h.lynn at gmail.com
Wed Jul 12 00:47:48 MDT 2017


Hi:

I figured out what the problem was.

It turns out that if you do this (on my computer):

ncl ./my_program.ncl > dumb.file, one only sees in "dumb.file" the last
item written in the call to the subroutine (where I wrote: "return now.").

The print statements that I put in the NCL program after the call,
indicating that the program has returned, were not included in the
redirect.  I could see this when I ran the program without the redirect
(and the program terminates later in the NCL script).

I am not sure why this happens, but it does lead to some confusion.

Barry

On Tue, Jul 11, 2017 at 10:21 PM, Barry Lynn <barry.h.lynn at gmail.com> wrote:

> I realize that the background information was a bit vague.
>
> In any case, thank you for confirming what I thought.
>
> I was able to verify that the fortran code executed until the "return."
>  However, it doesn't proceed to write a print statement in the NCL script
> immediately after the call to the WRAPIT fortran program. Hence, my thought
> that it was *not* "returning."
>
> I will double check the code (perhaps simplify it), since you noted that
> the code should return.
>
> Barry
>
> On Tue, Jul 11, 2017 at 9:20 PM, Dennis Shea <shea at ucar.edu> wrote:
>
>> The question is a bit vague on details.
>>
>> Yes, the fortran code 'returns' to the NCL calling environment.
>> You can put print statements in the fortran code to see what has executed.
>>
>>
>> ====> fortran file:  quad.f
>>
>> C NCLFORTSTART
>>       subroutine cquad (a, b, c, nq, x, quad)
>>       implicit none
>>       integer nq              ! input
>>       real a, b, c, x(nq)     ! input
>>       real quad(nq)           ! output; must be pre-allocated in NCL
>> C NCLEND
>> C
>> C  Calculate quadratic polynomial values.
>> C
>>
>>       print *,"Before do loop"    ! DEBUG
>>
>>       do i=1,nq
>>          print *,"Before quad(i); i=",i
>>          quad(i) = a*x(i)**2 + b*x(i) + c
>>          print *,"After quad(i); quad(i)=",quad(i)
>>       end do
>>       print *,"Before return: Done!"    ! DEBUG
>>       return
>>       end
>>
>> =====
>>
>> %> WRAPIT quad.f
>>
>> Creates quad.so
>> ====
>>
>> NCL script: example.ncl
>> ===
>>
>>
>> external QUAD "./quad.so"
>>
>> begin
>> ;
>> ; Calculate three values of a quadratic equation
>> ;
>>    nump = 3
>>    x    = (/ -1., 0.0, 1.0 /)
>>    qval = new(nump,float)                  ; create memory for the 'return' values
>>    QUAD::cquad(-1., 2., 3., nump, x, qval) ; Call the NCL version of
>>                                            ; your Fortran subroutine.
>>    print("Polynomial value = " + qval)     ; Should be (/0,3,4/)
>>
>> end
>>
>> ====
>>
>> %> ncl  example.ncl
>>
>>
>> On Tue, Jul 11, 2017 at 9:11 AM, Barry Lynn <barry.h.lynn at gmail.com>
>> wrote:
>>
>>> Hello:
>>>
>>> I wrote a fortran program that I can from an ncl program.
>>>
>>> I have a "return" at the end of the fortran program, linked with WRAPIT.
>>>
>>> However, my ncl program does not go beyond the call to the
>>> WRAPIT fortran program call.
>>>
>>> Am I missing something?  I would expect the ncl program to return
>>> and continue from there.
>>>
>>> Thank you,
>>>
>>> Barry
>>>
>>> --
>>> Barry H. Lynn, Ph.D
>>> Senior Lecturer,
>>> The Institute of the Earth Science,
>>> The Hebrew University of Jerusalem,
>>> Givat Ram, Jerusalem 91904, Israel
>>> Tel: 972 547 231 170
>>> Fax: (972)-25662581
>>>
>>> C.E.O, Weather It Is, LTD
>>> Weather and Climate Focus
>>> http://weather-it-is.com
>>> Jerusalem, Israel
>>> Local: 02 930 9525
>>> Cell: 054 7 231 170
>>> Int-IS: x972 2 930 9525
>>> US 914 432 3108 <(914)%20432-3108>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
>
> --
> Barry H. Lynn, Ph.D
> Senior Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
> US 914 432 3108 <(914)%20432-3108>
>



-- 
Barry H. Lynn, Ph.D
Senior Lecturer,
The Institute of the Earth Science,
The Hebrew University of Jerusalem,
Givat Ram, Jerusalem 91904, Israel
Tel: 972 547 231 170
Fax: (972)-25662581

C.E.O, Weather It Is, LTD
Weather and Climate Focus
http://weather-it-is.com
Jerusalem, Israel
Local: 02 930 9525
Cell: 054 7 231 170
Int-IS: x972 2 930 9525
US 914 432 3108
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170712/8aed0b5e/attachment.html 


More information about the ncl-talk mailing list