I just verified that this has same behavior when running past EOF even
on the same locale. The fact that read etc return a boolean is very
useful (and answers a question I had when I first started looking at
this) : I somehow missed this while reading through the fileIO example
(I somehow didn't make it down far enough).

I should add that I've been enjoying writing some initial codes in
Chapel.... one question --- is there a plan/roadmap for the next
releases?

Thanks very much!
-- Nikhil
---------------------------------
Nikhil Padmanabhan
[email protected]


On Tue, Apr 1, 2014 at 9:35 AM, Michael Ferguson <[email protected]> wrote:
> Hi Nikhil -
>
> I'm sorry I didn't notice this earlier - but your program
> works in this way because the channel.read functions taking
> in variables return true if they read something and false
> otherwise. That's because there are many cases in which
> you don't know how long your file is, so you want something
> like
>  while ffr.read(x) {
>     do something with x
>  }
>
> The read functions taking in types already return the read
> value, and so they can't return a separate 'bool'  indicating
> whether or not the read is successful.  These variants halt
> the program if the read was not successful.
>
> While the language specification describes these read methods,
> they don't describe the return types. I'll see if I can fix that.
> In the mean time, the best way to learn about the I/O capabilities
> is by looking over the example primers code in
> examples/primiers/fileIO.chpl  in this case.
>
> I believe you will find that this behavior has nothing
> to do with multiple locales (ie, if you replaced the
> outer loop with forj in 1..2 it would work the same).
>
> Cheers,
>
> -michael
>
>
> On 03/28/2014 09:41 PM, Nikhil Padmanabhan wrote:
>>
>> Hello,
>>
>> I'm a newbie to Chapel, so apologies if I missed seeing this issue
>> somewhere...
>>
>> I just came across an edge case that surprised me while reading in a text
>> file; see the attached code and input data. Very quickly, I was trying to
>> get the various locales to read in consecutive chunks of a text file, and
>> found that on locales other than the one I opened the file on, it lets me
>> read past the file without an error.
>>
>> This does not happen if I replace the
>>      read(x,y,z);
>> with
>>      (x,y,z) = read(real, real, real);
>>
>> I'm compiling the code with
>>     chpl -o test_reading test_reading.chpl
>>
>> CHPL_COMM=gasnet
>> CHPL_COMM_SUBSTRATE=mpi
>>
>> This is on an OS X 10.8.5 system, with gcc 4.7. The command I ran, and the
>> output is also attached.
>>
>> An unrelated comment :
>>
>> The writef statement triggers the warnings below while compiling --- I
>> realize this is not yet in the language spec though.
>>
>> Thanks in advance!
>> -- Nikhil
>>
>> In file included from /tmp/chpl-npadmana-30889.deleteme/_main.c:39:0:
>> /tmp/chpl-npadmana-30889.deleteme/IO.c: In function '_format_reader':
>> /tmp/chpl-npadmana-30889.deleteme/IO.c:6797:7: warning: passing argument 3
>> of 'qio_conv_parse' from incompatible pointer type [enabled by default]
>> In file included from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/qio/qio-all.h:12:0,
>>                   from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/chplio.h:16,
>>                   from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/stdchpl.h:33,
>>                   from
>> /tmp/chpl-npadmana-30889.deleteme/chpl__header.h:31,
>>                   from /tmp/chpl-npadmana-30889.deleteme/_main.c:1:
>>
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/qio/qio_formatted.h:804:8:
>> note: expected 'size_t *' but argument is of type '_ref_uint64_t'
>> In file included from /tmp/chpl-npadmana-30889.deleteme/_main.c:39:0:
>> /tmp/chpl-npadmana-30889.deleteme/IO.c: In function '_extractMatch':
>> /tmp/chpl-npadmana-30889.deleteme/IO.c:13103:5: warning: passing argument
>> 6 of 'qio_channel_read_string' from incompatible pointer type [enabled by
>> default]
>> In file included from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/qio/qio-all.h:12:0,
>>                   from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/chplio.h:16,
>>                   from
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/stdchpl.h:33,
>>                   from
>> /tmp/chpl-npadmana-30889.deleteme/chpl__header.h:31,
>>                   from /tmp/chpl-npadmana-30889.deleteme/_main.c:1:
>>
>> /Users/npadmana/myWork/chapel/chapel-1.8.0/runtime//include/qio/qio_formatted.h:375:7:
>> note: expected 'ssize_t * restrict' but argument is of type '_ref_int64_t'
>>
>>
>> ---------------------------------
>> Nikhil Padmanabhan
>> [email protected] <mailto:[email protected]>
>
>

------------------------------------------------------------------------------
_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users

Reply via email to