To James, Arjen, and Andrew: I completed the recent thread entitled "Font setting parameters in Fortran90" on plplot-general by revision revision 12640, where I had tested that change with
FFLAGS=-O1 -Wuninitialized and using gfortran and the test_f95_psc target (which compiles and executes all our fortran examples using -dev psc). However, it turns out that interpreting BOZ as an integer other than in extremely specific cases is a gfortran extension. For example, suppose you have the simple test code integer :: i=z'4' end This compiles without issues for gfortran with no options (the default case with extensions from the standards), but if you try the -std=f95, -std=f2003, or -std=f2008 gfortran options there is a build error: integer :: i=z'4' 1 Error: Extension: BOZ literal at (1) outside a DATA statement and outside INT/REAL/DBLE/CMPLX And looking further at gfortran documentation "outside INT/REAL/DBLE/CMPLX" refers to outside of those explicit function calls so the "INT" does not refer to the above integer declaration. I have also looked at Intel Fortran compiler documentation I downloaded years ago, and that compiler (at least in that era) accepted a BOZ literal in the above statement but that feature was also considered to be a Fortran 95 extension. So I think we have a case here where the standards are far behind what is implemented as extensions by various compilers. (Why would the standards want to restrict the use of BOZ constants to exclude something obvious like above?) But the nasty result for us if the present commit was allowed to stand in its present form is we can no longer use the gfortran -std= option to check for standards compliance. That is too big a sacrifice in my opinion. On the other hand, I do not want to go back to using the data form just for BOZ constants since that has some irritating consequences for our users. So to work around what I believe is an issue in the Fortran standards, I have (revision 12641) replaced all BOZ constants by the equivalent integers in bindings/f95/plplot_parameters.h. Note I have used some explicit calculations here, e.g., z'400' ==> 4*16*16, in the sed script to continue to emphasize the typical "single-bit-set" nature of these constants and more importantly to be sure there are no mistakes in such conversions. Also note these calculations of initializers are done at compile time rather than run time and are allowed by Fortran 95 and higher standards. I have checked the above commit using FFLAGS='-std=f95 -O1 -fall-intrinsics -Wuninitialized' and the test_diff_psc target, and all seems to be well with no build warnings, run-time errors, or any differences between the calculated f95 and C results. So I am happy with how we are currently treating global numerical constants for our f95 bindings and examples. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ ------------------------------------------------------------------------------ Android is increasing in popularity, but the open development platform that developers love is also attractive to malware creators. Download this white paper to learn more about secure code signing practices that can help keep Android apps secure. http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel