Replies: 2 comments
-
Thank you @wx20jjung for opening this discussion. I'll let those more familiar with IASI chime in first. |
Beta Was this translation helpful? Give feedback.
0 replies
-
Great diving into the code @wx20jjung.
According to the standard, that is equavalent to your suggestion:
Each of the dummy argument assumes the length of the actual argument at runtime. So, the comment from GNU fortran must be a wrong implementation from GNU at one point in time. I will say that you can safely switch one declaration for the other. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
@RussTreadon-NOAA @ADCollard @emilyhcliu @DavidHuber-NOAA @InnocentSouopgui-NOAA
I have run into 2 issues with IASI-NG_metop-sg-a1. The number of channels is an order of magnitude larger than the output will allow. There are instances where I4 needs to be I5. The other instance is the satellite name "metop-sg-a1 is 11 characters but the code is setup for 10.
The channel numbers are simple fixes. The satellite name gets complicated. There are several inconsistencies within the code that are hard wired to 10 (character(len=10)) while others are set at run time (character(len=*)). In most cases, there are several variables set in the same string
character(len=*), intent(in ) :: infile,obstype,jsatid
In this case, jsatid needs to be 11 while inflie and obstype are 10.
I have run into 2 issues with IASI-NG_metop-sg-a1. The number of channels is an order of magnitude larger than the output will allow. There are instances where I4 needs to be I5. The other instance is the satellite name "metop-sg-a1 is 11 characters but the code is setup for 10.
The channel numbers are simple fixes. The satellite name gets complicated. There are several inconsistencies within the code that are hard wired to 10 (character(len=10)) while others are set at run time (character(len=*)). In most cases, there are several variables set in the same string
character(len=*), intent(in ) :: infile,obstype,jsatid
In this case, jsatid needs to be 11 while inflie and obstype are 10.
I have searched online as to how the compiler interprets this. All I could find is some older version of GNU that states the size of the first variable is used to set all three. There is nothing about intel.
I did several short tests on S4 (intel_2021) with various scenarios. In all instances the compiler set the correct length of each variable regardless of order. My concerns are how wcoss will interpret this.
My question is
Should I leave the code as
character(len=*), intent(in ) :: infile,obstype,jsatid
or change everything to this
character(len=), intent(in ) :: infile
character(len=), intent(in ) :: obstype
character(len=*), intent(in ) :: jsatid
Beta Was this translation helpful? Give feedback.
All reactions