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

Dennis Shea shea at ucar.edu
Thu Jul 13 13:23:54 MDT 2017


A 'computer-science' person will have to answer. However, the output from
the *nix redirect ('standard out') and the fortran output are likely on
different and uncoordinated IO channels.

On Wed, Jul 12, 2017 at 12:47 AM, Barry Lynn <barry.h.lynn at gmail.com> wrote:

> 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 <(914)%20432-3108>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170713/9474f835/attachment.html 


More information about the ncl-talk mailing list