[ncl-talk] Remove white-spaces from write_table output

Dennis Shea shea at ucar.edu
Thu Aug 10 14:12:36 MDT 2017


Fortran (some other languages too!) has the capability to provide user
specified *granularity* in parsing strings of numbers and characters.

fortran:   format(i2,5i5)
              2999999999999999999999999999999

The problem is someone must tell you the structure. You could read as
follows:
              format(i2,i2,i3,i5,i4,i1,.......)

However, any 'automatic' software must have some separator between the
numbers.

--
NCDC has text files the include letters, numbers, periods (76.5) all
together.

====
fortran:   format(i2,5(1x,i5))
              2 99999 99999 99999 99999 99999 99999

Just a comment
D

On Thu, Aug 10, 2017 at 12:02 PM, Rabah Hachelaf <hachelaf at sca.uqam.ca>
wrote:

> Hi Mary and Karin,
>
> Adding white-spaces by default is a limitation if we need to write some
> data using a FORTRAN format.
> We could bypass this "issue" by removing one character starting from the
> 2nd variable but we would have liked to keep the same format between
> FORTRAN and NCL
>
> Regards,
>
> Rabah
>
> 2017-08-10 13:15 GMT-04:00 Mary Haley <haley at ucar.edu>:
>
>> Hi Rabah,
>>
>> I see Karin already responded, and had the same response I was just about
>> to send!
>>
>> I'll go ahead and include my response here. I've updated the
>> documentation to indicate this behavior, and also created a ticket just in
>> case.
>>
>> Unfortunately, I think this is a "feature" of write_table. Even if
>> there's a case for declaring this a bug, we probably couldn't change the
>> behavior because we'd likely break a bunch of existing scripts that depend
>> on the space being there.
>>
>> I created a ticket on this (NCL-2646), in case it's an issue for other
>> users.
>>
>> Meanwhile, as Karin pointed out, I think the only way around this is to
>> concatenate the strings yourself:
>>
>> int1 = 2
>> int2 = "99999"
>> int3 = "99999"
>> int4 = "99999"
>> int5 = "99999"
>> int6 = "99999"
>> int7 = "99999"
>> int_cat = int2+int3+int4+int5+int6+int7
>> sounding_check = [/int1,int_cat/]
>> write_table(outfile,"w",sounding_check,"%2i%s")
>>
>> In general, I would caution against writing numbers to a file without any
>> spaces, because this makes it potentially very difficult for somebody else
>> looking at the file to know how to read it.  However, I do understand that
>> some of these files have historically been written this way for other
>> purposes
>>
>> --Mary
>>
>>
>>
>> On Wed, Aug 9, 2017 at 3:13 PM, Rabah Hachelaf <hachelaf at sca.uqam.ca>
>> wrote:
>>
>>>
>>> Hello,
>>> I am wounding why there is a systematic white-spaces between values
>>> although they are removed from the format specifier.
>>> How can i remove white spaces from in this case.
>>>
>>> Thank you
>>>
>>>
>>> begin
>>> outfile = "test.txt"
>>> sounding_check = [/2,"99999","99999","99999","99999","99999","99999"/]
>>> write_table(outfile,"a",sounding_check,"%2i%s%s%s%s%s%s")
>>>
>>> end
>>>
>>>
>>> output :
>>>  2 99999 99999 99999 99999 99999 99999
>>> --
>>> ------------------------------
>>> Best regards,
>>> Rabah Hachelaf
>>>
>>>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
>
> --
> ------------------------------
> Cordialement,
> Best regards,
> Rabah Hachelaf
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170810/8db00c87/attachment.html 


More information about the ncl-talk mailing list