diff -Nrc3pad gcc-3.3.2/gcc/f/BUGS gcc-3.3.3/gcc/f/BUGS *** gcc-3.3.2/gcc/f/BUGS Thu Oct 16 22:51:49 2003 --- gcc-3.3.3/gcc/f/BUGS Sat Feb 14 21:25:14 2004 *************** _Note:_ This file is automatically gener *** 2,8 **** `bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although it is normally included within source distributions. ! This file lists known bugs in the GCC-3.3.2 version of the GNU Fortran compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. You may copy, distribute, and modify it freely as long as you preserve --- 2,8 ---- `bugs0.texi' and `bugs.texi'. `BUGS' is _not_ a source file, although it is normally included within source distributions. ! This file lists known bugs in the GCC-3.3.3 version of the GNU Fortran compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. You may copy, distribute, and modify it freely as long as you preserve *************** Known Bugs In GNU Fortran *** 12,18 **** ************************* This section identifies bugs that `g77' _users_ might run into in ! the GCC-3.3.2 version of `g77'. This includes bugs that are actually in the `gcc' back end (GBE) or in `libf2c', because those sets of code are at least somewhat under the control of (and necessarily intertwined with) `g77', so it isn't worth separating them out. --- 12,18 ---- ************************* This section identifies bugs that `g77' _users_ might run into in ! the GCC-3.3.3 version of `g77'. This includes bugs that are actually in the `gcc' back end (GBE) or in `libf2c', because those sets of code are at least somewhat under the control of (and necessarily intertwined with) `g77', so it isn't worth separating them out. diff -Nrc3pad gcc-3.3.2/gcc/f/ChangeLog gcc-3.3.3/gcc/f/ChangeLog *** gcc-3.3.2/gcc/f/ChangeLog Thu Oct 16 19:43:49 2003 --- gcc-3.3.3/gcc/f/ChangeLog Sat Feb 14 20:18:25 2004 *************** *** 1,3 **** --- 1,30 ---- + 2004-02-14 Release Manager + + * GCC 3.3.3 Released. + + 2004-01-14 Ian Lance Taylor + + * README: Remove. + + 2003-12-31 Roger Sayle + + PR fortran/12632 + * com.c (ffecom_subscript_check_): Take as an extra argument the + (possibly NULL) decl of the array. Don't create unnecessary tree + nodes if the array index is known to be safe at compile-time. + If the array index is unsafe, force the array decl into memory to + avoid RTL expansion problems. + (ffecom_array_ref_): Update calls to ffecom_subscript_check_. + (ffecom_char_args_x_): Likewise. + + 2003-12-05 Toon Moene + + PR fortran/12633 + Revert 2002-05-09 Hassan Aurag + + * expr.c (ffeexpr_reduced_ugly2log_): Allow logicals-as-integers + under -fugly-logint as arguments of .and., .or., .xor. + 2003-10-16 Release Manager * GCC 3.3.2 Released. diff -Nrc3pad gcc-3.3.2/gcc/f/NEWS gcc-3.3.3/gcc/f/NEWS *** gcc-3.3.2/gcc/f/NEWS Thu Oct 16 22:51:49 2003 --- gcc-3.3.3/gcc/f/NEWS Sat Feb 14 21:25:14 2004 *************** _Note:_ This file is automatically gener *** 2,8 **** `news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although it is normally included within source distributions. ! This file lists news about the GCC-3.3.2 version (and some other versions) of the GNU Fortran compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. You may copy, distribute, and modify it freely as long as you --- 2,8 ---- `news0.texi' and `news.texi'. `NEWS' is _not_ a source file, although it is normally included within source distributions. ! This file lists news about the GCC-3.3.3 version (and some other versions) of the GNU Fortran compiler. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. You may copy, distribute, and modify it freely as long as you *************** In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versu *** 383,390 **** In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 ! is the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. --- 383,390 ---- In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 is ! the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. *************** In `EGCS' 1.1 versus `g77' 0.5.23: *** 606,612 **** In previous versions: ===================== ! Information on previous versions is not provided in this `gcc/gcc/f/NEWS' file, to keep it short. See `gcc/gcc/f/news.texi', or any of its other derivations (Info, HTML, dvi forms) for such information. --- 606,612 ---- In previous versions: ===================== ! Information on previous versions is not provided in this `gcc/gcc/f/NEWS' file, to keep it short. See `gcc/gcc/f/news.texi', or any of its other derivations (Info, HTML, dvi forms) for such information. diff -Nrc3pad gcc-3.3.2/gcc/f/README gcc-3.3.3/gcc/f/README *** gcc-3.3.2/gcc/f/README Wed Dec 16 21:16:35 1998 --- gcc-3.3.3/gcc/f/README Thu Jan 1 00:00:00 1970 *************** *** 1,7 **** - 1995-02-15 - - This directory is the f/ subdirectory, which is designed to - be a subdirectory in a gcc development tree, i.e. named gcc/f/. - - Please see gcc/README.g77 for information on the contents of this - directory. --- 0 ---- diff -Nrc3pad gcc-3.3.2/gcc/f/com.c gcc-3.3.3/gcc/f/com.c *** gcc-3.3.2/gcc/f/com.c Wed Jul 9 19:04:40 2003 --- gcc-3.3.3/gcc/f/com.c Thu Jan 1 04:44:56 2004 *************** static GTY(()) tree shadowed_labels; *** 639,653 **** /* Return the subscript expression, modified to do range-checking. ! `array' is the array to be checked against. `element' is the subscript expression to check. `dim' is the dimension number (starting at 0). `total_dims' is the total number of dimensions (0 for CHARACTER substring). */ static tree ffecom_subscript_check_ (tree array, tree element, int dim, int total_dims, ! const char *array_name) { tree low = TYPE_MIN_VALUE (TYPE_DOMAIN (array)); tree high = TYPE_MAX_VALUE (TYPE_DOMAIN (array)); --- 639,654 ---- /* Return the subscript expression, modified to do range-checking. ! `array' is the array type to be checked against. `element' is the subscript expression to check. `dim' is the dimension number (starting at 0). `total_dims' is the total number of dimensions (0 for CHARACTER substring). + `item' is the array decl or NULL_TREE. */ static tree ffecom_subscript_check_ (tree array, tree element, int dim, int total_dims, ! const char *array_name, tree item) { tree low = TYPE_MIN_VALUE (TYPE_DOMAIN (array)); tree high = TYPE_MAX_VALUE (TYPE_DOMAIN (array)); *************** ffecom_subscript_check_ (tree array, tre *** 714,719 **** --- 715,724 ---- } } + /* If the array index is safe at compile-time, return element. */ + if (integer_nonzerop (cond)) + return element; + { int len; char *proc; *************** ffecom_subscript_check_ (tree array, tre *** 808,820 **** TREE_SIDE_EFFECTS (die) = 1; die = convert (void_type_node, die); ! element = ffecom_3 (COND_EXPR, ! TREE_TYPE (element), ! cond, ! element, ! die); ! return element; } /* Return the computed element of an array reference. --- 813,822 ---- TREE_SIDE_EFFECTS (die) = 1; die = convert (void_type_node, die); ! if (integer_zerop (cond) && item) ! ffe_mark_addressable (item); ! return ffecom_3 (COND_EXPR, TREE_TYPE (element), cond, element, die); } /* Return the computed element of an array reference. *************** ffecom_arrayref_ (tree item, ffebld expr *** 900,906 **** element = ffecom_expr_ (dims[i], NULL, NULL, NULL, FALSE, TRUE); if (flag_bounds_check) element = ffecom_subscript_check_ (array, element, i, total_dims, ! array_name); if (element == error_mark_node) return element; --- 902,908 ---- element = ffecom_expr_ (dims[i], NULL, NULL, NULL, FALSE, TRUE); if (flag_bounds_check) element = ffecom_subscript_check_ (array, element, i, total_dims, ! array_name, item); if (element == error_mark_node) return element; *************** ffecom_arrayref_ (tree item, ffebld expr *** 946,952 **** element = ffecom_expr_ (dims[i], NULL, NULL, NULL, FALSE, TRUE); if (flag_bounds_check) element = ffecom_subscript_check_ (array, element, i, total_dims, ! array_name); if (element == error_mark_node) return element; --- 948,954 ---- element = ffecom_expr_ (dims[i], NULL, NULL, NULL, FALSE, TRUE); if (flag_bounds_check) element = ffecom_subscript_check_ (array, element, i, total_dims, ! array_name, item); if (element == error_mark_node) return element; *************** ffecom_char_args_x_ (tree *xitem, tree * *** 2045,2051 **** end_tree = ffecom_expr (end); if (flag_bounds_check) end_tree = ffecom_subscript_check_ (array, end_tree, 1, 0, ! char_name); end_tree = convert (ffecom_f2c_ftnlen_type_node, end_tree); --- 2047,2053 ---- end_tree = ffecom_expr (end); if (flag_bounds_check) end_tree = ffecom_subscript_check_ (array, end_tree, 1, 0, ! char_name, NULL_TREE); end_tree = convert (ffecom_f2c_ftnlen_type_node, end_tree); *************** ffecom_char_args_x_ (tree *xitem, tree * *** 2063,2069 **** start_tree = ffecom_expr (start); if (flag_bounds_check) start_tree = ffecom_subscript_check_ (array, start_tree, 0, 0, ! char_name); start_tree = convert (ffecom_f2c_ftnlen_type_node, start_tree); --- 2065,2071 ---- start_tree = ffecom_expr (start); if (flag_bounds_check) start_tree = ffecom_subscript_check_ (array, start_tree, 0, 0, ! char_name, NULL_TREE); start_tree = convert (ffecom_f2c_ftnlen_type_node, start_tree); *************** ffecom_char_args_x_ (tree *xitem, tree * *** 2096,2102 **** end_tree = ffecom_expr (end); if (flag_bounds_check) end_tree = ffecom_subscript_check_ (array, end_tree, 1, 0, ! char_name); end_tree = convert (ffecom_f2c_ftnlen_type_node, end_tree); --- 2098,2104 ---- end_tree = ffecom_expr (end); if (flag_bounds_check) end_tree = ffecom_subscript_check_ (array, end_tree, 1, 0, ! char_name, NULL_TREE); end_tree = convert (ffecom_f2c_ftnlen_type_node, end_tree); diff -Nrc3pad gcc-3.3.2/gcc/f/expr.c gcc-3.3.3/gcc/f/expr.c *** gcc-3.3.2/gcc/f/expr.c Tue May 28 17:33:01 2002 --- gcc-3.3.3/gcc/f/expr.c Fri Dec 5 19:51:12 2003 *************** ffeexpr_reduced_ugly2log_ (ffebld reduce *** 11502,11525 **** /* else Leave it alone. */ } - if (lbt == FFEINFO_basictypeLOGICAL) - { - ffebld_set_left (reduced, ffeexpr_convert (ffebld_left (reduced), - l->token, op->token, FFEINFO_basictypeINTEGER, - FFEINFO_kindtypeINTEGERDEFAULT, 0, - FFETARGET_charactersizeNONE, - FFEEXPR_contextLET)); - } - - if (rbt == FFEINFO_basictypeLOGICAL) - { - ffebld_set_right (reduced, ffeexpr_convert (ffebld_right (reduced), - r->token, op->token, FFEINFO_basictypeINTEGER, - FFEINFO_kindtypeINTEGERDEFAULT, 0, - FFETARGET_charactersizeNONE, - FFEEXPR_contextLET)); - } - return reduced; } --- 11502,11507 ---- diff -Nrc3pad gcc-3.3.2/gcc/f/g77.1 gcc-3.3.3/gcc/f/g77.1 *** gcc-3.3.2/gcc/f/g77.1 Thu Oct 16 20:24:22 2003 --- gcc-3.3.3/gcc/f/g77.1 Sat Feb 14 20:38:15 2004 *************** *** 1,7 **** ! .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 .\" .\" Standard preamble: ! .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp --- 1,8 ---- ! .\" Automatically generated by Pod::Man version 1.15 ! .\" Sat Feb 14 20:38:15 2004 .\" .\" Standard preamble: ! .\" ====================================================================== .de Sh \" Subsection heading .br .if t .Sp *************** *** 14,19 **** --- 15,26 ---- .if t .sp .5v .if n .sp .. + .de Ip \" List item + .br + .ie \\n(.$>=3 .ne \\$3 + .el .ne 3 + .IP "\\$1" \\$2 + .. .de Vb \" Begin verbatim text .ft CW .nf *************** *** 21,34 **** .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a ! .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to ! .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' ! .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ --- 28,42 ---- .. .de Ve \" End verbatim text .ft R + .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a ! .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used ! .\" to do unbreakable dashes and therefore won't be available. \*(C` and ! .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<> .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ *************** *** 48,57 **** . ds R" '' 'br\} .\" ! .\" If the F register is turned on, we'll generate index entries on stderr for ! .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index ! .\" entries marked with X<> in POD. Of course, you'll have to process the ! .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" --- 56,65 ---- . ds R" '' 'br\} .\" ! .\" If the F register is turned on, we'll generate index entries on stderr ! .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and ! .\" index entries marked with X<> in POD. Of course, you'll have to process ! .\" the output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" *************** *** 60,72 **** . rr F .\} .\" ! .\" For nroff, turn off justification. Always turn off hyphenation; it makes ! .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 --- 68,81 ---- . rr F .\} .\" ! .\" For nroff, turn off justification. Always turn off hyphenation; it ! .\" makes way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. + .bd B 3 . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 *************** *** 126,137 **** . ds Ae AE .\} .rm #[ #] #H #V #F C ! .\" ======================================================================== .\" .IX Title "G77 1" ! .TH G77 1 "2003-10-16" "gcc-3.3.2" "GNU" .SH "NAME" ! g77 \- GNU project Fortran 77 compiler .SH "SYNOPSIS" .IX Header "SYNOPSIS" g77 [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] --- 135,147 ---- . ds Ae AE .\} .rm #[ #] #H #V #F C ! .\" ====================================================================== .\" .IX Title "G77 1" ! .TH G77 1 "gcc-3.3.3" "2004-02-14" "GNU" ! .UC .SH "NAME" ! g77 \- \s-1GNU\s0 project Fortran 77 compiler .SH "SYNOPSIS" .IX Header "SYNOPSIS" g77 [\fB\-c\fR|\fB\-S\fR|\fB\-E\fR] *************** enables acceptance of \fBg77\fR options *** 158,243 **** by all of the relevant drivers. .PP In some cases, options have positive and negative forms; ! the negative form of \fB\-ffoo\fR would be \fB\-fno\-foo\fR. This manual documents only one of these two forms, whichever one is not the default. .SH "OPTIONS" .IX Header "OPTIONS" Here is a summary of all the options specific to \s-1GNU\s0 Fortran, grouped by type. Explanations are in the following sections. ! .IP "\fIOverall Options\fR" 4 .IX Item "Overall Options" ! \&\fB\-fversion \-fset\-g77\-defaults \-fno\-silent\fR ! .IP "\fIShorthand Options\fR" 4 .IX Item "Shorthand Options" ! \&\fB\-ff66 \-fno\-f66 \-ff77 \-fno\-f77 \-fno\-ugly\fR ! .IP "\fIFortran Language Options\fR" 4 .IX Item "Fortran Language Options" ! \&\fB\-ffree\-form \-fno\-fixed\-form \-ff90 ! \&\-fvxt \-fdollar\-ok \-fno\-backslash ! \&\-fno\-ugly\-args \-fno\-ugly\-assign \-fno\-ugly\-assumed ! \&\-fugly\-comma \-fugly\-complex \-fugly\-init \-fugly\-logint ! \&\-fonetrip \-ftypeless\-boz ! \&\-fintrin\-case\-initcap \-fintrin\-case\-upper ! \&\-fintrin\-case\-lower \-fintrin\-case\-any ! \&\-fmatch\-case\-initcap \-fmatch\-case\-upper ! \&\-fmatch\-case\-lower \-fmatch\-case\-any ! \&\-fsource\-case\-upper \-fsource\-case\-lower ! \&\-fsource\-case\-preserve ! \&\-fsymbol\-case\-initcap \-fsymbol\-case\-upper ! \&\-fsymbol\-case\-lower \-fsymbol\-case\-any ! \&\-fcase\-strict\-upper \-fcase\-strict\-lower ! \&\-fcase\-initcap \-fcase\-upper \-fcase\-lower \-fcase\-preserve ! \&\-ff2c\-intrinsics\-delete \-ff2c\-intrinsics\-hide ! \&\-ff2c\-intrinsics\-disable \-ff2c\-intrinsics\-enable ! \&\-fbadu77\-intrinsics\-delete \-fbadu77\-intrinsics\-hide ! \&\-fbadu77\-intrinsics\-disable \-fbadu77\-intrinsics\-enable ! \&\-ff90\-intrinsics\-delete \-ff90\-intrinsics\-hide ! \&\-ff90\-intrinsics\-disable \-ff90\-intrinsics\-enable ! \&\-fgnu\-intrinsics\-delete \-fgnu\-intrinsics\-hide ! \&\-fgnu\-intrinsics\-disable \-fgnu\-intrinsics\-enable ! \&\-fmil\-intrinsics\-delete \-fmil\-intrinsics\-hide ! \&\-fmil\-intrinsics\-disable \-fmil\-intrinsics\-enable ! \&\-funix\-intrinsics\-delete \-funix\-intrinsics\-hide ! \&\-funix\-intrinsics\-disable \-funix\-intrinsics\-enable ! \&\-fvxt\-intrinsics\-delete \-fvxt\-intrinsics\-hide ! \&\-fvxt\-intrinsics\-disable \-fvxt\-intrinsics\-enable ! \&\-ffixed\-line\-length\-\fR\fIn\fR \fB\-ffixed\-line\-length\-none\fR ! .IP "\fIWarning Options\fR" 4 .IX Item "Warning Options" ! \&\fB\-fsyntax\-only \-pedantic \-pedantic\-errors \-fpedantic ! \&\-w \-Wno\-globals \-Wimplicit \-Wunused \-Wuninitialized \&\-Wall \-Wsurprising \&\-Werror \-W\fR ! .IP "\fIDebugging Options\fR" 4 .IX Item "Debugging Options" \&\fB\-g\fR ! .IP "\fIOptimization Options\fR" 4 .IX Item "Optimization Options" ! \&\fB\-malign\-double ! \&\-ffloat\-store \-fforce\-mem \-fforce\-addr \-fno\-inline ! \&\-ffast\-math \-fstrength\-reduce \-frerun\-cse\-after\-loop ! \&\-funsafe\-math\-optimizations \-ffinite\-math\-only \-fno\-trapping\-math ! \&\-fexpensive\-optimizations \-fdelayed\-branch ! \&\-fschedule\-insns \-fschedule\-insn2 \-fcaller\-saves ! \&\-funroll\-loops \-funroll\-all\-loops ! \&\-fno\-move\-all\-movables \-fno\-reduce\-all\-givs ! \&\-fno\-rerun\-loop\-opt\fR ! .IP "\fIDirectory Options\fR" 4 .IX Item "Directory Options" ! \&\fB\-I\fR\fIdir\fR \fB\-I\-\fR ! .IP "\fICode Generation Options\fR" 4 .IX Item "Code Generation Options" ! \&\fB\-fno\-automatic \-finit\-local\-zero \-fno\-f2c ! \&\-ff2c\-library \-fno\-underscoring \-fno\-ident ! \&\-fpcc\-struct\-return \-freg\-struct\-return ! \&\-fshort\-double \-fno\-common \-fpack\-struct ! \&\-fzeros \-fno\-second\-underscore ! \&\-femulate\-complex ! \&\-falias\-check \-fargument\-alias ! \&\-fargument\-noalias \-fno\-argument\-noalias\-global ! \&\-fno\-globals \-fflatten\-arrays ! \&\-fbounds\-check \-ffortran\-bounds\-check\fR .PP Compilation can involve as many as four stages: preprocessing, code generation (often what is really meant by the term ``compilation''), --- 168,253 ---- by all of the relevant drivers. .PP In some cases, options have positive and negative forms; ! the negative form of \fB\-ffoo\fR would be \fB\-fno-foo\fR. This manual documents only one of these two forms, whichever one is not the default. .SH "OPTIONS" .IX Header "OPTIONS" Here is a summary of all the options specific to \s-1GNU\s0 Fortran, grouped by type. Explanations are in the following sections. ! .Ip "\fIOverall Options\fR" 4 .IX Item "Overall Options" ! \&\fB\-fversion \-fset-g77\-defaults \-fno-silent\fR ! .Ip "\fIShorthand Options\fR" 4 .IX Item "Shorthand Options" ! \&\fB\-ff66 \-fno-f66 \-ff77 \-fno-f77 \-fno-ugly\fR ! .Ip "\fIFortran Language Options\fR" 4 .IX Item "Fortran Language Options" ! \&\fB\-ffree-form \-fno-fixed-form \-ff90 ! \&\-fvxt \-fdollar-ok \-fno-backslash ! \&\-fno-ugly-args \-fno-ugly-assign \-fno-ugly-assumed ! \&\-fugly-comma \-fugly-complex \-fugly-init \-fugly-logint ! \&\-fonetrip \-ftypeless-boz ! \&\-fintrin-case-initcap \-fintrin-case-upper ! \&\-fintrin-case-lower \-fintrin-case-any ! \&\-fmatch-case-initcap \-fmatch-case-upper ! \&\-fmatch-case-lower \-fmatch-case-any ! \&\-fsource-case-upper \-fsource-case-lower ! \&\-fsource-case-preserve ! \&\-fsymbol-case-initcap \-fsymbol-case-upper ! \&\-fsymbol-case-lower \-fsymbol-case-any ! \&\-fcase-strict-upper \-fcase-strict-lower ! \&\-fcase-initcap \-fcase-upper \-fcase-lower \-fcase-preserve ! \&\-ff2c-intrinsics-delete \-ff2c-intrinsics-hide ! \&\-ff2c-intrinsics-disable \-ff2c-intrinsics-enable ! \&\-fbadu77\-intrinsics-delete \-fbadu77\-intrinsics-hide ! \&\-fbadu77\-intrinsics-disable \-fbadu77\-intrinsics-enable ! \&\-ff90\-intrinsics-delete \-ff90\-intrinsics-hide ! \&\-ff90\-intrinsics-disable \-ff90\-intrinsics-enable ! \&\-fgnu-intrinsics-delete \-fgnu-intrinsics-hide ! \&\-fgnu-intrinsics-disable \-fgnu-intrinsics-enable ! \&\-fmil-intrinsics-delete \-fmil-intrinsics-hide ! \&\-fmil-intrinsics-disable \-fmil-intrinsics-enable ! \&\-funix-intrinsics-delete \-funix-intrinsics-hide ! \&\-funix-intrinsics-disable \-funix-intrinsics-enable ! \&\-fvxt-intrinsics-delete \-fvxt-intrinsics-hide ! \&\-fvxt-intrinsics-disable \-fvxt-intrinsics-enable ! \&\-ffixed-line-length-\fR\fIn\fR \fB\-ffixed-line-length-none\fR ! .Ip "\fIWarning Options\fR" 4 .IX Item "Warning Options" ! \&\fB\-fsyntax-only \-pedantic \-pedantic-errors \-fpedantic ! \&\-w \-Wno-globals \-Wimplicit \-Wunused \-Wuninitialized \&\-Wall \-Wsurprising \&\-Werror \-W\fR ! .Ip "\fIDebugging Options\fR" 4 .IX Item "Debugging Options" \&\fB\-g\fR ! .Ip "\fIOptimization Options\fR" 4 .IX Item "Optimization Options" ! \&\fB\-malign-double ! \&\-ffloat-store \-fforce-mem \-fforce-addr \-fno-inline ! \&\-ffast-math \-fstrength-reduce \-frerun-cse-after-loop ! \&\-funsafe-math-optimizations \-ffinite-math-only \-fno-trapping-math ! \&\-fexpensive-optimizations \-fdelayed-branch ! \&\-fschedule-insns \-fschedule-insn2 \-fcaller-saves ! \&\-funroll-loops \-funroll-all-loops ! \&\-fno-move-all-movables \-fno-reduce-all-givs ! \&\-fno-rerun-loop-opt\fR ! .Ip "\fIDirectory Options\fR" 4 .IX Item "Directory Options" ! \&\fB\-I\fR\fIdir\fR \fB\-I-\fR ! .Ip "\fICode Generation Options\fR" 4 .IX Item "Code Generation Options" ! \&\fB\-fno-automatic \-finit-local-zero \-fno-f2c ! \&\-ff2c-library \-fno-underscoring \-fno-ident ! \&\-fpcc-struct-return \-freg-struct-return ! \&\-fshort-double \-fno-common \-fpack-struct ! \&\-fzeros \-fno-second-underscore ! \&\-femulate-complex ! \&\-falias-check \-fargument-alias ! \&\-fargument-noalias \-fno-argument-noalias-global ! \&\-fno-globals \-fflatten-arrays ! \&\-fbounds-check \-ffortran-bounds-check\fR .PP Compilation can involve as many as four stages: preprocessing, code generation (often what is really meant by the term ``compilation''), *************** For any given input file, the file name *** 250,261 **** program is contained in the file\-\-\-that is, the language in which the program is written is generally indicated by the suffix. Suffixes specific to \s-1GNU\s0 Fortran are listed below. ! .IP "\fIfile\fR\fB.f\fR" 4 .IX Item "file.f" .PD 0 ! .IP "\fIfile\fR\fB.for\fR" 4 .IX Item "file.for" ! .IP "\fIfile\fR\fB.FOR\fR" 4 .IX Item "file.FOR" .PD Fortran source code that should not be preprocessed. --- 260,271 ---- program is contained in the file\-\-\-that is, the language in which the program is written is generally indicated by the suffix. Suffixes specific to \s-1GNU\s0 Fortran are listed below. ! .Ip "\fIfile\fR\fB.f\fR" 4 .IX Item "file.f" .PD 0 ! .Ip "\fIfile\fR\fB.for\fR" 4 .IX Item "file.for" ! .Ip "\fIfile\fR\fB.FOR\fR" 4 .IX Item "file.FOR" .PD Fortran source code that should not be preprocessed. *************** Such source code cannot contain any prep *** 264,276 **** as \f(CW\*(C`#include\*(C'\fR, \f(CW\*(C`#define\*(C'\fR, \f(CW\*(C`#if\*(C'\fR, and so on. .Sp You can force \fB.f\fR files to be preprocessed by \fBcpp\fR by using ! \&\fB\-x f77\-cpp\-input\fR. ! .IP "\fIfile\fR\fB.F\fR" 4 .IX Item "file.F" .PD 0 ! .IP "\fIfile\fR\fB.fpp\fR" 4 .IX Item "file.fpp" ! .IP "\fIfile\fR\fB.FPP\fR" 4 .IX Item "file.FPP" .PD Fortran source code that must be preprocessed (by the C preprocessor --- 274,286 ---- as \f(CW\*(C`#include\*(C'\fR, \f(CW\*(C`#define\*(C'\fR, \f(CW\*(C`#if\*(C'\fR, and so on. .Sp You can force \fB.f\fR files to be preprocessed by \fBcpp\fR by using ! \&\fB\-x f77\-cpp-input\fR. ! .Ip "\fIfile\fR\fB.F\fR" 4 .IX Item "file.F" .PD 0 ! .Ip "\fIfile\fR\fB.fpp\fR" 4 .IX Item "file.fpp" ! .Ip "\fIfile\fR\fB.FPP\fR" 4 .IX Item "file.FPP" .PD Fortran source code that must be preprocessed (by the C preprocessor *************** Fortran source code that must be preproc *** 279,285 **** Note that preprocessing is not extended to the contents of files included by the \f(CW\*(C`INCLUDE\*(C'\fR directive\-\-\-the \f(CW\*(C`#include\*(C'\fR preprocessor directive must be used instead. ! .IP "\fIfile\fR\fB.r\fR" 4 .IX Item "file.r" Ratfor source code, which must be preprocessed by the \fBratfor\fR command, which is available separately (as it is not yet part of the \s-1GNU\s0 --- 289,295 ---- Note that preprocessing is not extended to the contents of files included by the \f(CW\*(C`INCLUDE\*(C'\fR directive\-\-\-the \f(CW\*(C`#include\*(C'\fR preprocessor directive must be used instead. ! .Ip "\fIfile\fR\fB.r\fR" 4 .IX Item "file.r" Ratfor source code, which must be preprocessed by the \fBratfor\fR command, which is available separately (as it is not yet part of the \s-1GNU\s0 *************** distinguish upper-case *** 296,302 **** letters from lower-case letters in their file names, typically use the \fI\fIfile\fI.for\fR and \fI\fIfile\fI.fpp\fR nomenclature. .PP ! Use of the preprocessor \fBcpp\fR allows use of C\-like constructs such as \f(CW\*(C`#define\*(C'\fR and \f(CW\*(C`#include\*(C'\fR, but can lead to unexpected, even mistaken, results due to Fortran's source file format. --- 306,312 ---- letters from lower-case letters in their file names, typically use the \fI\fIfile\fI.for\fR and \fI\fIfile\fI.fpp\fR nomenclature. .PP ! Use of the preprocessor \fBcpp\fR allows use of C-like constructs such as \f(CW\*(C`#define\*(C'\fR and \f(CW\*(C`#include\*(C'\fR, but can lead to unexpected, even mistaken, results due to Fortran's source file format. *************** anything that \fBcpp\fR sees as an unter *** 345,367 **** \& C Some Fortran compilers accept /* as starting \& C an inline comment. .Ve - .PP The following options that affect overall processing are recognized by the \fBg77\fR and \fBgcc\fR commands in a \s-1GNU\s0 Fortran installation: ! .IP "\fB\-fversion\fR" 4 .IX Item "-fversion" Ensure that the \fBg77\fR version of the compiler phase is reported, if run, and, starting in \f(CW\*(C`egcs\*(C'\fR version 1.1, that internal consistency checks in the \fIf771\fR program are run. .Sp ! This option is supplied automatically when \fB\-v\fR or \fB\-\-verbose\fR is specified as a command-line option for \fBg77\fR or \fBgcc\fR and when the resulting commands compile Fortran source files. .Sp In \s-1GCC\s0 3.1, this is changed back to the behavior \fBgcc\fR displays for \fB.c\fR files. ! .IP "\fB\-fset\-g77\-defaults\fR" 4 .IX Item "-fset-g77-defaults" \&\fIVersion info:\fR This option was obsolete as of \f(CW\*(C`egcs\*(C'\fR --- 355,376 ---- \& C Some Fortran compilers accept /* as starting \& C an inline comment. .Ve The following options that affect overall processing are recognized by the \fBg77\fR and \fBgcc\fR commands in a \s-1GNU\s0 Fortran installation: ! .Ip "\fB\-fversion\fR" 4 .IX Item "-fversion" Ensure that the \fBg77\fR version of the compiler phase is reported, if run, and, starting in \f(CW\*(C`egcs\*(C'\fR version 1.1, that internal consistency checks in the \fIf771\fR program are run. .Sp ! This option is supplied automatically when \fB\-v\fR or \fB\*(--verbose\fR is specified as a command-line option for \fBg77\fR or \fBgcc\fR and when the resulting commands compile Fortran source files. .Sp In \s-1GCC\s0 3.1, this is changed back to the behavior \fBgcc\fR displays for \fB.c\fR files. ! .Ip "\fB\-fset-g77\-defaults\fR" 4 .IX Item "-fset-g77-defaults" \&\fIVersion info:\fR This option was obsolete as of \f(CW\*(C`egcs\*(C'\fR *************** executable, invoke it without this optio *** 388,396 **** e.g. via \f(CW\*(C`./f771 \-quiet < /dev/null\*(C'\fR, to ensure that they have not introduced any internal inconsistencies (such as in the table of ! intrinsics) before proceeding\-\-\-\fBg77\fR will crash with a diagnostic if it detects an inconsistency. ! .IP "\fB\-fno\-silent\fR" 4 .IX Item "-fno-silent" Print (to \f(CW\*(C`stderr\*(C'\fR) the names of the program units as they are compiled, in a form similar to that used by popular --- 397,405 ---- e.g. via \f(CW\*(C`./f771 \-quiet < /dev/null\*(C'\fR, to ensure that they have not introduced any internal inconsistencies (such as in the table of ! intrinsics) before proceeding\-\--\fBg77\fR will crash with a diagnostic if it detects an inconsistency. ! .Ip "\fB\-fno-silent\fR" 4 .IX Item "-fno-silent" Print (to \f(CW\*(C`stderr\*(C'\fR) the names of the program units as they are compiled, in a form similar to that used by popular *************** they are compiled, in a form similar to *** 399,405 **** .IX Subsection "Shorthand Options" The following options serve as ``shorthand'' for other options accepted by the compiler: ! .IP "\fB\-fugly\fR" 4 .IX Item "-fugly" \&\fINote:\fR This option is no longer supported. The information, below, is provided to aid --- 408,414 ---- .IX Subsection "Shorthand Options" The following options serve as ``shorthand'' for other options accepted by the compiler: ! .Ip "\fB\-fugly\fR" 4 .IX Item "-fugly" \&\fINote:\fR This option is no longer supported. The information, below, is provided to aid *************** Same as: *** 413,423 **** \& -fugly-comma -fugly-complex -fugly-init \& -fugly-logint .Ve - .Sp These constructs are considered inappropriate to use in new or well-maintained portable Fortran code, but widely used in old code. ! .IP "\fB\-fno\-ugly\fR" 4 .IX Item "-fno-ugly" Specify that all ``ugly'' constructs are to be noisily rejected. Same as: --- 422,431 ---- \& -fugly-comma -fugly-complex -fugly-init \& -fugly-logint .Ve These constructs are considered inappropriate to use in new or well-maintained portable Fortran code, but widely used in old code. ! .Ip "\fB\-fno-ugly\fR" 4 .IX Item "-fno-ugly" Specify that all ``ugly'' constructs are to be noisily rejected. Same as: *************** Same as: *** 427,459 **** \& -fno-ugly-comma -fno-ugly-complex -fno-ugly-init \& -fno-ugly-logint .Ve ! .IP "\fB\-ff66\fR" 4 .IX Item "-ff66" Specify that the program is written in idiomatic \s-1FORTRAN\s0 66. ! Same as \fB\-fonetrip \-fugly\-assumed\fR. .Sp ! The \fB\-fno\-f66\fR option is the inverse of \fB\-ff66\fR. ! As such, it is the same as \fB\-fno\-onetrip \-fno\-ugly\-assumed\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other existing and obsolete Fortran implementations. ! .IP "\fB\-ff77\fR" 4 .IX Item "-ff77" Specify that the program is written in idiomatic \s-1UNIX\s0 \s-1FORTRAN\s0 77 and/or the dialect accepted by the \fBf2c\fR product. ! Same as \fB\-fbackslash \-fno\-typeless\-boz\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other existing and obsolete Fortran implementations. ! .IP "\fB\-fno\-f77\fR" 4 .IX Item "-fno-f77" ! The \fB\-fno\-f77\fR option is \fInot\fR the inverse of \fB\-ff77\fR. It specifies that the program is not written in idiomatic \s-1UNIX\s0 \&\s-1FORTRAN\s0 77 or \fBf2c\fR but in a more widely portable dialect. ! \&\fB\-fno\-f77\fR is the same as \fB\-fno\-backslash\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other --- 435,467 ---- \& -fno-ugly-comma -fno-ugly-complex -fno-ugly-init \& -fno-ugly-logint .Ve ! .Ip "\fB\-ff66\fR" 4 .IX Item "-ff66" Specify that the program is written in idiomatic \s-1FORTRAN\s0 66. ! Same as \fB\-fonetrip \-fugly-assumed\fR. .Sp ! The \fB\-fno-f66\fR option is the inverse of \fB\-ff66\fR. ! As such, it is the same as \fB\-fno-onetrip \-fno-ugly-assumed\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other existing and obsolete Fortran implementations. ! .Ip "\fB\-ff77\fR" 4 .IX Item "-ff77" Specify that the program is written in idiomatic \s-1UNIX\s0 \s-1FORTRAN\s0 77 and/or the dialect accepted by the \fBf2c\fR product. ! Same as \fB\-fbackslash \-fno-typeless-boz\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other existing and obsolete Fortran implementations. ! .Ip "\fB\-fno-f77\fR" 4 .IX Item "-fno-f77" ! The \fB\-fno-f77\fR option is \fInot\fR the inverse of \fB\-ff77\fR. It specifies that the program is not written in idiomatic \s-1UNIX\s0 \&\s-1FORTRAN\s0 77 or \fBf2c\fR but in a more widely portable dialect. ! \&\fB\-fno-f77\fR is the same as \fB\-fno-backslash\fR. .Sp The meaning of this option is likely to be refined as future versions of \fBg77\fR provide more compatibility with other *************** existing and obsolete Fortran implementa *** 462,506 **** .IX Subsection "Options Controlling Fortran Dialect" The following options control the dialect of Fortran that the compiler accepts: ! .IP "\fB\-ffree\-form\fR" 4 .IX Item "-ffree-form" .PD 0 ! .IP "\fB\-fno\-fixed\-form\fR" 4 .IX Item "-fno-fixed-form" .PD Specify that the source file is written in free form (introduced in Fortran 90) instead of the more-traditional fixed form. ! .IP "\fB\-ff90\fR" 4 .IX Item "-ff90" ! Allow certain Fortran\-90 constructs. .Sp This option controls whether certain Fortran 90 constructs are recognized. (Other Fortran 90 constructs might or might not be recognized depending on other options such as ! \&\fB\-fvxt\fR, \fB\-ff90\-intrinsics\-enable\fR, and the current level of support for Fortran 90.) ! .IP "\fB\-fvxt\fR" 4 .IX Item "-fvxt" Specify the treatment of certain constructs that have different meanings depending on whether the code is written in \&\s-1GNU\s0 Fortran (based on \s-1FORTRAN\s0 77 and akin to Fortran 90) or \s-1VXT\s0 Fortran (more like \s-1VAX\s0 \s-1FORTRAN\s0). .Sp ! The default is \fB\-fno\-vxt\fR. \&\fB\-fvxt\fR specifies that the \s-1VXT\s0 Fortran interpretations for those constructs are to be chosen. ! .IP "\fB\-fdollar\-ok\fR" 4 .IX Item "-fdollar-ok" Allow \fB$\fR as a valid character in a symbol name. ! .IP "\fB\-fno\-backslash\fR" 4 .IX Item "-fno-backslash" Specify that \fB\e\fR is not to be specially interpreted in character and Hollerith constants a la C and many \s-1UNIX\s0 Fortran compilers. .Sp For example, with \fB\-fbackslash\fR in effect, \fBA\enB\fR specifies three characters, with the second one being newline. ! With \fB\-fno\-backslash\fR, it specifies four characters, \&\fBA\fR, \fB\e\fR, \fBn\fR, and \fBB\fR. .Sp Note that \fBg77\fR implements a fairly general form of backslash --- 470,514 ---- .IX Subsection "Options Controlling Fortran Dialect" The following options control the dialect of Fortran that the compiler accepts: ! .Ip "\fB\-ffree-form\fR" 4 .IX Item "-ffree-form" .PD 0 ! .Ip "\fB\-fno-fixed-form\fR" 4 .IX Item "-fno-fixed-form" .PD Specify that the source file is written in free form (introduced in Fortran 90) instead of the more-traditional fixed form. ! .Ip "\fB\-ff90\fR" 4 .IX Item "-ff90" ! Allow certain Fortran-90 constructs. .Sp This option controls whether certain Fortran 90 constructs are recognized. (Other Fortran 90 constructs might or might not be recognized depending on other options such as ! \&\fB\-fvxt\fR, \fB\-ff90\-intrinsics-enable\fR, and the current level of support for Fortran 90.) ! .Ip "\fB\-fvxt\fR" 4 .IX Item "-fvxt" Specify the treatment of certain constructs that have different meanings depending on whether the code is written in \&\s-1GNU\s0 Fortran (based on \s-1FORTRAN\s0 77 and akin to Fortran 90) or \s-1VXT\s0 Fortran (more like \s-1VAX\s0 \s-1FORTRAN\s0). .Sp ! The default is \fB\-fno-vxt\fR. \&\fB\-fvxt\fR specifies that the \s-1VXT\s0 Fortran interpretations for those constructs are to be chosen. ! .Ip "\fB\-fdollar-ok\fR" 4 .IX Item "-fdollar-ok" Allow \fB$\fR as a valid character in a symbol name. ! .Ip "\fB\-fno-backslash\fR" 4 .IX Item "-fno-backslash" Specify that \fB\e\fR is not to be specially interpreted in character and Hollerith constants a la C and many \s-1UNIX\s0 Fortran compilers. .Sp For example, with \fB\-fbackslash\fR in effect, \fBA\enB\fR specifies three characters, with the second one being newline. ! With \fB\-fno-backslash\fR, it specifies four characters, \&\fBA\fR, \fB\e\fR, \fBn\fR, and \fBB\fR. .Sp Note that \fBg77\fR implements a fairly general form of backslash *************** For example, \fB'A\e003B'\fR is a three- *** 510,526 **** whereas other compilers that support backslash might not support the three-octal-digit form, and thus treat that string as longer than three characters. ! .IP "\fB\-fno\-ugly\-args\fR" 4 .IX Item "-fno-ugly-args" Disallow passing Hollerith and typeless constants as actual ! arguments (for example, \fB\s-1CALL\s0 \s-1FOO\s0(4HABCD)\fR). ! .IP "\fB\-fugly\-assign\fR" 4 .IX Item "-fugly-assign" Use the same storage for a given variable regardless of whether it is used to hold an assigned-statement label (as in \fB\s-1ASSIGN\s0 10 \s-1TO\s0 I\fR) or used to hold numeric data (as in \fBI = 3\fR). ! .IP "\fB\-fugly\-assumed\fR" 4 .IX Item "-fugly-assumed" Assume any dummy array with a final dimension specified as \fB1\fR is really an assumed-size array, as if \fB*\fR had been specified --- 518,534 ---- whereas other compilers that support backslash might not support the three-octal-digit form, and thus treat that string as longer than three characters. ! .Ip "\fB\-fno-ugly-args\fR" 4 .IX Item "-fno-ugly-args" Disallow passing Hollerith and typeless constants as actual ! arguments (for example, \fB\s-1CALL\s0 FOO(4HABCD)\fR). ! .Ip "\fB\-fugly-assign\fR" 4 .IX Item "-fugly-assign" Use the same storage for a given variable regardless of whether it is used to hold an assigned-statement label (as in \fB\s-1ASSIGN\s0 10 \s-1TO\s0 I\fR) or used to hold numeric data (as in \fBI = 3\fR). ! .Ip "\fB\-fugly-assumed\fR" 4 .IX Item "-fugly-assumed" Assume any dummy array with a final dimension specified as \fB1\fR is really an assumed-size array, as if \fB*\fR had been specified *************** for the final dimension instead of \fB1\ *** 528,534 **** .Sp For example, \fB\s-1DIMENSION\s0 X(1)\fR is treated as if it had read \fB\s-1DIMENSION\s0 X(*)\fR. ! .IP "\fB\-fugly\-comma\fR" 4 .IX Item "-fugly-comma" In an external-procedure invocation, treat a trailing comma in the argument list --- 536,542 ---- .Sp For example, \fB\s-1DIMENSION\s0 X(1)\fR is treated as if it had read \fB\s-1DIMENSION\s0 X(*)\fR. ! .Ip "\fB\-fugly-comma\fR" 4 .IX Item "-fugly-comma" In an external-procedure invocation, treat a trailing comma in the argument list *************** as specification of a trailing null argu *** 536,562 **** and treat an empty argument list as specification of a single null argument. .Sp ! For example, \fB\s-1CALL\s0 \s-1FOO\s0(,)\fR is treated as ! \&\fB\s-1CALL\s0 \s-1FOO\s0(%\f(BIVAL\fB\|(0), %\f(BIVAL\fB\|(0))\fR. That is, \fItwo\fR null arguments are specified ! by the procedure call when \fB\-fugly\-comma\fR is in force. ! And \fBF = \s-1\f(BIFUNC\s0()\fB\fR is treated as \fBF = \s-1FUNC\s0(%\f(BIVAL\fB\|(0))\fR. .Sp ! The default behavior, \fB\-fno\-ugly\-comma\fR, is to ignore a single trailing comma in an argument list. ! So, by default, \fB\s-1CALL\s0 \s-1FOO\s0(X,)\fR is treated ! exactly the same as \fB\s-1CALL\s0 \s-1FOO\s0(X)\fR. ! .IP "\fB\-fugly\-complex\fR" 4 .IX Item "-fugly-complex" ! Do not complain about \fB\s-1REAL\s0(\fR\fIexpr\fR\fB)\fR or ! \&\fB\s-1AIMAG\s0(\fR\fIexpr\fR\fB)\fR when \fIexpr\fR is a \f(CW\*(C`COMPLEX\*(C'\fR type other than \f(CW\*(C`COMPLEX(KIND=1)\*(C'\fR\-\-\-usually this is used to permit \f(CW\*(C`COMPLEX(KIND=2)\*(C'\fR (\f(CW\*(C`DOUBLE COMPLEX\*(C'\fR) operands. .Sp The \fB\-ff90\fR option controls the interpretation of this construct. ! .IP "\fB\-fno\-ugly\-init\fR" 4 .IX Item "-fno-ugly-init" Disallow use of Hollerith and typeless constants as initial values (in \f(CW\*(C`PARAMETER\*(C'\fR and \f(CW\*(C`DATA\*(C'\fR statements), and --- 544,570 ---- and treat an empty argument list as specification of a single null argument. .Sp ! For example, \fB\s-1CALL\s0 \f(BIFOO\fB\|(,)\fR is treated as ! \&\fB\s-1CALL\s0 FOO(%\f(BIVAL\fB\|(0), %\f(BIVAL\fB\|(0))\fR. That is, \fItwo\fR null arguments are specified ! by the procedure call when \fB\-fugly-comma\fR is in force. ! And \fBF = \f(BIFUNC()\fB\fR is treated as \fBF = FUNC(%\f(BIVAL\fB\|(0))\fR. .Sp ! The default behavior, \fB\-fno-ugly-comma\fR, is to ignore a single trailing comma in an argument list. ! So, by default, \fB\s-1CALL\s0 FOO(X,)\fR is treated ! exactly the same as \fB\s-1CALL\s0 \f(BIFOO\fB\|(X)\fR. ! .Ip "\fB\-fugly-complex\fR" 4 .IX Item "-fugly-complex" ! Do not complain about \fBREAL(\fR\fIexpr\fR\fB)\fR or ! \&\fBAIMAG(\fR\fIexpr\fR\fB)\fR when \fIexpr\fR is a \f(CW\*(C`COMPLEX\*(C'\fR type other than \f(CW\*(C`COMPLEX(KIND=1)\*(C'\fR\-\-\-usually this is used to permit \f(CW\*(C`COMPLEX(KIND=2)\*(C'\fR (\f(CW\*(C`DOUBLE COMPLEX\*(C'\fR) operands. .Sp The \fB\-ff90\fR option controls the interpretation of this construct. ! .Ip "\fB\-fno-ugly-init\fR" 4 .IX Item "-fno-ugly-init" Disallow use of Hollerith and typeless constants as initial values (in \f(CW\*(C`PARAMETER\*(C'\fR and \f(CW\*(C`DATA\*(C'\fR statements), and *************** use of character constants to *** 564,578 **** initialize numeric types and vice versa. .Sp For example, \fB\s-1DATA\s0 I/'F'/, \s-1CHRVAR/65/\s0, J/4HABCD/\fR is disallowed by ! \&\fB\-fno\-ugly\-init\fR. ! .IP "\fB\-fugly\-logint\fR" 4 .IX Item "-fugly-logint" Treat \f(CW\*(C`INTEGER\*(C'\fR and \f(CW\*(C`LOGICAL\*(C'\fR variables and expressions as potential stand-ins for each other. .Sp For example, automatic conversion between \f(CW\*(C`INTEGER\*(C'\fR and \&\f(CW\*(C`LOGICAL\*(C'\fR is enabled, for many contexts, via this option. ! .IP "\fB\-fonetrip\fR" 4 .IX Item "-fonetrip" Executable iterative \f(CW\*(C`DO\*(C'\fR loops are to be executed at least once each time they are reached. --- 572,586 ---- initialize numeric types and vice versa. .Sp For example, \fB\s-1DATA\s0 I/'F'/, \s-1CHRVAR/65/\s0, J/4HABCD/\fR is disallowed by ! \&\fB\-fno-ugly-init\fR. ! .Ip "\fB\-fugly-logint\fR" 4 .IX Item "-fugly-logint" Treat \f(CW\*(C`INTEGER\*(C'\fR and \f(CW\*(C`LOGICAL\*(C'\fR variables and expressions as potential stand-ins for each other. .Sp For example, automatic conversion between \f(CW\*(C`INTEGER\*(C'\fR and \&\f(CW\*(C`LOGICAL\*(C'\fR is enabled, for many contexts, via this option. ! .Ip "\fB\-fonetrip\fR" 4 .IX Item "-fonetrip" Executable iterative \f(CW\*(C`DO\*(C'\fR loops are to be executed at least once each time they are reached. *************** For example, some code written to the \s *** 593,606 **** expects this behavior from its \f(CW\*(C`DO\*(C'\fR loops, although that standard did not specify this behavior. .Sp ! The \fB\-fonetrip\fR option specifies that the source file(s) being compiled require one-trip loops. .Sp This option affects only those loops specified by the (iterative) \f(CW\*(C`DO\*(C'\fR ! statement and by implied\-\f(CW\*(C`DO\*(C'\fR lists in I/O statements. ! Loops specified by implied\-\f(CW\*(C`DO\*(C'\fR lists in \f(CW\*(C`DATA\*(C'\fR and ! specification (non\-executable) statements are not affected. ! .IP "\fB\-ftypeless\-boz\fR" 4 .IX Item "-ftypeless-boz" Specifies that prefix-radix non-decimal constants, such as \&\fBZ'\s-1ABCD\s0'\fR, are typeless instead of \f(CW\*(C`INTEGER(KIND=1)\*(C'\fR. --- 601,614 ---- expects this behavior from its \f(CW\*(C`DO\*(C'\fR loops, although that standard did not specify this behavior. .Sp ! The \fB\-fonetrip\fR option specifies that the source \fIfile\fR\|(s) being compiled require one-trip loops. .Sp This option affects only those loops specified by the (iterative) \f(CW\*(C`DO\*(C'\fR ! statement and by implied-\f(CW\*(C`DO\*(C'\fR lists in I/O statements. ! Loops specified by implied-\f(CW\*(C`DO\*(C'\fR lists in \f(CW\*(C`DATA\*(C'\fR and ! specification (non-executable) statements are not affected. ! .Ip "\fB\-ftypeless-boz\fR" 4 .IX Item "-ftypeless-boz" Specifies that prefix-radix non-decimal constants, such as \&\fBZ'\s-1ABCD\s0'\fR, are typeless instead of \f(CW\*(C`INTEGER(KIND=1)\*(C'\fR. *************** following program: *** 617,793 **** \& IF (J .NE. I) PRINT *, 'Prefix form is INTEGER' \& END .Ve - .Sp Reports indicate that many compilers process this form as \&\f(CW\*(C`INTEGER(KIND=1)\*(C'\fR, though a few as typeless, and at least one based on a command-line option specifying some kind of compatibility. ! .IP "\fB\-fintrin\-case\-initcap\fR" 4 .IX Item "-fintrin-case-initcap" .PD 0 ! .IP "\fB\-fintrin\-case\-upper\fR" 4 .IX Item "-fintrin-case-upper" ! .IP "\fB\-fintrin\-case\-lower\fR" 4 .IX Item "-fintrin-case-lower" ! .IP "\fB\-fintrin\-case\-any\fR" 4 .IX Item "-fintrin-case-any" .PD Specify expected case for intrinsic names. ! \&\fB\-fintrin\-case\-lower\fR is the default. ! .IP "\fB\-fmatch\-case\-initcap\fR" 4 .IX Item "-fmatch-case-initcap" .PD 0 ! .IP "\fB\-fmatch\-case\-upper\fR" 4 .IX Item "-fmatch-case-upper" ! .IP "\fB\-fmatch\-case\-lower\fR" 4 .IX Item "-fmatch-case-lower" ! .IP "\fB\-fmatch\-case\-any\fR" 4 .IX Item "-fmatch-case-any" .PD Specify expected case for keywords. ! \&\fB\-fmatch\-case\-lower\fR is the default. ! .IP "\fB\-fsource\-case\-upper\fR" 4 .IX Item "-fsource-case-upper" .PD 0 ! .IP "\fB\-fsource\-case\-lower\fR" 4 .IX Item "-fsource-case-lower" ! .IP "\fB\-fsource\-case\-preserve\fR" 4 .IX Item "-fsource-case-preserve" .PD Specify whether source text other than character and Hollerith constants is to be translated to uppercase, to lowercase, or preserved as is. ! \&\fB\-fsource\-case\-lower\fR is the default. ! .IP "\fB\-fsymbol\-case\-initcap\fR" 4 .IX Item "-fsymbol-case-initcap" .PD 0 ! .IP "\fB\-fsymbol\-case\-upper\fR" 4 .IX Item "-fsymbol-case-upper" ! .IP "\fB\-fsymbol\-case\-lower\fR" 4 .IX Item "-fsymbol-case-lower" ! .IP "\fB\-fsymbol\-case\-any\fR" 4 .IX Item "-fsymbol-case-any" .PD Specify valid cases for user-defined symbol names. ! \&\fB\-fsymbol\-case\-any\fR is the default. ! .IP "\fB\-fcase\-strict\-upper\fR" 4 .IX Item "-fcase-strict-upper" ! Same as \fB\-fintrin\-case\-upper \-fmatch\-case\-upper \-fsource\-case\-preserve ! \&\-fsymbol\-case\-upper\fR. (Requires all pertinent source to be in uppercase.) ! .IP "\fB\-fcase\-strict\-lower\fR" 4 .IX Item "-fcase-strict-lower" ! Same as \fB\-fintrin\-case\-lower \-fmatch\-case\-lower \-fsource\-case\-preserve ! \&\-fsymbol\-case\-lower\fR. (Requires all pertinent source to be in lowercase.) ! .IP "\fB\-fcase\-initcap\fR" 4 .IX Item "-fcase-initcap" ! Same as \fB\-fintrin\-case\-initcap \-fmatch\-case\-initcap \-fsource\-case\-preserve ! \&\-fsymbol\-case\-initcap\fR. (Requires all pertinent source to be in initial capitals, as in \fBPrint *,SqRt(Value)\fR.) ! .IP "\fB\-fcase\-upper\fR" 4 .IX Item "-fcase-upper" ! Same as \fB\-fintrin\-case\-any \-fmatch\-case\-any \-fsource\-case\-upper ! \&\-fsymbol\-case\-any\fR. (Maps all pertinent source to uppercase.) ! .IP "\fB\-fcase\-lower\fR" 4 .IX Item "-fcase-lower" ! Same as \fB\-fintrin\-case\-any \-fmatch\-case\-any \-fsource\-case\-lower ! \&\-fsymbol\-case\-any\fR. (Maps all pertinent source to lowercase.) ! .IP "\fB\-fcase\-preserve\fR" 4 .IX Item "-fcase-preserve" ! Same as \fB\-fintrin\-case\-any \-fmatch\-case\-any \-fsource\-case\-preserve ! \&\-fsymbol\-case\-any\fR. (Preserves all case in user-defined symbols, while allowing any-case matching of intrinsics and keywords. For example, \fBcall Foo(i,I)\fR would pass two \fIdifferent\fR variables named \fBi\fR and \fBI\fR to a procedure named \fBFoo\fR.) ! .IP "\fB\-fbadu77\-intrinsics\-delete\fR" 4 .IX Item "-fbadu77-intrinsics-delete" .PD 0 ! .IP "\fB\-fbadu77\-intrinsics\-hide\fR" 4 .IX Item "-fbadu77-intrinsics-hide" ! .IP "\fB\-fbadu77\-intrinsics\-disable\fR" 4 .IX Item "-fbadu77-intrinsics-disable" ! .IP "\fB\-fbadu77\-intrinsics\-enable\fR" 4 .IX Item "-fbadu77-intrinsics-enable" .PD Specify status of \s-1UNIX\s0 intrinsics having inappropriate forms. ! \&\fB\-fbadu77\-intrinsics\-enable\fR is the default. ! .IP "\fB\-ff2c\-intrinsics\-delete\fR" 4 .IX Item "-ff2c-intrinsics-delete" .PD 0 ! .IP "\fB\-ff2c\-intrinsics\-hide\fR" 4 .IX Item "-ff2c-intrinsics-hide" ! .IP "\fB\-ff2c\-intrinsics\-disable\fR" 4 .IX Item "-ff2c-intrinsics-disable" ! .IP "\fB\-ff2c\-intrinsics\-enable\fR" 4 .IX Item "-ff2c-intrinsics-enable" .PD ! Specify status of f2c\-specific intrinsics. ! \&\fB\-ff2c\-intrinsics\-enable\fR is the default. ! .IP "\fB\-ff90\-intrinsics\-delete\fR" 4 .IX Item "-ff90-intrinsics-delete" .PD 0 ! .IP "\fB\-ff90\-intrinsics\-hide\fR" 4 .IX Item "-ff90-intrinsics-hide" ! .IP "\fB\-ff90\-intrinsics\-disable\fR" 4 .IX Item "-ff90-intrinsics-disable" ! .IP "\fB\-ff90\-intrinsics\-enable\fR" 4 .IX Item "-ff90-intrinsics-enable" .PD Specify status of F90\-specific intrinsics. ! \&\fB\-ff90\-intrinsics\-enable\fR is the default. ! .IP "\fB\-fgnu\-intrinsics\-delete\fR" 4 .IX Item "-fgnu-intrinsics-delete" .PD 0 ! .IP "\fB\-fgnu\-intrinsics\-hide\fR" 4 .IX Item "-fgnu-intrinsics-hide" ! .IP "\fB\-fgnu\-intrinsics\-disable\fR" 4 .IX Item "-fgnu-intrinsics-disable" ! .IP "\fB\-fgnu\-intrinsics\-enable\fR" 4 .IX Item "-fgnu-intrinsics-enable" .PD Specify status of Digital's COMPLEX-related intrinsics. ! \&\fB\-fgnu\-intrinsics\-enable\fR is the default. ! .IP "\fB\-fmil\-intrinsics\-delete\fR" 4 .IX Item "-fmil-intrinsics-delete" .PD 0 ! .IP "\fB\-fmil\-intrinsics\-hide\fR" 4 .IX Item "-fmil-intrinsics-hide" ! .IP "\fB\-fmil\-intrinsics\-disable\fR" 4 .IX Item "-fmil-intrinsics-disable" ! .IP "\fB\-fmil\-intrinsics\-enable\fR" 4 .IX Item "-fmil-intrinsics-enable" .PD ! Specify status of MIL\-STD\-1753\-specific intrinsics. ! \&\fB\-fmil\-intrinsics\-enable\fR is the default. ! .IP "\fB\-funix\-intrinsics\-delete\fR" 4 .IX Item "-funix-intrinsics-delete" .PD 0 ! .IP "\fB\-funix\-intrinsics\-hide\fR" 4 .IX Item "-funix-intrinsics-hide" ! .IP "\fB\-funix\-intrinsics\-disable\fR" 4 .IX Item "-funix-intrinsics-disable" ! .IP "\fB\-funix\-intrinsics\-enable\fR" 4 .IX Item "-funix-intrinsics-enable" .PD Specify status of \s-1UNIX\s0 intrinsics. ! \&\fB\-funix\-intrinsics\-enable\fR is the default. ! .IP "\fB\-fvxt\-intrinsics\-delete\fR" 4 .IX Item "-fvxt-intrinsics-delete" .PD 0 ! .IP "\fB\-fvxt\-intrinsics\-hide\fR" 4 .IX Item "-fvxt-intrinsics-hide" ! .IP "\fB\-fvxt\-intrinsics\-disable\fR" 4 .IX Item "-fvxt-intrinsics-disable" ! .IP "\fB\-fvxt\-intrinsics\-enable\fR" 4 .IX Item "-fvxt-intrinsics-enable" .PD Specify status of \s-1VXT\s0 intrinsics. ! \&\fB\-fvxt\-intrinsics\-enable\fR is the default. ! .IP "\fB\-ffixed\-line\-length\-\fR\fIn\fR" 4 .IX Item "-ffixed-line-length-n" Set column after which characters are ignored in typical fixed-form lines in the source file, and through which spaces are assumed (as --- 625,800 ---- \& IF (J .NE. I) PRINT *, 'Prefix form is INTEGER' \& END .Ve Reports indicate that many compilers process this form as \&\f(CW\*(C`INTEGER(KIND=1)\*(C'\fR, though a few as typeless, and at least one based on a command-line option specifying some kind of compatibility. ! .Ip "\fB\-fintrin-case-initcap\fR" 4 .IX Item "-fintrin-case-initcap" .PD 0 ! .Ip "\fB\-fintrin-case-upper\fR" 4 .IX Item "-fintrin-case-upper" ! .Ip "\fB\-fintrin-case-lower\fR" 4 .IX Item "-fintrin-case-lower" ! .Ip "\fB\-fintrin-case-any\fR" 4 .IX Item "-fintrin-case-any" .PD Specify expected case for intrinsic names. ! \&\fB\-fintrin-case-lower\fR is the default. ! .Ip "\fB\-fmatch-case-initcap\fR" 4 .IX Item "-fmatch-case-initcap" .PD 0 ! .Ip "\fB\-fmatch-case-upper\fR" 4 .IX Item "-fmatch-case-upper" ! .Ip "\fB\-fmatch-case-lower\fR" 4 .IX Item "-fmatch-case-lower" ! .Ip "\fB\-fmatch-case-any\fR" 4 .IX Item "-fmatch-case-any" .PD Specify expected case for keywords. ! \&\fB\-fmatch-case-lower\fR is the default. ! .Ip "\fB\-fsource-case-upper\fR" 4 .IX Item "-fsource-case-upper" .PD 0 ! .Ip "\fB\-fsource-case-lower\fR" 4 .IX Item "-fsource-case-lower" ! .Ip "\fB\-fsource-case-preserve\fR" 4 .IX Item "-fsource-case-preserve" .PD Specify whether source text other than character and Hollerith constants is to be translated to uppercase, to lowercase, or preserved as is. ! \&\fB\-fsource-case-lower\fR is the default. ! .Ip "\fB\-fsymbol-case-initcap\fR" 4 .IX Item "-fsymbol-case-initcap" .PD 0 ! .Ip "\fB\-fsymbol-case-upper\fR" 4 .IX Item "-fsymbol-case-upper" ! .Ip "\fB\-fsymbol-case-lower\fR" 4 .IX Item "-fsymbol-case-lower" ! .Ip "\fB\-fsymbol-case-any\fR" 4 .IX Item "-fsymbol-case-any" .PD Specify valid cases for user-defined symbol names. ! \&\fB\-fsymbol-case-any\fR is the default. ! .Ip "\fB\-fcase-strict-upper\fR" 4 .IX Item "-fcase-strict-upper" ! Same as \fB\-fintrin-case-upper \-fmatch-case-upper \-fsource-case-preserve ! \&\-fsymbol-case-upper\fR. (Requires all pertinent source to be in uppercase.) ! .Ip "\fB\-fcase-strict-lower\fR" 4 .IX Item "-fcase-strict-lower" ! Same as \fB\-fintrin-case-lower \-fmatch-case-lower \-fsource-case-preserve ! \&\-fsymbol-case-lower\fR. (Requires all pertinent source to be in lowercase.) ! .Ip "\fB\-fcase-initcap\fR" 4 .IX Item "-fcase-initcap" ! Same as \fB\-fintrin-case-initcap \-fmatch-case-initcap \-fsource-case-preserve ! \&\-fsymbol-case-initcap\fR. (Requires all pertinent source to be in initial capitals, as in \fBPrint *,SqRt(Value)\fR.) ! .Ip "\fB\-fcase-upper\fR" 4 .IX Item "-fcase-upper" ! Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-upper ! \&\-fsymbol-case-any\fR. (Maps all pertinent source to uppercase.) ! .Ip "\fB\-fcase-lower\fR" 4 .IX Item "-fcase-lower" ! Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-lower ! \&\-fsymbol-case-any\fR. (Maps all pertinent source to lowercase.) ! .Ip "\fB\-fcase-preserve\fR" 4 .IX Item "-fcase-preserve" ! Same as \fB\-fintrin-case-any \-fmatch-case-any \-fsource-case-preserve ! \&\-fsymbol-case-any\fR. (Preserves all case in user-defined symbols, while allowing any-case matching of intrinsics and keywords. For example, \fBcall Foo(i,I)\fR would pass two \fIdifferent\fR variables named \fBi\fR and \fBI\fR to a procedure named \fBFoo\fR.) ! .Ip "\fB\-fbadu77\-intrinsics-delete\fR" 4 .IX Item "-fbadu77-intrinsics-delete" .PD 0 ! .Ip "\fB\-fbadu77\-intrinsics-hide\fR" 4 .IX Item "-fbadu77-intrinsics-hide" ! .Ip "\fB\-fbadu77\-intrinsics-disable\fR" 4 .IX Item "-fbadu77-intrinsics-disable" ! .Ip "\fB\-fbadu77\-intrinsics-enable\fR" 4 .IX Item "-fbadu77-intrinsics-enable" .PD Specify status of \s-1UNIX\s0 intrinsics having inappropriate forms. ! \&\fB\-fbadu77\-intrinsics-enable\fR is the default. ! .Ip "\fB\-ff2c-intrinsics-delete\fR" 4 .IX Item "-ff2c-intrinsics-delete" .PD 0 ! .Ip "\fB\-ff2c-intrinsics-hide\fR" 4 .IX Item "-ff2c-intrinsics-hide" ! .Ip "\fB\-ff2c-intrinsics-disable\fR" 4 .IX Item "-ff2c-intrinsics-disable" ! .Ip "\fB\-ff2c-intrinsics-enable\fR" 4 .IX Item "-ff2c-intrinsics-enable" .PD ! Specify status of f2c-specific intrinsics. ! \&\fB\-ff2c-intrinsics-enable\fR is the default. ! .Ip "\fB\-ff90\-intrinsics-delete\fR" 4 .IX Item "-ff90-intrinsics-delete" .PD 0 ! .Ip "\fB\-ff90\-intrinsics-hide\fR" 4 .IX Item "-ff90-intrinsics-hide" ! .Ip "\fB\-ff90\-intrinsics-disable\fR" 4 .IX Item "-ff90-intrinsics-disable" ! .Ip "\fB\-ff90\-intrinsics-enable\fR" 4 .IX Item "-ff90-intrinsics-enable" .PD Specify status of F90\-specific intrinsics. ! \&\fB\-ff90\-intrinsics-enable\fR is the default. ! .Ip "\fB\-fgnu-intrinsics-delete\fR" 4 .IX Item "-fgnu-intrinsics-delete" .PD 0 ! .Ip "\fB\-fgnu-intrinsics-hide\fR" 4 .IX Item "-fgnu-intrinsics-hide" ! .Ip "\fB\-fgnu-intrinsics-disable\fR" 4 .IX Item "-fgnu-intrinsics-disable" ! .Ip "\fB\-fgnu-intrinsics-enable\fR" 4 .IX Item "-fgnu-intrinsics-enable" .PD Specify status of Digital's COMPLEX-related intrinsics. ! \&\fB\-fgnu-intrinsics-enable\fR is the default. ! .Ip "\fB\-fmil-intrinsics-delete\fR" 4 .IX Item "-fmil-intrinsics-delete" .PD 0 ! .Ip "\fB\-fmil-intrinsics-hide\fR" 4 .IX Item "-fmil-intrinsics-hide" ! .Ip "\fB\-fmil-intrinsics-disable\fR" 4 .IX Item "-fmil-intrinsics-disable" ! .Ip "\fB\-fmil-intrinsics-enable\fR" 4 .IX Item "-fmil-intrinsics-enable" .PD ! Specify status of MIL-STD-1753\-specific intrinsics. ! \&\fB\-fmil-intrinsics-enable\fR is the default. ! .Ip "\fB\-funix-intrinsics-delete\fR" 4 .IX Item "-funix-intrinsics-delete" .PD 0 ! .Ip "\fB\-funix-intrinsics-hide\fR" 4 .IX Item "-funix-intrinsics-hide" ! .Ip "\fB\-funix-intrinsics-disable\fR" 4 .IX Item "-funix-intrinsics-disable" ! .Ip "\fB\-funix-intrinsics-enable\fR" 4 .IX Item "-funix-intrinsics-enable" .PD Specify status of \s-1UNIX\s0 intrinsics. ! \&\fB\-funix-intrinsics-enable\fR is the default. ! .Ip "\fB\-fvxt-intrinsics-delete\fR" 4 .IX Item "-fvxt-intrinsics-delete" .PD 0 ! .Ip "\fB\-fvxt-intrinsics-hide\fR" 4 .IX Item "-fvxt-intrinsics-hide" ! .Ip "\fB\-fvxt-intrinsics-disable\fR" 4 .IX Item "-fvxt-intrinsics-disable" ! .Ip "\fB\-fvxt-intrinsics-enable\fR" 4 .IX Item "-fvxt-intrinsics-enable" .PD Specify status of \s-1VXT\s0 intrinsics. ! \&\fB\-fvxt-intrinsics-enable\fR is the default. ! .Ip "\fB\-ffixed-line-length-\fR\fIn\fR" 4 .IX Item "-ffixed-line-length-n" Set column after which characters are ignored in typical fixed-form lines in the source file, and through which spaces are assumed (as *************** if padded to that length) after the ends *** 795,806 **** .Sp Popular values for \fIn\fR include 72 (the standard and the default), 80 (card image), and 132 (corresponds ! to ``extended\-source'' options in some popular compilers). \&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful and that continued character constants never have implicit spaces appended to them to fill out the line. ! \&\fB\-ffixed\-line\-length\-0\fR means the same thing as ! \&\fB\-ffixed\-line\-length\-none\fR. .Sh "Options to Request or Suppress Warnings" .IX Subsection "Options to Request or Suppress Warnings" Warnings are diagnostic messages that report constructions which --- 802,813 ---- .Sp Popular values for \fIn\fR include 72 (the standard and the default), 80 (card image), and 132 (corresponds ! to ``extended-source'' options in some popular compilers). \&\fIn\fR may be \fBnone\fR, meaning that the entire line is meaningful and that continued character constants never have implicit spaces appended to them to fill out the line. ! \&\fB\-ffixed-line-length-0\fR means the same thing as ! \&\fB\-ffixed-line-length-none\fR. .Sh "Options to Request or Suppress Warnings" .IX Subsection "Options to Request or Suppress Warnings" Warnings are diagnostic messages that report constructions which *************** might have been an error. *** 810,828 **** You can request many specific warnings with options beginning \fB\-W\fR, for example \fB\-Wimplicit\fR to request warnings on implicit declarations. Each of these specific warning options also has a ! negative form beginning \fB\-Wno\-\fR to turn off warnings; ! for example, \fB\-Wno\-implicit\fR. This manual lists only one of the two forms, whichever is not the default. .PP These options control the amount and kinds of warnings produced by \s-1GNU\s0 Fortran: ! .IP "\fB\-fsyntax\-only\fR" 4 .IX Item "-fsyntax-only" Check the code for syntax errors, but don't do anything beyond that. ! .IP "\fB\-pedantic\fR" 4 .IX Item "-pedantic" Issue warnings for uses of extensions to \s-1ANSI\s0 \s-1FORTRAN\s0 77. ! \&\fB\-pedantic\fR also applies to C\-language constructs where they occur in \s-1GNU\s0 Fortran source files, such as use of \fB\ee\fR in a character constant within a directive like \fB#include\fR. .Sp --- 817,835 ---- You can request many specific warnings with options beginning \fB\-W\fR, for example \fB\-Wimplicit\fR to request warnings on implicit declarations. Each of these specific warning options also has a ! negative form beginning \fB\-Wno-\fR to turn off warnings; ! for example, \fB\-Wno-implicit\fR. This manual lists only one of the two forms, whichever is not the default. .PP These options control the amount and kinds of warnings produced by \s-1GNU\s0 Fortran: ! .Ip "\fB\-fsyntax-only\fR" 4 .IX Item "-fsyntax-only" Check the code for syntax errors, but don't do anything beyond that. ! .Ip "\fB\-pedantic\fR" 4 .IX Item "-pedantic" Issue warnings for uses of extensions to \s-1ANSI\s0 \s-1FORTRAN\s0 77. ! \&\fB\-pedantic\fR also applies to C-language constructs where they occur in \s-1GNU\s0 Fortran source files, such as use of \fB\ee\fR in a character constant within a directive like \fB#include\fR. .Sp *************** conformance. *** 837,853 **** They soon find that it does not do quite what they want\-\-\-it finds some non-ANSI practices, but not all. However, improvements to \fBg77\fR in this area are welcome. ! .IP "\fB\-pedantic\-errors\fR" 4 .IX Item "-pedantic-errors" Like \fB\-pedantic\fR, except that errors are produced rather than warnings. ! .IP "\fB\-fpedantic\fR" 4 .IX Item "-fpedantic" Like \fB\-pedantic\fR, but applies only to Fortran constructs. ! .IP "\fB\-w\fR" 4 .IX Item "-w" Inhibit all warning messages. ! .IP "\fB\-Wno\-globals\fR" 4 .IX Item "-Wno-globals" Inhibit warnings about use of a name as both a global name (a subroutine, function, or block data program unit, or a --- 844,860 ---- They soon find that it does not do quite what they want\-\-\-it finds some non-ANSI practices, but not all. However, improvements to \fBg77\fR in this area are welcome. ! .Ip "\fB\-pedantic-errors\fR" 4 .IX Item "-pedantic-errors" Like \fB\-pedantic\fR, except that errors are produced rather than warnings. ! .Ip "\fB\-fpedantic\fR" 4 .IX Item "-fpedantic" Like \fB\-pedantic\fR, but applies only to Fortran constructs. ! .Ip "\fB\-w\fR" 4 .IX Item "-w" Inhibit all warning messages. ! .Ip "\fB\-Wno-globals\fR" 4 .IX Item "-Wno-globals" Inhibit warnings about use of a name as both a global name (a subroutine, function, or block data program unit, or a *************** Also inhibit warnings about inconsistent *** 858,864 **** definitions of global procedures (function and subroutines). Such inconsistencies include different numbers of arguments and different types of arguments. ! .IP "\fB\-Wimplicit\fR" 4 .IX Item "-Wimplicit" Warn whenever a variable, array, or function is implicitly declared. --- 865,871 ---- definitions of global procedures (function and subroutines). Such inconsistencies include different numbers of arguments and different types of arguments. ! .Ip "\fB\-Wimplicit\fR" 4 .IX Item "-Wimplicit" Warn whenever a variable, array, or function is implicitly declared. *************** Has an effect similar to using the \f(CW *** 866,875 **** in every program unit. (Some Fortran compilers provide this feature by an option named \fB\-u\fR or \fB/WARNINGS=DECLARATIONS\fR.) ! .IP "\fB\-Wunused\fR" 4 .IX Item "-Wunused" Warn whenever a variable is unused aside from its declaration. ! .IP "\fB\-Wuninitialized\fR" 4 .IX Item "-Wuninitialized" Warn whenever an automatic variable is used without first being initialized. .Sp --- 873,882 ---- in every program unit. (Some Fortran compilers provide this feature by an option named \fB\-u\fR or \fB/WARNINGS=DECLARATIONS\fR.) ! .Ip "\fB\-Wunused\fR" 4 .IX Item "-Wunused" Warn whenever a variable is unused aside from its declaration. ! .Ip "\fB\-Wuninitialized\fR" 4 .IX Item "-Wuninitialized" Warn whenever an automatic variable is used without first being initialized. .Sp *************** this can happen: *** 902,908 **** \& CALL FOO(I) \& END .Ve - .Sp If the value of \f(CW\*(C`J\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`I\*(C'\fR is always initialized, but \s-1GNU\s0 Fortran doesn't know this. Here is another common case: --- 909,914 ---- *************** another common case: *** 915,923 **** \& IF (FLAG) PRINT *, VALUE \& END .Ve - .Sp This has no bug because \f(CW\*(C`VALUE\*(C'\fR is used only if it is set. ! .IP "\fB\-Wall\fR" 4 .IX Item "-Wall" The \fB\-Wunused\fR and \fB\-Wuninitialized\fR options combined. These are all the --- 921,928 ---- \& IF (FLAG) PRINT *, VALUE \& END .Ve This has no bug because \f(CW\*(C`VALUE\*(C'\fR is used only if it is set. ! .Ip "\fB\-Wall\fR" 4 .IX Item "-Wall" The \fB\-Wunused\fR and \fB\-Wuninitialized\fR options combined. These are all the *************** be added to the list enabled by \fB\-Wal *** 929,944 **** The remaining \fB\-W...\fR options are not implied by \fB\-Wall\fR because they warn about constructions that we consider reasonable to use, on occasion, in clean programs. ! .IP "\fB\-Wsurprising\fR" 4 .IX Item "-Wsurprising" Warn about ``suspicious'' constructs that are interpreted by the compiler in a way that might well be surprising to someone reading the code. These differences can result in subtle, compiler-dependent ! (even machine\-dependent) behavioral differences. The constructs warned about include: .RS 4 ! .IP "\(bu" 4 Expressions having two arithmetic operators in a row, such as \fBX*\-Y\fR. Such a construct is nonstandard, and can produce --- 934,949 ---- The remaining \fB\-W...\fR options are not implied by \fB\-Wall\fR because they warn about constructions that we consider reasonable to use, on occasion, in clean programs. ! .Ip "\fB\-Wsurprising\fR" 4 .IX Item "-Wsurprising" Warn about ``suspicious'' constructs that are interpreted by the compiler in a way that might well be surprising to someone reading the code. These differences can result in subtle, compiler-dependent ! (even machine-dependent) behavioral differences. The constructs warned about include: .RS 4 ! .Ip "\(bu" 4 Expressions having two arithmetic operators in a row, such as \fBX*\-Y\fR. Such a construct is nonstandard, and can produce *************** type promotion. *** 958,964 **** .Sp (The \fB\-fpedantic\fR option also warns about expressions having two arithmetic operators in a row.) ! .IP "\(bu" 4 Expressions with a unary minus followed by an operand and then a binary operator other than plus or minus. For example, \fB\-2**2\fR produces a warning, because --- 963,969 ---- .Sp (The \fB\-fpedantic\fR option also warns about expressions having two arithmetic operators in a row.) ! .Ip "\(bu" 4 Expressions with a unary minus followed by an operand and then a binary operator other than plus or minus. For example, \fB\-2**2\fR produces a warning, because *************** of this warning is to warn about differi *** 984,990 **** and encourage a better style of coding, not to identify only those places where bugs might exist in the user's code. ! .IP "\(bu" 4 \&\f(CW\*(C`DO\*(C'\fR loops with \f(CW\*(C`DO\*(C'\fR variables that are not of integral type\-\-\-that is, using \f(CW\*(C`REAL\*(C'\fR variables as loop control variables. --- 989,995 ---- and encourage a better style of coding, not to identify only those places where bugs might exist in the user's code. ! .Ip "\(bu" 4 \&\f(CW\*(C`DO\*(C'\fR loops with \f(CW\*(C`DO\*(C'\fR variables that are not of integral type\-\-\-that is, using \f(CW\*(C`REAL\*(C'\fR variables as loop control variables. *************** are pronounced for non-integral loop con *** 997,1006 **** .RE .RS 4 .RE ! .IP "\fB\-Werror\fR" 4 .IX Item "-Werror" Make all warnings into errors. ! .IP "\fB\-W\fR" 4 .IX Item "-W" Turns on ``extra warnings'' and, if optimization is specified via \fB\-O\fR, the \fB\-Wuninitialized\fR option. --- 1002,1011 ---- .RE .RS 4 .RE ! .Ip "\fB\-Werror\fR" 4 .IX Item "-Werror" Make all warnings into errors. ! .Ip "\fB\-W\fR" 4 .IX Item "-W" Turns on ``extra warnings'' and, if optimization is specified via \fB\-O\fR, the \fB\-Wuninitialized\fR option. *************** via \fB\-O\fR, the \fB\-Wuninitialized\f *** 1008,1017 **** .Sp ``Extra warnings'' are issued for: .RS 4 ! .IP "\(bu" 4 Unused parameters to a procedure (when \fB\-Wunused\fR also is specified). ! .IP "\(bu" 4 Overflows involving floating-point constants (not available for certain configurations). .RE --- 1013,1022 ---- .Sp ``Extra warnings'' are issued for: .RS 4 ! .Ip "\(bu" 4 Unused parameters to a procedure (when \fB\-Wunused\fR also is specified). ! .Ip "\(bu" 4 Overflows involving floating-point constants (not available for certain configurations). .RE *************** for certain configurations). *** 1019,1050 **** .RE .PP Some of these have no effect when compiling programs written in Fortran: ! .IP "\fB\-Wcomment\fR" 4 .IX Item "-Wcomment" .PD 0 ! .IP "\fB\-Wformat\fR" 4 .IX Item "-Wformat" ! .IP "\fB\-Wparentheses\fR" 4 .IX Item "-Wparentheses" ! .IP "\fB\-Wswitch\fR" 4 .IX Item "-Wswitch" ! .IP "\fB\-Wswitch\-default\fR" 4 .IX Item "-Wswitch-default" ! .IP "\fB\-Wswitch\-enum\fR" 4 .IX Item "-Wswitch-enum" ! .IP "\fB\-Wtraditional\fR" 4 .IX Item "-Wtraditional" ! .IP "\fB\-Wshadow\fR" 4 .IX Item "-Wshadow" ! .IP "\fB\-Wid\-clash\-\fR\fIlen\fR" 4 .IX Item "-Wid-clash-len" ! .IP "\fB\-Wlarger\-than\-\fR\fIlen\fR" 4 .IX Item "-Wlarger-than-len" ! .IP "\fB\-Wconversion\fR" 4 .IX Item "-Wconversion" ! .IP "\fB\-Waggregate\-return\fR" 4 .IX Item "-Waggregate-return" ! .IP "\fB\-Wredundant\-decls\fR" 4 .IX Item "-Wredundant-decls" .PD These options all could have some relevant meaning for --- 1024,1055 ---- .RE .PP Some of these have no effect when compiling programs written in Fortran: ! .Ip "\fB\-Wcomment\fR" 4 .IX Item "-Wcomment" .PD 0 ! .Ip "\fB\-Wformat\fR" 4 .IX Item "-Wformat" ! .Ip "\fB\-Wparentheses\fR" 4 .IX Item "-Wparentheses" ! .Ip "\fB\-Wswitch\fR" 4 .IX Item "-Wswitch" ! .Ip "\fB\-Wswitch-default\fR" 4 .IX Item "-Wswitch-default" ! .Ip "\fB\-Wswitch-enum\fR" 4 .IX Item "-Wswitch-enum" ! .Ip "\fB\-Wtraditional\fR" 4 .IX Item "-Wtraditional" ! .Ip "\fB\-Wshadow\fR" 4 .IX Item "-Wshadow" ! .Ip "\fB\-Wid-clash-\fR\fIlen\fR" 4 .IX Item "-Wid-clash-len" ! .Ip "\fB\-Wlarger-than-\fR\fIlen\fR" 4 .IX Item "-Wlarger-than-len" ! .Ip "\fB\-Wconversion\fR" 4 .IX Item "-Wconversion" ! .Ip "\fB\-Waggregate-return\fR" 4 .IX Item "-Waggregate-return" ! .Ip "\fB\-Wredundant-decls\fR" 4 .IX Item "-Wredundant-decls" .PD These options all could have some relevant meaning for *************** These options all could have some releva *** 1053,1059 **** .IX Subsection "Options for Debugging Your Program or GNU Fortran" \&\s-1GNU\s0 Fortran has various special options that are used for debugging either your program or \fBg77\fR ! .IP "\fB\-g\fR" 4 .IX Item "-g" Produce debugging information in the operating system's native format (stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0). \s-1GDB\s0 can work with this debugging --- 1058,1064 ---- .IX Subsection "Options for Debugging Your Program or GNU Fortran" \&\s-1GNU\s0 Fortran has various special options that are used for debugging either your program or \fBg77\fR ! .Ip "\fB\-g\fR" 4 .IX Item "-g" Produce debugging information in the operating system's native format (stabs, \s-1COFF\s0, \s-1XCOFF\s0, or \s-1DWARF\s0). \s-1GDB\s0 can work with this debugging *************** A sample debugging session looks like th *** 1087,1093 **** \& $2 = 4 \& ... .Ve - .Sp One could also add the setting of the breakpoint and the first run command to the file \fI.gdbinit\fR in the current directory, to simplify the debugging session. --- 1092,1097 ---- *************** must use \fB\-O\fR or \fB\-O2\fR to get *** 1102,1108 **** .PP The following flags have particular applicability when compiling Fortran programs: ! .IP "\fB\-malign\-double\fR" 4 .IX Item "-malign-double" (Intel x86 architecture only.) .Sp --- 1106,1112 ---- .PP The following flags have particular applicability when compiling Fortran programs: ! .Ip "\fB\-malign-double\fR" 4 .IX Item "-malign-double" (Intel x86 architecture only.) .Sp *************** and data sets. *** 1124,1139 **** this option does not apply, generally speaking, to Fortran code compiled by \fBg77\fR .Sp ! \&\fIAlso also note:\fR The negative form of \fB\-malign\-double\fR ! is \fB\-mno\-align\-double\fR, not \fB\-benign\-double\fR. ! .IP "\fB\-ffloat\-store\fR" 4 .IX Item "-ffloat-store" Might help a Fortran program that depends on exact \s-1IEEE\s0 conformance on some machines, but might slow down a program that doesn't. .Sp This option is effective when the floating-point unit is set to work in \&\s-1IEEE\s0 854 `extended precision'\-\-\-as it typically is on x86 and m68k \s-1GNU\s0 ! systems\-\-\-rather than \s-1IEEE\s0 754 double precision. \fB\-ffloat\-store\fR tries to remove the extra precision by spilling data from floating-point registers into memory and this typically involves a big performance hit. However, it doesn't affect intermediate results, so that it is --- 1128,1143 ---- this option does not apply, generally speaking, to Fortran code compiled by \fBg77\fR .Sp ! \&\fIAlso also note:\fR The negative form of \fB\-malign-double\fR ! is \fB\-mno-align-double\fR, not \fB\-benign-double\fR. ! .Ip "\fB\-ffloat-store\fR" 4 .IX Item "-ffloat-store" Might help a Fortran program that depends on exact \s-1IEEE\s0 conformance on some machines, but might slow down a program that doesn't. .Sp This option is effective when the floating-point unit is set to work in \&\s-1IEEE\s0 854 `extended precision'\-\-\-as it typically is on x86 and m68k \s-1GNU\s0 ! systems\-\-\-rather than \s-1IEEE\s0 754 double precision. \fB\-ffloat-store\fR tries to remove the extra precision by spilling data from floating-point registers into memory and this typically involves a big performance hit. However, it doesn't affect intermediate results, so that it is *************** only partially effective. `Excess preci *** 1143,1181 **** \& a = b + c \& d = a * e .Ve - .Sp but not in code like: .Sp .Vb 1 \& d = (b + c) * e .Ve - .Sp For another, potentially better, way of controlling the precision, ! see \f(CW@ref\fR{Floating\-point precision}. ! .IP "\fB\-fforce\-mem\fR" 4 .IX Item "-fforce-mem" .PD 0 ! .IP "\fB\-fforce\-addr\fR" 4 .IX Item "-fforce-addr" .PD Might improve optimization of loops. ! .IP "\fB\-fno\-inline\fR" 4 .IX Item "-fno-inline" Don't compile statement functions inline. Might reduce the size of a program unit\-\-\-which might be at expense of some speed (though it should compile faster). Note that if you are not optimizing, no functions can be expanded inline. ! .IP "\fB\-ffast\-math\fR" 4 .IX Item "-ffast-math" Might allow some programs designed to not be too dependent on \s-1IEEE\s0 behavior for floating-point to run faster, or die trying. ! Sets \fB\-funsafe\-math\-optimizations\fR, \fB\-ffinite\-math\-only\fR, ! and \fB\-fno\-trapping\-math\fR. ! .IP "\fB\-funsafe\-math\-optimizations\fR" 4 .IX Item "-funsafe-math-optimizations" Allow optimizations that may be give incorrect results for certain \s-1IEEE\s0 inputs. ! .IP "\fB\-ffinite\-math\-only\fR" 4 .IX Item "-ffinite-math-only" Allow optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +\-Infs. --- 1147,1183 ---- \& a = b + c \& d = a * e .Ve but not in code like: .Sp .Vb 1 \& d = (b + c) * e .Ve For another, potentially better, way of controlling the precision, ! see \f(CW@ref\fR{Floating-point precision}. ! .Ip "\fB\-fforce-mem\fR" 4 .IX Item "-fforce-mem" .PD 0 ! .Ip "\fB\-fforce-addr\fR" 4 .IX Item "-fforce-addr" .PD Might improve optimization of loops. ! .Ip "\fB\-fno-inline\fR" 4 .IX Item "-fno-inline" Don't compile statement functions inline. Might reduce the size of a program unit\-\-\-which might be at expense of some speed (though it should compile faster). Note that if you are not optimizing, no functions can be expanded inline. ! .Ip "\fB\-ffast-math\fR" 4 .IX Item "-ffast-math" Might allow some programs designed to not be too dependent on \s-1IEEE\s0 behavior for floating-point to run faster, or die trying. ! Sets \fB\-funsafe-math-optimizations\fR, \fB\-ffinite-math-only\fR, ! and \fB\-fno-trapping-math\fR. ! .Ip "\fB\-funsafe-math-optimizations\fR" 4 .IX Item "-funsafe-math-optimizations" Allow optimizations that may be give incorrect results for certain \s-1IEEE\s0 inputs. ! .Ip "\fB\-ffinite-math-only\fR" 4 .IX Item "-ffinite-math-only" Allow optimizations for floating-point arithmetic that assume that arguments and results are not NaNs or +\-Infs. *************** This option should never be turned on by *** 1184,1215 **** it can result in incorrect output for programs which depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications. .Sp ! The default is \fB\-fno\-finite\-math\-only\fR. ! .IP "\fB\-fno\-trapping\-math\fR" 4 .IX Item "-fno-trapping-math" Allow the compiler to assume that floating-point arithmetic will not generate traps on any inputs. This is useful, for ! example, when running a program using \s-1IEEE\s0 \*(L"non\-stop\*(R" floating-point arithmetic. ! .IP "\fB\-fstrength\-reduce\fR" 4 .IX Item "-fstrength-reduce" Might make some loops run faster. ! .IP "\fB\-frerun\-cse\-after\-loop\fR" 4 .IX Item "-frerun-cse-after-loop" .PD 0 ! .IP "\fB\-fexpensive\-optimizations\fR" 4 .IX Item "-fexpensive-optimizations" ! .IP "\fB\-fdelayed\-branch\fR" 4 .IX Item "-fdelayed-branch" ! .IP "\fB\-fschedule\-insns\fR" 4 .IX Item "-fschedule-insns" ! .IP "\fB\-fschedule\-insns2\fR" 4 .IX Item "-fschedule-insns2" ! .IP "\fB\-fcaller\-saves\fR" 4 .IX Item "-fcaller-saves" .PD Might improve performance on some code. ! .IP "\fB\-funroll\-loops\fR" 4 .IX Item "-funroll-loops" Typically improves performance on code using iterative \f(CW\*(C`DO\*(C'\fR loops by unrolling them and is probably generally appropriate for Fortran, though --- 1186,1217 ---- it can result in incorrect output for programs which depend on an exact implementation of \s-1IEEE\s0 or \s-1ISO\s0 rules/specifications. .Sp ! The default is \fB\-fno-finite-math-only\fR. ! .Ip "\fB\-fno-trapping-math\fR" 4 .IX Item "-fno-trapping-math" Allow the compiler to assume that floating-point arithmetic will not generate traps on any inputs. This is useful, for ! example, when running a program using \s-1IEEE\s0 \*(L"non-stop\*(R" floating-point arithmetic. ! .Ip "\fB\-fstrength-reduce\fR" 4 .IX Item "-fstrength-reduce" Might make some loops run faster. ! .Ip "\fB\-frerun-cse-after-loop\fR" 4 .IX Item "-frerun-cse-after-loop" .PD 0 ! .Ip "\fB\-fexpensive-optimizations\fR" 4 .IX Item "-fexpensive-optimizations" ! .Ip "\fB\-fdelayed-branch\fR" 4 .IX Item "-fdelayed-branch" ! .Ip "\fB\-fschedule-insns\fR" 4 .IX Item "-fschedule-insns" ! .Ip "\fB\-fschedule-insns2\fR" 4 .IX Item "-fschedule-insns2" ! .Ip "\fB\-fcaller-saves\fR" 4 .IX Item "-fcaller-saves" .PD Might improve performance on some code. ! .Ip "\fB\-funroll-loops\fR" 4 .IX Item "-funroll-loops" Typically improves performance on code using iterative \f(CW\*(C`DO\*(C'\fR loops by unrolling them and is probably generally appropriate for Fortran, though *************** benefit from loop optimizations, includi *** 1222,1250 **** to\-\-\-unrolling. Loops written with \f(CW\*(C`IF\*(C'\fR and \f(CW\*(C`GOTO\*(C'\fR are not currently recognized as such. This option unrolls only iterative \&\f(CW\*(C`DO\*(C'\fR loops, not \f(CW\*(C`DO WHILE\*(C'\fR loops. ! .IP "\fB\-funroll\-all\-loops\fR" 4 .IX Item "-funroll-all-loops" Probably improves performance on code using \f(CW\*(C`DO WHILE\*(C'\fR loops by unrolling them in addition to iterative \f(CW\*(C`DO\*(C'\fR loops. In the absence ! of \f(CW\*(C`DO WHILE\*(C'\fR, this option is equivalent to \fB\-funroll\-loops\fR but possibly slower. ! .IP "\fB\-fno\-move\-all\-movables\fR" 4 .IX Item "-fno-move-all-movables" .PD 0 ! .IP "\fB\-fno\-reduce\-all\-givs\fR" 4 .IX Item "-fno-reduce-all-givs" ! .IP "\fB\-fno\-rerun\-loop\-opt\fR" 4 .IX Item "-fno-rerun-loop-opt" .PD In general, the optimizations enabled with these options will lead to faster code being generated by \s-1GNU\s0 Fortran; hence they are enabled by default when issuing the \fBg77\fR command. .Sp ! \&\fB\-fmove\-all\-movables\fR and \fB\-freduce\-all\-givs\fR will enable loop optimization to move all loop-invariant index computations in nested loops over multi-rank array dummy arguments out of these loops. .Sp ! \&\fB\-frerun\-loop\-opt\fR will move offset calculations resulting from the fact that Fortran arrays by default have a lower bound of 1 out of the loops. .Sp --- 1224,1252 ---- to\-\-\-unrolling. Loops written with \f(CW\*(C`IF\*(C'\fR and \f(CW\*(C`GOTO\*(C'\fR are not currently recognized as such. This option unrolls only iterative \&\f(CW\*(C`DO\*(C'\fR loops, not \f(CW\*(C`DO WHILE\*(C'\fR loops. ! .Ip "\fB\-funroll-all-loops\fR" 4 .IX Item "-funroll-all-loops" Probably improves performance on code using \f(CW\*(C`DO WHILE\*(C'\fR loops by unrolling them in addition to iterative \f(CW\*(C`DO\*(C'\fR loops. In the absence ! of \f(CW\*(C`DO WHILE\*(C'\fR, this option is equivalent to \fB\-funroll-loops\fR but possibly slower. ! .Ip "\fB\-fno-move-all-movables\fR" 4 .IX Item "-fno-move-all-movables" .PD 0 ! .Ip "\fB\-fno-reduce-all-givs\fR" 4 .IX Item "-fno-reduce-all-givs" ! .Ip "\fB\-fno-rerun-loop-opt\fR" 4 .IX Item "-fno-rerun-loop-opt" .PD In general, the optimizations enabled with these options will lead to faster code being generated by \s-1GNU\s0 Fortran; hence they are enabled by default when issuing the \fBg77\fR command. .Sp ! \&\fB\-fmove-all-movables\fR and \fB\-freduce-all-givs\fR will enable loop optimization to move all loop-invariant index computations in nested loops over multi-rank array dummy arguments out of these loops. .Sp ! \&\fB\-frerun-loop-opt\fR will move offset calculations resulting from the fact that Fortran arrays by default have a lower bound of 1 out of the loops. .Sp *************** for files specified via the \f(CW\*(C`IN *** 1283,1292 **** although files included by that directive are not, themselves, preprocessed. These options are: ! .IP "\fB\-I\-\fR" 4 .IX Item "-I-" .PD 0 ! .IP "\fB\-I\fR\fIdir\fR" 4 .IX Item "-Idir" .PD These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive --- 1285,1294 ---- although files included by that directive are not, themselves, preprocessed. These options are: ! .Ip "\fB\-I-\fR" 4 .IX Item "-I-" .PD 0 ! .Ip "\fB\-I\fR\fIdir\fR" 4 .IX Item "-Idir" .PD These affect interpretation of the \f(CW\*(C`INCLUDE\*(C'\fR directive *************** These machine-independent options contro *** 1308,1325 **** used in code generation. .PP Most of them have both positive and negative forms; the negative form ! of \fB\-ffoo\fR would be \fB\-fno\-foo\fR. In the table below, only one of the forms is listed\-\-\-the one which is not the default. You ! can figure out the other form by either removing \fBno\-\fR or adding it. ! .IP "\fB\-fno\-automatic\fR" 4 .IX Item "-fno-automatic" Treat each program unit as if the \f(CW\*(C`SAVE\*(C'\fR statement was specified for every local variable and array referenced in it. Does not affect common blocks. (Some Fortran compilers provide this option under the name \fB\-static\fR.) ! .IP "\fB\-finit\-local\-zero\fR" 4 .IX Item "-finit-local-zero" Specify that variables and arrays that are local to a program unit (not in a common block and not passed as an argument) are to be initialized --- 1310,1327 ---- used in code generation. .PP Most of them have both positive and negative forms; the negative form ! of \fB\-ffoo\fR would be \fB\-fno-foo\fR. In the table below, only one of the forms is listed\-\-\-the one which is not the default. You ! can figure out the other form by either removing \fBno-\fR or adding it. ! .Ip "\fB\-fno-automatic\fR" 4 .IX Item "-fno-automatic" Treat each program unit as if the \f(CW\*(C`SAVE\*(C'\fR statement was specified for every local variable and array referenced in it. Does not affect common blocks. (Some Fortran compilers provide this option under the name \fB\-static\fR.) ! .Ip "\fB\-finit-local-zero\fR" 4 .IX Item "-finit-local-zero" Specify that variables and arrays that are local to a program unit (not in a common block and not passed as an argument) are to be initialized *************** to binary zeros. *** 1327,1334 **** .Sp Since there is a run-time penalty for initialization of variables that are not given the \f(CW\*(C`SAVE\*(C'\fR attribute, it might be a ! good idea to also use \fB\-fno\-automatic\fR with \fB\-finit\-local\-zero\fR. ! .IP "\fB\-fno\-f2c\fR" 4 .IX Item "-fno-f2c" Do not generate code designed to be compatible with code generated by \fBf2c\fR use the \s-1GNU\s0 calling conventions instead. --- 1329,1336 ---- .Sp Since there is a run-time penalty for initialization of variables that are not given the \f(CW\*(C`SAVE\*(C'\fR attribute, it might be a ! good idea to also use \fB\-fno-automatic\fR with \fB\-finit-local-zero\fR. ! .Ip "\fB\-fno-f2c\fR" 4 .IX Item "-fno-f2c" Do not generate code designed to be compatible with code generated by \fBf2c\fR use the \s-1GNU\s0 calling conventions instead. *************** and functions that return type \f(CW\*(C *** 1339,1345 **** values via an extra argument in the calling sequence that points to where to store the return value. Under the \s-1GNU\s0 calling conventions, such functions simply return ! their results as they would in \s-1GNU\s0 C\-\-\-\f(CW\*(C`REAL(KIND=1)\*(C'\fR functions return the C type \f(CW\*(C`float\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR functions return the \s-1GNU\s0 C type \f(CW\*(C`complex\*(C'\fR (or its \f(CW\*(C`struct\*(C'\fR equivalent). --- 1341,1347 ---- values via an extra argument in the calling sequence that points to where to store the return value. Under the \s-1GNU\s0 calling conventions, such functions simply return ! their results as they would in \s-1GNU\s0 C\-\--\f(CW\*(C`REAL(KIND=1)\*(C'\fR functions return the C type \f(CW\*(C`float\*(C'\fR, and \f(CW\*(C`COMPLEX\*(C'\fR functions return the \s-1GNU\s0 C type \f(CW\*(C`complex\*(C'\fR (or its \f(CW\*(C`struct\*(C'\fR equivalent). *************** This does not affect the generation of c *** 1350,1385 **** However, because the \f(CW\*(C`libg2c\*(C'\fR library uses \fBf2c\fR calling conventions, \fBg77\fR rejects attempts to pass intrinsics implemented by routines in this library as actual ! arguments when \fB\-fno\-f2c\fR is used, to avoid bugs when they are actually called by code expecting the \s-1GNU\s0 calling conventions to work. .Sp ! For example, \fB\s-1INTRINSIC\s0 \s-1ABS\s0;CALL \s-1FOO\s0(\s-1ABS\s0)\fR is ! rejected when \fB\-fno\-f2c\fR is in force. (Future versions of the \fBg77\fR run-time library might offer routines that provide GNU-callable versions of the routines that implement the \fBf2c\fR intrinsics that may be passed as actual arguments, so that ! valid programs need not be rejected when \fB\-fno\-f2c\fR is used.) .Sp ! \&\fBCaution:\fR If \fB\-fno\-f2c\fR is used when compiling any source file used in a program, it must be used when compiling \&\fIall\fR Fortran source files used in that program. ! .IP "\fB\-ff2c\-library\fR" 4 .IX Item "-ff2c-library" Specify that use of \f(CW\*(C`libg2c\*(C'\fR (or the original \f(CW\*(C`libf2c\*(C'\fR) is required. This is the default for the current version of \fBg77\fR .Sp Currently it is not ! valid to specify \fB\-fno\-f2c\-library\fR. This option is provided so users can specify it in shell scripts that build programs and libraries that require the \&\f(CW\*(C`libf2c\*(C'\fR library, even when being compiled by future versions of \fBg77\fR that might otherwise default to generating code for an incompatible library. ! .IP "\fB\-fno\-underscoring\fR" 4 .IX Item "-fno-underscoring" Do not transform names of entities specified in the Fortran source file by appending underscores to them. --- 1352,1387 ---- However, because the \f(CW\*(C`libg2c\*(C'\fR library uses \fBf2c\fR calling conventions, \fBg77\fR rejects attempts to pass intrinsics implemented by routines in this library as actual ! arguments when \fB\-fno-f2c\fR is used, to avoid bugs when they are actually called by code expecting the \s-1GNU\s0 calling conventions to work. .Sp ! For example, \fB\s-1INTRINSIC\s0 \s-1ABS\s0;CALL FOO(\s-1ABS\s0)\fR is ! rejected when \fB\-fno-f2c\fR is in force. (Future versions of the \fBg77\fR run-time library might offer routines that provide GNU-callable versions of the routines that implement the \fBf2c\fR intrinsics that may be passed as actual arguments, so that ! valid programs need not be rejected when \fB\-fno-f2c\fR is used.) .Sp ! \&\fBCaution:\fR If \fB\-fno-f2c\fR is used when compiling any source file used in a program, it must be used when compiling \&\fIall\fR Fortran source files used in that program. ! .Ip "\fB\-ff2c-library\fR" 4 .IX Item "-ff2c-library" Specify that use of \f(CW\*(C`libg2c\*(C'\fR (or the original \f(CW\*(C`libf2c\*(C'\fR) is required. This is the default for the current version of \fBg77\fR .Sp Currently it is not ! valid to specify \fB\-fno-f2c-library\fR. This option is provided so users can specify it in shell scripts that build programs and libraries that require the \&\f(CW\*(C`libf2c\*(C'\fR library, even when being compiled by future versions of \fBg77\fR that might otherwise default to generating code for an incompatible library. ! .Ip "\fB\-fno-underscoring\fR" 4 .IX Item "-fno-underscoring" Do not transform names of entities specified in the Fortran source file by appending underscores to them. *************** With \fB\-funderscoring\fR in effect, \f *** 1388,1427 **** to names with underscores and one underscore to external names with no underscores. (\fBg77\fR also appends two underscores to internal names with underscores to avoid naming collisions with external names. ! The \fB\-fno\-second\-underscore\fR option disables appending of the second underscore in all cases.) .Sp This is done to ensure compatibility with code produced by many \&\s-1UNIX\s0 Fortran compilers, including \fBf2c\fR which perform the same transformations. .Sp ! Use of \fB\-fno\-underscoring\fR is not recommended unless you are experimenting with issues such as integration of (\s-1GNU\s0) Fortran into ! existing system environments (vis\-a\-vis existing libraries, tools, and so on). .Sp For example, with \fB\-funderscoring\fR, and assuming other defaults like ! \&\fB\-fcase\-lower\fR and that \fBj()\fR and \fB\f(BImax_count()\fB\fR are external functions while \fBmy_var\fR and \fBlvar\fR are local variables, a statement like .Sp .Vb 1 \& I = J() + MAX_COUNT (MY_VAR, LVAR) .Ve - .Sp is implemented as something akin to: .Sp .Vb 1 \& i = j_() + max_count__(&my_var__, &lvar); .Ve ! .Sp ! With \fB\-fno\-underscoring\fR, the same statement is implemented as: .Sp .Vb 1 \& i = j() + max_count(&my_var, &lvar); .Ve ! .Sp ! Use of \fB\-fno\-underscoring\fR allows direct specification of user-defined names while debugging and when interfacing \fBg77\fR code with other languages. .Sp --- 1390,1426 ---- to names with underscores and one underscore to external names with no underscores. (\fBg77\fR also appends two underscores to internal names with underscores to avoid naming collisions with external names. ! The \fB\-fno-second-underscore\fR option disables appending of the second underscore in all cases.) .Sp This is done to ensure compatibility with code produced by many \&\s-1UNIX\s0 Fortran compilers, including \fBf2c\fR which perform the same transformations. .Sp ! Use of \fB\-fno-underscoring\fR is not recommended unless you are experimenting with issues such as integration of (\s-1GNU\s0) Fortran into ! existing system environments (vis-a-vis existing libraries, tools, and so on). .Sp For example, with \fB\-funderscoring\fR, and assuming other defaults like ! \&\fB\-fcase-lower\fR and that \fB\f(BIj()\fB\fR and \fB\f(BImax_count()\fB\fR are external functions while \fBmy_var\fR and \fBlvar\fR are local variables, a statement like .Sp .Vb 1 \& I = J() + MAX_COUNT (MY_VAR, LVAR) .Ve is implemented as something akin to: .Sp .Vb 1 \& i = j_() + max_count__(&my_var__, &lvar); .Ve ! With \fB\-fno-underscoring\fR, the same statement is implemented as: .Sp .Vb 1 \& i = j() + max_count(&my_var, &lvar); .Ve ! Use of \fB\-fno-underscoring\fR allows direct specification of user-defined names while debugging and when interfacing \fBg77\fR code with other languages. .Sp *************** both compilers to agree on issues other *** 1435,1441 **** significant effort, and, unlike naming disagreements, linkers normally cannot detect disagreements in these other areas. .Sp ! Also, note that with \fB\-fno\-underscoring\fR, the lack of appended underscores introduces the very real possibility that a user-defined external name will conflict with a name in a system library, which could make finding unresolved-reference bugs quite difficult in some --- 1434,1440 ---- significant effort, and, unlike naming disagreements, linkers normally cannot detect disagreements in these other areas. .Sp ! Also, note that with \fB\-fno-underscoring\fR, the lack of appended underscores introduces the very real possibility that a user-defined external name will conflict with a name in a system library, which could make finding unresolved-reference bugs quite difficult in some *************** issues so that debugging always involves *** 1447,1467 **** in the source, even if the names as seen by the linker are mangled to prevent accidental linking between procedures with incompatible interfaces. ! .IP "\fB\-fno\-second\-underscore\fR" 4 .IX Item "-fno-second-underscore" Do not append a second underscore to names of entities specified in the Fortran source file. .Sp ! This option has no effect if \fB\-fno\-underscoring\fR is in effect. .Sp Otherwise, with this option, an external name such as \fB\s-1MAX_COUNT\s0\fR is implemented as a reference to the link-time external symbol \&\fBmax_count_\fR, instead of \fBmax_count_\|_\fR. ! .IP "\fB\-fno\-ident\fR" 4 .IX Item "-fno-ident" Ignore the \fB#ident\fR directive. ! .IP "\fB\-fzeros\fR" 4 .IX Item "-fzeros" Treat initial values of zero as if they were any other value. .Sp --- 1446,1466 ---- in the source, even if the names as seen by the linker are mangled to prevent accidental linking between procedures with incompatible interfaces. ! .Ip "\fB\-fno-second-underscore\fR" 4 .IX Item "-fno-second-underscore" Do not append a second underscore to names of entities specified in the Fortran source file. .Sp ! This option has no effect if \fB\-fno-underscoring\fR is in effect. .Sp Otherwise, with this option, an external name such as \fB\s-1MAX_COUNT\s0\fR is implemented as a reference to the link-time external symbol \&\fBmax_count_\fR, instead of \fBmax_count_\|_\fR. ! .Ip "\fB\-fno-ident\fR" 4 .IX Item "-fno-ident" Ignore the \fB#ident\fR directive. ! .Ip "\fB\-fzeros\fR" 4 .IX Item "-fzeros" Treat initial values of zero as if they were any other value. .Sp *************** all initializations, zero or otherwise. *** 1483,1489 **** differently. The interpretation changes will affect only non-standard programs; standard-conforming programs should not be affected. ! .IP "\fB\-femulate\-complex\fR" 4 .IX Item "-femulate-complex" Implement \f(CW\*(C`COMPLEX\*(C'\fR arithmetic via emulation, instead of using the facilities of --- 1482,1488 ---- differently. The interpretation changes will affect only non-standard programs; standard-conforming programs should not be affected. ! .Ip "\fB\-femulate-complex\fR" 4 .IX Item "-femulate-complex" Implement \f(CW\*(C`COMPLEX\*(C'\fR arithmetic via emulation, instead of using the facilities of *************** the \fBgcc\fR back end that provide dire *** 1494,1500 **** for \f(CW\*(C`complex\*(C'\fR arithmetic, due primarily to the support not being completed as of version 2.8.1 and \f(CW\*(C`egcs\*(C'\fR 1.1.2.) .Sp ! Use \fB\-femulate\-complex\fR if you suspect code-generation bugs, or experience compiler crashes, that might result from \fBg77\fR using the \f(CW\*(C`COMPLEX\*(C'\fR support in the \fBgcc\fR back end. --- 1493,1499 ---- for \f(CW\*(C`complex\*(C'\fR arithmetic, due primarily to the support not being completed as of version 2.8.1 and \f(CW\*(C`egcs\*(C'\fR 1.1.2.) .Sp ! Use \fB\-femulate-complex\fR if you suspect code-generation bugs, or experience compiler crashes, that might result from \fBg77\fR using the \f(CW\*(C`COMPLEX\*(C'\fR support in the \fBgcc\fR back end. *************** As of \s-1GCC\s0 version 3.0, this optio *** 1513,1526 **** .Sp \&\fICaution:\fR Future versions of \fBg77\fR might ignore both forms of this option. ! .IP "\fB\-falias\-check\fR" 4 .IX Item "-falias-check" .PD 0 ! .IP "\fB\-fargument\-alias\fR" 4 .IX Item "-fargument-alias" ! .IP "\fB\-fargument\-noalias\fR" 4 .IX Item "-fargument-noalias" ! .IP "\fB\-fno\-argument\-noalias\-global\fR" 4 .IX Item "-fno-argument-noalias-global" .PD \&\fIVersion info:\fR --- 1512,1525 ---- .Sp \&\fICaution:\fR Future versions of \fBg77\fR might ignore both forms of this option. ! .Ip "\fB\-falias-check\fR" 4 .IX Item "-falias-check" .PD 0 ! .Ip "\fB\-fargument-alias\fR" 4 .IX Item "-fargument-alias" ! .Ip "\fB\-fargument-noalias\fR" 4 .IX Item "-fargument-noalias" ! .Ip "\fB\-fno-argument-noalias-global\fR" 4 .IX Item "-fno-argument-noalias-global" .PD \&\fIVersion info:\fR *************** arguments (passed as pointers) and \f(CW *** 1534,1547 **** public) storage. .Sp The default for Fortran code, as mandated by the \s-1FORTRAN\s0 77 and ! Fortran 90 standards, is \fB\-fargument\-noalias\-global\fR. The default for code written in the C language family is ! \&\fB\-fargument\-alias\fR. .Sp ! Note that, on some systems, compiling with \fB\-fforce\-addr\fR in effect can produce more optimal code when the default aliasing options are in effect (and when optimization is enabled). ! .IP "\fB\-fno\-globals\fR" 4 .IX Item "-fno-globals" Disable diagnostics about inter-procedural analysis problems, such as disagreements about the --- 1533,1546 ---- public) storage. .Sp The default for Fortran code, as mandated by the \s-1FORTRAN\s0 77 and ! Fortran 90 standards, is \fB\-fargument-noalias-global\fR. The default for code written in the C language family is ! \&\fB\-fargument-alias\fR. .Sp ! Note that, on some systems, compiling with \fB\-fforce-addr\fR in effect can produce more optimal code when the default aliasing options are in effect (and when optimization is enabled). ! .Ip "\fB\-fno-globals\fR" 4 .IX Item "-fno-globals" Disable diagnostics about inter-procedural analysis problems, such as disagreements about the *************** that might cause a compiler crash when a *** 1550,1556 **** to inline a reference to a procedure within a program unit. (The diagnostics themselves are still produced, but ! as warnings, unless \fB\-Wno\-globals\fR is specified, in which case no relevant diagnostics are produced.) .Sp Further, this option disables such inlining, to --- 1549,1555 ---- to inline a reference to a procedure within a program unit. (The diagnostics themselves are still produced, but ! as warnings, unless \fB\-Wno-globals\fR is specified, in which case no relevant diagnostics are produced.) .Sp Further, this option disables such inlining, to *************** and warns about similar disagreements *** 1579,1587 **** that are currently believed to not likely to result in the compiler later crashing or producing incorrect code. ! .IP "\fB\-fflatten\-arrays\fR" 4 .IX Item "-fflatten-arrays" ! Use back end's C\-like constructs (pointer plus offset) instead of its \f(CW\*(C`ARRAY_REF\*(C'\fR construct to handle all array references. --- 1578,1586 ---- that are currently believed to not likely to result in the compiler later crashing or producing incorrect code. ! .Ip "\fB\-fflatten-arrays\fR" 4 .IX Item "-fflatten-arrays" ! Use back end's C-like constructs (pointer plus offset) instead of its \f(CW\*(C`ARRAY_REF\*(C'\fR construct to handle all array references. *************** to handle all array references. *** 1590,1599 **** It is intended for use only by \fBg77\fR developers, to evaluate code-generation issues. It might be removed at any time. ! .IP "\fB\-fbounds\-check\fR" 4 .IX Item "-fbounds-check" .PD 0 ! .IP "\fB\-ffortran\-bounds\-check\fR" 4 .IX Item "-ffortran-bounds-check" .PD Enable generation of run-time checks for array subscripts --- 1589,1598 ---- It is intended for use only by \fBg77\fR developers, to evaluate code-generation issues. It might be removed at any time. ! .Ip "\fB\-fbounds-check\fR" 4 .IX Item "-fbounds-check" .PD 0 ! .Ip "\fB\-ffortran-bounds-check\fR" 4 .IX Item "-ffortran-bounds-check" .PD Enable generation of run-time checks for array subscripts *************** such as references to below the beginnin *** 1613,1619 **** \&\fBg77\fR also generates checks for \f(CW\*(C`CHARACTER\*(C'\fR substring references, something \fBf2c\fR currently does not do. .Sp ! Use the new \fB\-ffortran\-bounds\-check\fR option to specify bounds-checking for only the Fortran code you are compiling, not necessarily for code written in other languages. .Sp --- 1612,1618 ---- \&\fBg77\fR also generates checks for \f(CW\*(C`CHARACTER\*(C'\fR substring references, something \fBf2c\fR currently does not do. .Sp ! Use the new \fB\-ffortran-bounds-check\fR option to specify bounds-checking for only the Fortran code you are compiling, not necessarily for code written in other languages. .Sp *************** Here's a sample diagnostic: *** 1627,1633 **** \& Attempt to access the -6-th element of variable b[subscript-2-of-2]. \& Aborted .Ve - .Sp The above message indicates that the offending source line is line 4 of the file \fIrnge.f\fR, within the program unit (or statement function) named \fBbf\fR. --- 1626,1631 ---- *************** this appearance: *** 1641,1647 **** .Vb 1 \& Attempt to access the 11-th element of variable a[start-substring]. .Ve - .Sp This indicates that the offended \f(CW\*(C`CHARACTER\*(C'\fR variable or array is named \fBa\fR, the offended substring position is the starting (leftmost) position, --- 1639,1644 ---- *************** the above information should provide ade *** 1653,1677 **** to it users.) .PP Some of these do \fInot\fR work when compiling programs written in Fortran: ! .IP "\fB\-fpcc\-struct\-return\fR" 4 .IX Item "-fpcc-struct-return" .PD 0 ! .IP "\fB\-freg\-struct\-return\fR" 4 .IX Item "-freg-struct-return" .PD You should not use these except strictly the same way as you used them to build the version of \f(CW\*(C`libg2c\*(C'\fR with which you will be linking all code compiled by \fBg77\fR with the same option. ! .IP "\fB\-fshort\-double\fR" 4 .IX Item "-fshort-double" This probably either has no effect on Fortran programs, or makes them act loopy. ! .IP "\fB\-fno\-common\fR" 4 .IX Item "-fno-common" Do not use this when compiling Fortran programs, or there will be Trouble. ! .IP "\fB\-fpack\-struct\fR" 4 .IX Item "-fpack-struct" This probably will break any calls to the \f(CW\*(C`libg2c\*(C'\fR library, at the very least, even if it is built with the same option. --- 1650,1674 ---- to it users.) .PP Some of these do \fInot\fR work when compiling programs written in Fortran: ! .Ip "\fB\-fpcc-struct-return\fR" 4 .IX Item "-fpcc-struct-return" .PD 0 ! .Ip "\fB\-freg-struct-return\fR" 4 .IX Item "-freg-struct-return" .PD You should not use these except strictly the same way as you used them to build the version of \f(CW\*(C`libg2c\*(C'\fR with which you will be linking all code compiled by \fBg77\fR with the same option. ! .Ip "\fB\-fshort-double\fR" 4 .IX Item "-fshort-double" This probably either has no effect on Fortran programs, or makes them act loopy. ! .Ip "\fB\-fno-common\fR" 4 .IX Item "-fno-common" Do not use this when compiling Fortran programs, or there will be Trouble. ! .Ip "\fB\-fpack-struct\fR" 4 .IX Item "-fpack-struct" This probably will break any calls to the \f(CW\*(C`libg2c\*(C'\fR library, at the very least, even if it is built with the same option. *************** For instructions on reporting bugs, see *** 1687,1693 **** script to report bugs is recommended. .SH "FOOTNOTES" .IX Header "FOOTNOTES" ! .IP "1." 4 \&\fIloop discovery\fR refers to the process by which a compiler, or indeed any reader of a program, determines which portions of the program are more likely to be executed --- 1684,1690 ---- script to report bugs is recommended. .SH "FOOTNOTES" .IX Header "FOOTNOTES" ! .Ip "1." 4 \&\fIloop discovery\fR refers to the process by which a compiler, or indeed any reader of a program, determines which portions of the program are more likely to be executed *************** constructed out of lower-level construct *** 1702,1708 **** than otherwise. .SH "SEE ALSO" .IX Header "SEE ALSO" ! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1) and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIg77\fR, \fIas\fR, \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR. --- 1699,1705 ---- than otherwise. .SH "SEE ALSO" .IX Header "SEE ALSO" ! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf-funding\fR\|(7), \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIadb\fR\|(1), \fIdbx\fR\|(1), \fIsdb\fR\|(1) and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIg77\fR, \fIas\fR, \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR. *************** included in the \fIgfdl\fR\|(7) man page *** 1727,1733 **** .Vb 1 \& A GNU Manual .Ve - .PP (b) The \s-1FSF\s0's Back-Cover Text is: .PP .Vb 3 --- 1724,1729 ---- diff -Nrc3pad gcc-3.3.2/gcc/f/g77.info gcc-3.3.3/gcc/f/g77.info *** gcc-3.3.2/gcc/f/g77.info Thu Oct 16 20:24:03 2003 --- gcc-3.3.3/gcc/f/g77.info Sat Feb 14 20:38:10 2004 *************** *** 1,4 **** ! This is g77.info, produced by makeinfo version 4.2 from g77.texi. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. --- 1,5 ---- ! Ceci est le fichier Info g77.info, produit par Makeinfo version 4.6 à ! partir g77.texi. Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. *************** START-INFO-DIR-ENTRY *** 25,31 **** * g77: (g77). The GNU Fortran compiler. END-INFO-DIR-ENTRY This file documents the use and the internals of the GNU Fortran ! (`g77') compiler. It corresponds to the GCC-3.3.2 version of `g77'. Published by the Free Software Foundation 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA --- 26,32 ---- * g77: (g77). The GNU Fortran compiler. END-INFO-DIR-ENTRY This file documents the use and the internals of the GNU Fortran ! (`g77') compiler. It corresponds to the GCC-3.3.3 version of `g77'. Published by the Free Software Foundation 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA *************** File: g77.info, Node: Top, Next: Copyi *** 60,68 **** Introduction ************ ! This manual documents how to run, install and port `g77', as well as its new features and incompatibilities, and how to report bugs. It ! corresponds to the GCC-3.3.2 version of `g77'. * Menu: --- 61,69 ---- Introduction ************ ! This manual documents how to run, install and port `g77', as well as its new features and incompatibilities, and how to report bugs. It ! corresponds to the GCC-3.3.3 version of `g77'. * Menu: *************** GNU GENERAL PUBLIC LICENSE *** 116,124 **** Preamble ======== ! The licenses for most software are designed to take away your ! freedom to share and change it. By contrast, the GNU General Public ! License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to --- 117,125 ---- Preamble ======== ! The licenses for most software are designed to take away your freedom ! to share and change it. By contrast, the GNU General Public License is ! intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to *************** modification follow. *** 399,405 **** How to Apply These Terms to Your New Programs ============================================= ! If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. --- 400,406 ---- How to Apply These Terms to Your New Programs ============================================= ! If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. *************** GNU Free Documentation License *** 863,869 **** ADDENDUM: How to use this License for your documents ==================================================== ! To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: --- 864,870 ---- ADDENDUM: How to use this License for your documents ==================================================== ! To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: *************** File: g77.info, Node: Contributors, Ne *** 897,904 **** Contributors to GNU Fortran *************************** ! In addition to James Craig Burley, who wrote the front end, many ! people have helped create and improve GNU Fortran. * The packaging and compiler portions of GNU Fortran are based largely on the GNU CC compiler. *Note Contributors to GCC: --- 898,905 ---- Contributors to GNU Fortran *************************** ! In addition to James Craig Burley, who wrote the front end, many people ! have helped create and improve GNU Fortran. * The packaging and compiler portions of GNU Fortran are based largely on the GNU CC compiler. *Note Contributors to GCC: *************** File: g77.info, Node: Funding, Next: F *** 991,997 **** Funding Free Software ********************* ! If you want to have more free software a few years from now, it makes sense for you to help encourage people to contribute funds for its development. The most effective approach known is to encourage commercial redistributors to donate. --- 992,998 ---- Funding Free Software ********************* ! If you want to have more free software a few years from now, it makes sense for you to help encourage people to contribute funds for its development. The most effective approach known is to encourage commercial redistributors to donate. *************** File: g77.info, Node: Funding GNU Fortr *** 1041,1048 **** Funding GNU Fortran ******************* ! James Craig Burley (), the original author of ! `g77', stopped working on it in September 1999 (He has a web page at `http://world.std.com/%7Eburley'.) GNU Fortran is currently maintained by Toon Moene --- 1042,1049 ---- Funding GNU Fortran ******************* ! James Craig Burley (), the original author of `g77', ! stopped working on it in September 1999 (He has a web page at `http://world.std.com/%7Eburley'.) GNU Fortran is currently maintained by Toon Moene *************** File: g77.info, Node: Getting Started, *** 1075,1081 **** Getting Started *************** ! If you don't need help getting started reading the portions of this manual that are most important to you, you should skip this portion of the manual. --- 1076,1082 ---- Getting Started *************** ! If you don't need help getting started reading the portions of this manual that are most important to you, you should skip this portion of the manual. *************** File: g77.info, Node: What is GNU Fortr *** 1128,1135 **** What is GNU Fortran? ******************** ! GNU Fortran, or `g77', is designed initially as a free replacement ! for, or alternative to, the UNIX `f77' command. (Similarly, `gcc' is designed as a replacement for the UNIX `cc' command.) `g77' also is designed to fit in well with the other fine GNU --- 1129,1136 ---- What is GNU Fortran? ******************** ! GNU Fortran, or `g77', is designed initially as a free replacement for, ! or alternative to, the UNIX `f77' command. (Similarly, `gcc' is designed as a replacement for the UNIX `cc' command.) `g77' also is designed to fit in well with the other fine GNU *************** File: g77.info, Node: G77 and GCC, Nex *** 1321,1327 **** Compile Fortran, C, or Other Programs ************************************* ! A GNU Fortran installation includes a modified version of the `gcc' command. In a non-Fortran installation, `gcc' recognizes C, C++, and --- 1322,1328 ---- Compile Fortran, C, or Other Programs ************************************* ! A GNU Fortran installation includes a modified version of the `gcc' command. In a non-Fortran installation, `gcc' recognizes C, C++, and *************** File: g77.info, Node: Invoking G77, Ne *** 1351,1357 **** GNU Fortran Command Options *************************** ! The `g77' command supports all the options supported by the `gcc' command. *Note GCC Command Options: (gcc)Invoking GCC, for information on the non-Fortran-specific aspects of the `gcc' command (and, therefore, the `g77' command). --- 1352,1358 ---- GNU Fortran Command Options *************************** ! The `g77' command supports all the options supported by the `gcc' command. *Note GCC Command Options: (gcc)Invoking GCC, for information on the non-Fortran-specific aspects of the `gcc' command (and, therefore, the `g77' command). *************** File: g77.info, Node: Option Summary, *** 1392,1398 **** Option Summary ============== ! Here is a summary of all the options specific to GNU Fortran, grouped by type. Explanations are in the following sections. _Overall Options_ --- 1393,1399 ---- Option Summary ============== ! Here is a summary of all the options specific to GNU Fortran, grouped by type. Explanations are in the following sections. _Overall Options_ *************** _Code Generation Options_ *** 1476,1481 **** --- 1477,1483 ---- -fno-globals -fflatten-arrays -fbounds-check -ffortran-bounds-check + * Menu: * Overall Options:: Controlling the kind of output: *************** File: g77.info, Node: Overall Options, *** 1500,1506 **** Options Controlling the Kind of Output ====================================== ! Compilation can involve as many as four stages: preprocessing, code generation (often what is really meant by the term "compilation"), assembly, and linking, always in that order. The first three stages apply to an individual source file, and end by producing an object --- 1502,1508 ---- Options Controlling the Kind of Output ====================================== ! Compilation can involve as many as four stages: preprocessing, code generation (often what is really meant by the term "compilation"), assembly, and linking, always in that order. The first three stages apply to an individual source file, and end by producing an object *************** File: g77.info, Node: Shorthand Options *** 1645,1652 **** Shorthand Options ================= ! The following options serve as "shorthand" for other options ! accepted by the compiler: `-fugly' _Note:_ This option is no longer supported. The information, --- 1647,1654 ---- Shorthand Options ================= ! The following options serve as "shorthand" for other options accepted ! by the compiler: `-fugly' _Note:_ This option is no longer supported. The information, *************** File: g77.info, Node: Fortran Dialect O *** 1709,1716 **** Options Controlling Fortran Dialect =================================== ! The following options control the dialect of Fortran that the ! compiler accepts: `-ffree-form' --- 1711,1718 ---- Options Controlling Fortran Dialect =================================== ! The following options control the dialect of Fortran that the compiler ! accepts: `-ffree-form' *************** File: g77.info, Node: Warning Options, *** 2042,2048 **** Options to Request or Suppress Warnings ======================================= ! Warnings are diagnostic messages that report constructions which are not inherently erroneous but which are risky or suggest there might have been an error. --- 2044,2050 ---- Options to Request or Suppress Warnings ======================================= ! Warnings are diagnostic messages that report constructions which are not inherently erroneous but which are risky or suggest there might have been an error. *************** File: g77.info, Node: Debugging Options *** 2275,2281 **** Options for Debugging Your Program or GNU Fortran ================================================= ! GNU Fortran has various special options that are used for debugging either your program or `g77' `-g' --- 2277,2283 ---- Options for Debugging Your Program or GNU Fortran ================================================= ! GNU Fortran has various special options that are used for debugging either your program or `g77' `-g' *************** File: g77.info, Node: Optimize Options, *** 2322,2329 **** Options That Control Optimization ================================= ! Most Fortran users will want to use no optimization when developing ! and testing programs, and use `-O' or `-O2' when compiling programs for late-cycle testing and for production use. However, note that certain diagnostics--such as for uninitialized variables--depend on the flow analysis done by `-O', i.e. you must use `-O' or `-O2' to get such --- 2324,2331 ---- Options That Control Optimization ================================= ! Most Fortran users will want to use no optimization when developing and ! testing programs, and use `-O' or `-O2' when compiling programs for late-cycle testing and for production use. However, note that certain diagnostics--such as for uninitialized variables--depend on the flow analysis done by `-O', i.e. you must use `-O' or `-O2' to get such *************** File: g77.info, Node: Preprocessor Opti *** 2494,2501 **** Options Controlling the Preprocessor ==================================== ! These options control the C preprocessor, which is run on each C ! source file before actual compilation. *Note Options Controlling the Preprocessor: (gcc)Preprocessor Options, for information on C preprocessor options. --- 2496,2503 ---- Options Controlling the Preprocessor ==================================== ! These options control the C preprocessor, which is run on each C source ! file before actual compilation. *Note Options Controlling the Preprocessor: (gcc)Preprocessor Options, for information on C preprocessor options. *************** File: g77.info, Node: Directory Options *** 2521,2527 **** Options for Directory Search ============================ ! These options affect how the `cpp' preprocessor searches for files specified via the `#include' directive. Therefore, when compiling Fortran programs, they are meaningful when the preprocessor is used. --- 2523,2529 ---- Options for Directory Search ============================ ! These options affect how the `cpp' preprocessor searches for files specified via the `#include' directive. Therefore, when compiling Fortran programs, they are meaningful when the preprocessor is used. *************** File: g77.info, Node: Code Gen Options, *** 2552,2558 **** Options for Code Generation Conventions ======================================= ! These machine-independent options control the interface conventions used in code generation. Most of them have both positive and negative forms; the negative form --- 2554,2560 ---- Options for Code Generation Conventions ======================================= ! These machine-independent options control the interface conventions used in code generation. Most of them have both positive and negative forms; the negative form *************** File: g77.info, Node: Environment Varia *** 2892,2900 **** Environment Variables Affecting GNU Fortran =========================================== ! GNU Fortran currently does not make use of any environment variables ! to control its operation above and beyond those that affect the ! operation of `gcc'. *Note Environment Variables Affecting GCC: (gcc)Environment Variables, for information on environment variables. --- 2894,2902 ---- Environment Variables Affecting GNU Fortran =========================================== ! GNU Fortran currently does not make use of any environment variables to ! control its operation above and beyond those that affect the operation ! of `gcc'. *Note Environment Variables Affecting GCC: (gcc)Environment Variables, for information on environment variables. *************** clarify how they differ from other versi *** 2939,2945 **** getting a complete picture of what a particular `egcs' version contains somewhat more difficult. ! For information on bugs in the GCC-3.3.2 version of `g77', see *Note Known Bugs In GNU Fortran: Known Bugs. An online, "live" version of this document (derived directly from --- 2941,2947 ---- getting a complete picture of what a particular `egcs' version contains somewhat more difficult. ! For information on bugs in the GCC-3.3.3 version of `g77', see *Note Known Bugs In GNU Fortran: Known Bugs. An online, "live" version of this document (derived directly from *************** In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versu *** 3282,3289 **** In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 ! is the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. --- 3284,3291 ---- In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 is ! the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. *************** In 0.5.20: *** 4229,4235 **** In previous versions: ===================== ! Information on previous versions is archived in `gcc/gcc/f/news.texi' following the test of the `DOC-OLDNEWS' macro.  --- 4231,4237 ---- In previous versions: ===================== ! Information on previous versions is archived in `gcc/gcc/f/news.texi' following the test of the `DOC-OLDNEWS' macro.  *************** File: g77.info, Node: Changes, Next: L *** 4238,4244 **** User-visible Changes ******************** ! This chapter describes changes to `g77' that are visible to the programmers who actually write and maintain Fortran code they compile with `g77'. Information on changes to installation procedures, changes to the documentation, and bug fixes is not provided here, unless it is --- 4240,4246 ---- User-visible Changes ******************** ! This chapter describes changes to `g77' that are visible to the programmers who actually write and maintain Fortran code they compile with `g77'. Information on changes to installation procedures, changes to the documentation, and bug fixes is not provided here, unless it is *************** clarify how they differ from other versi *** 4256,4262 **** getting a complete picture of what a particular `egcs' version contains somewhat more difficult. ! For information on bugs in the GCC-3.3.2 version of `g77', see *Note Known Bugs In GNU Fortran: Known Bugs. The following information was last updated on 2003-05-18: --- 4258,4264 ---- getting a complete picture of what a particular `egcs' version contains somewhat more difficult. ! For information on bugs in the GCC-3.3.3 version of `g77', see *Note Known Bugs In GNU Fortran: Known Bugs. The following information was last updated on 2003-05-18: *************** In 0.5.25, `GCC' 2.95 (`EGCS' 1.2) versu *** 4508,4515 **** In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 ! is the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. --- 4510,4517 ---- In 0.5.24 versus 0.5.23: ======================== ! There is no `g77' version 0.5.24 at this time, or planned. 0.5.24 is ! the version number designated for bug fixes and, perhaps, some new features added, to 0.5.23. Version 0.5.23 requires `gcc' 2.8.1, as 0.5.24 was planned to require. *************** In 0.5.20: *** 4947,4953 **** In previous versions: ===================== ! Information on previous versions is archived in `gcc/gcc/f/news.texi' following the test of the `DOC-OLDNEWS' macro.  --- 4949,4955 ---- In previous versions: ===================== ! Information on previous versions is archived in `gcc/gcc/f/news.texi' following the test of the `DOC-OLDNEWS' macro.  *************** File: g77.info, Node: Language, Next: *** 4956,4964 **** The GNU Fortran Language ************************ ! GNU Fortran supports a variety of extensions to, and dialects of, ! the Fortran language. Its primary base is the ANSI FORTRAN 77 ! standard, currently available on the network at `http://www.fortran.com/fortran/F77_std/rjcnf0001.html' or as monolithic text at `http://www.fortran.com/fortran/F77_std/f77_std.html'. It offers some --- 4958,4966 ---- The GNU Fortran Language ************************ ! GNU Fortran supports a variety of extensions to, and dialects of, the ! Fortran language. Its primary base is the ANSI FORTRAN 77 standard, ! currently available on the network at `http://www.fortran.com/fortran/F77_std/rjcnf0001.html' or as monolithic text at `http://www.fortran.com/fortran/F77_std/f77_std.html'. It offers some *************** File: g77.info, Node: Direction of Lang *** 5015,5022 **** Direction of Language Development ================================= ! The purpose of the following description of the GNU Fortran language ! is to promote wide portability of GNU Fortran programs. GNU Fortran is an evolving language, due to the fact that `g77' itself is in beta test. Some current features of the language might --- 5017,5024 ---- Direction of Language Development ================================= ! The purpose of the following description of the GNU Fortran language is ! to promote wide portability of GNU Fortran programs. GNU Fortran is an evolving language, due to the fact that `g77' itself is in beta test. Some current features of the language might *************** File: g77.info, Node: Standard Support, *** 5141,5147 **** ANSI FORTRAN 77 Standard Support ================================ ! GNU Fortran supports ANSI FORTRAN 77 with the following caveats. In summary, the only ANSI FORTRAN 77 features `g77' doesn't support are those that are probably rarely used in actual code, some of which are explicitly disallowed by the Fortran 90 standard. --- 5143,5149 ---- ANSI FORTRAN 77 Standard Support ================================ ! GNU Fortran supports ANSI FORTRAN 77 with the following caveats. In summary, the only ANSI FORTRAN 77 features `g77' doesn't support are those that are probably rarely used in actual code, some of which are explicitly disallowed by the Fortran 90 standard. *************** File: g77.info, Node: No Passing Extern *** 5159,5167 **** No Passing External Assumed-length ---------------------------------- ! `g77' disallows passing of an external procedure as an actual ! argument if the procedure's type is declared `CHARACTER*(*)'. For ! example: CHARACTER*(*) CFUNC EXTERNAL CFUNC --- 5161,5168 ---- No Passing External Assumed-length ---------------------------------- ! `g77' disallows passing of an external procedure as an actual argument ! if the procedure's type is declared `CHARACTER*(*)'. For example: CHARACTER*(*) CFUNC EXTERNAL CFUNC *************** File: g77.info, Node: No Passing Dummy *** 5176,5183 **** No Passing Dummy Assumed-length ------------------------------- ! `g77' disallows passing of a dummy procedure as an actual argument ! if the procedure's type is declared `CHARACTER*(*)'. SUBROUTINE BAR(CFUNC) CHARACTER*(*) CFUNC --- 5177,5184 ---- No Passing Dummy Assumed-length ------------------------------- ! `g77' disallows passing of a dummy procedure as an actual argument if ! the procedure's type is declared `CHARACTER*(*)'. SUBROUTINE BAR(CFUNC) CHARACTER*(*) CFUNC *************** File: g77.info, Node: No Pathological I *** 5193,5202 **** No Pathological Implied-DO -------------------------- ! The `DO' variable for an implied-`DO' construct in a `DATA' ! statement may not be used as the `DO' variable for an outer ! implied-`DO' construct. For example, this fragment is disallowed by ! `g77': DATA ((A(I, I), I= 1, 10), I= 1, 10) /.../ --- 5194,5202 ---- No Pathological Implied-DO -------------------------- ! The `DO' variable for an implied-`DO' construct in a `DATA' statement ! may not be used as the `DO' variable for an outer implied-`DO' ! construct. For example, this fragment is disallowed by `g77': DATA ((A(I, I), I= 1, 10), I= 1, 10) /.../ *************** File: g77.info, Node: No Useless Implie *** 5212,5221 **** No Useless Implied-DO --------------------- ! An array element initializer in an implied-`DO' construct in a ! `DATA' statement must contain at least one reference to the `DO' ! variables of each outer implied-`DO' construct. For example, this ! fragment is disallowed by `g77': DATA (A, I= 1, 1) /1./ --- 5212,5221 ---- No Useless Implied-DO --------------------- ! An array element initializer in an implied-`DO' construct in a `DATA' ! statement must contain at least one reference to the `DO' variables of ! each outer implied-`DO' construct. For example, this fragment is ! disallowed by `g77': DATA (A, I= 1, 1) /1./ *************** File: g77.info, Node: Conformance, Nex *** 5232,5238 **** Conformance =========== ! (The following information augments or overrides the information in Section 1.4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 1 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 5232,5238 ---- Conformance =========== ! (The following information augments or overrides the information in Section 1.4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 1 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Notation Used, N *** 5284,5290 **** Notation Used in This Chapter ============================= ! (The following information augments or overrides the information in Section 1.5 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 1 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 5284,5290 ---- Notation Used in This Chapter ============================= ! (The following information augments or overrides the information in Section 1.5 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 1 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Terms and Concept *** 5378,5384 **** Fortran Terms and Concepts ========================== ! (The following information augments or overrides the information in Chapter 2 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 2 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 5378,5384 ---- Fortran Terms and Concepts ========================== ! (The following information augments or overrides the information in Chapter 2 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 2 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Syntactic Items, *** 5395,5401 **** Syntactic Items --------------- ! (Corresponds to Section 2.2 of ANSI X3.9-1978 FORTRAN 77.) In GNU Fortran, a symbolic name is at least one character long, and has no arbitrary upper limit on length. However, names of entities --- 5395,5401 ---- Syntactic Items --------------- ! (Corresponds to Section 2.2 of ANSI X3.9-1978 FORTRAN 77.) In GNU Fortran, a symbolic name is at least one character long, and has no arbitrary upper limit on length. However, names of entities *************** File: g77.info, Node: Statements Commen *** 5413,5419 **** Statements, Comments, and Lines ------------------------------- ! (Corresponds to Section 2.3 of ANSI X3.9-1978 FORTRAN 77.) Use of an exclamation point (`!') to begin a trailing comment (a comment that extends to the end of the same source line) is permitted --- 5413,5419 ---- Statements, Comments, and Lines ------------------------------- ! (Corresponds to Section 2.3 of ANSI X3.9-1978 FORTRAN 77.) Use of an exclamation point (`!') to begin a trailing comment (a comment that extends to the end of the same source line) is permitted *************** File: g77.info, Node: Scope of Names an *** 5462,5468 **** Scope of Symbolic Names and Statement Labels -------------------------------------------- ! (Corresponds to Section 2.9 of ANSI X3.9-1978 FORTRAN 77.) Included in the list of entities that have a scope of a program unit are construct names (a Fortran 90 feature). *Note Construct Names::, --- 5462,5468 ---- Scope of Symbolic Names and Statement Labels -------------------------------------------- ! (Corresponds to Section 2.9 of ANSI X3.9-1978 FORTRAN 77.) Included in the list of entities that have a scope of a program unit are construct names (a Fortran 90 feature). *Note Construct Names::, *************** File: g77.info, Node: Characters Lines *** 5474,5480 **** Characters, Lines, and Execution Sequence ========================================= ! (The following information augments or overrides the information in Chapter 3 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 3 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 5474,5480 ---- Characters, Lines, and Execution Sequence ========================================= ! (The following information augments or overrides the information in Chapter 3 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 3 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Character Set, N *** 5496,5502 **** GNU Fortran Character Set ------------------------- ! (Corresponds to Section 3.1 of ANSI X3.9-1978 FORTRAN 77.) Letters include uppercase letters (the twenty-six characters of the English alphabet) and lowercase letters (their lowercase equivalent). --- 5496,5502 ---- GNU Fortran Character Set ------------------------- ! (Corresponds to Section 3.1 of ANSI X3.9-1978 FORTRAN 77.) Letters include uppercase letters (the twenty-six characters of the English alphabet) and lowercase letters (their lowercase equivalent). *************** File: g77.info, Node: Lines, Next: Con *** 5539,5545 **** Lines ----- ! (Corresponds to Section 3.2 of ANSI X3.9-1978 FORTRAN 77.) The way a Fortran compiler views source files depends entirely on the implementation choices made for the compiler, since those choices are --- 5539,5545 ---- Lines ----- ! (Corresponds to Section 3.2 of ANSI X3.9-1978 FORTRAN 77.) The way a Fortran compiler views source files depends entirely on the implementation choices made for the compiler, since those choices are *************** File: g77.info, Node: Continuation Line *** 5599,5605 **** Continuation Line ----------------- ! (Corresponds to Section 3.2.3 of ANSI X3.9-1978 FORTRAN 77.) A continuation line is any line that both --- 5599,5605 ---- Continuation Line ----------------- ! (Corresponds to Section 3.2.3 of ANSI X3.9-1978 FORTRAN 77.) A continuation line is any line that both *************** File: g77.info, Node: Statements, Next *** 5626,5632 **** Statements ---------- ! (Corresponds to Section 3.3 of ANSI X3.9-1978 FORTRAN 77.) Statements may be written using an arbitrary number of continuation lines. --- 5626,5632 ---- Statements ---------- ! (Corresponds to Section 3.3 of ANSI X3.9-1978 FORTRAN 77.) Statements may be written using an arbitrary number of continuation lines. *************** File: g77.info, Node: Statement Labels, *** 5654,5660 **** Statement Labels ---------------- ! (Corresponds to Section 3.4 of ANSI X3.9-1978 FORTRAN 77.) A statement separated from its predecessor via a semicolon may be labeled as follows: --- 5654,5660 ---- Statement Labels ---------------- ! (Corresponds to Section 3.4 of ANSI X3.9-1978 FORTRAN 77.) A statement separated from its predecessor via a semicolon may be labeled as follows: *************** File: g77.info, Node: Order, Next: INC *** 5676,5682 **** Order of Statements and Lines ----------------------------- ! (Corresponds to Section 3.5 of ANSI X3.9-1978 FORTRAN 77.) Generally, `DATA' statements may precede executable statements. However, specification statements pertaining to any entities --- 5676,5682 ---- Order of Statements and Lines ----------------------------- ! (Corresponds to Section 3.5 of ANSI X3.9-1978 FORTRAN 77.) Generally, `DATA' statements may precede executable statements. However, specification statements pertaining to any entities *************** File: g77.info, Node: INCLUDE, Next: C *** 5700,5707 **** Including Source Text --------------------- ! Additional source text may be included in the processing of the ! source file via the `INCLUDE' directive: INCLUDE FILENAME --- 5700,5707 ---- Including Source Text --------------------- ! Additional source text may be included in the processing of the source ! file via the `INCLUDE' directive: INCLUDE FILENAME *************** File: g77.info, Node: Cpp-style directi *** 5769,5777 **** Cpp-style directives -------------------- ! `cpp' output-style `#' directives (*note C Preprocessor Output: ! (cpp)C Preprocessor Output.) are recognized by the compiler even when ! the preprocessor isn't run on the input (as it is when compiling `.F' files). (Note the distinction between these `cpp' `#' _output_ directives and `#line' _input_ directives.) --- 5769,5777 ---- Cpp-style directives -------------------- ! `cpp' output-style `#' directives (*note C Preprocessor Output: (cpp)C ! Preprocessor Output.) are recognized by the compiler even when the ! preprocessor isn't run on the input (as it is when compiling `.F' files). (Note the distinction between these `cpp' `#' _output_ directives and `#line' _input_ directives.) *************** File: g77.info, Node: Data Types and Co *** 5781,5787 **** Data Types and Constants ======================== ! (The following information augments or overrides the information in Chapter 4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 4 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 5781,5787 ---- Data Types and Constants ======================== ! (The following information augments or overrides the information in Chapter 4 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 4 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Types, Next: Con *** 5859,5865 **** Data Types ---------- ! (Corresponds to Section 4.1 of ANSI X3.9-1978 FORTRAN 77.) GNU Fortran supports these types: --- 5859,5865 ---- Data Types ---------- ! (Corresponds to Section 4.1 of ANSI X3.9-1978 FORTRAN 77.) GNU Fortran supports these types: *************** File: g77.info, Node: Double Notation, *** 5901,5908 **** Double Notation ............... ! The GNU Fortran language supports two uses of the keyword `DOUBLE' ! to specify a specific kind of type: * `DOUBLE PRECISION', equivalent to `REAL(KIND=2)' --- 5901,5908 ---- Double Notation ............... ! The GNU Fortran language supports two uses of the keyword `DOUBLE' to ! specify a specific kind of type: * `DOUBLE PRECISION', equivalent to `REAL(KIND=2)' *************** File: g77.info, Node: Star Notation, N *** 5930,5936 **** Star Notation ............. ! The following notation specifies the storage size for a type: GENERIC-TYPE*N --- 5930,5936 ---- Star Notation ............. ! The following notation specifies the storage size for a type: GENERIC-TYPE*N *************** File: g77.info, Node: Kind Notation, P *** 5996,6002 **** Kind Notation ............. ! The following notation specifies the kind-type selector of a type: GENERIC-TYPE(KIND=N) --- 5996,6002 ---- Kind Notation ............. ! The following notation specifies the kind-type selector of a type: GENERIC-TYPE(KIND=N) *************** File: g77.info, Node: Constants, Next: *** 6201,6207 **** Constants --------- ! (Corresponds to Section 4.2 of ANSI X3.9-1978 FORTRAN 77.) A "typeless constant" has one of the following forms: --- 6201,6207 ---- Constants --------- ! (Corresponds to Section 4.2 of ANSI X3.9-1978 FORTRAN 77.) A "typeless constant" has one of the following forms: *************** File: g77.info, Node: Integer Type, Ne *** 6240,6246 **** Integer Type ------------ ! (Corresponds to Section 4.3 of ANSI X3.9-1978 FORTRAN 77.) An integer constant also may have one of the following forms: --- 6240,6246 ---- Integer Type ------------ ! (Corresponds to Section 4.3 of ANSI X3.9-1978 FORTRAN 77.) An integer constant also may have one of the following forms: *************** File: g77.info, Node: Character Type, *** 6260,6266 **** Character Type -------------- ! (Corresponds to Section 4.8 of ANSI X3.9-1978 FORTRAN 77.) A character constant may be delimited by a pair of double quotes (`"') instead of apostrophes. In this case, an apostrophe within the --- 6260,6266 ---- Character Type -------------- ! (Corresponds to Section 4.8 of ANSI X3.9-1978 FORTRAN 77.) A character constant may be delimited by a pair of double quotes (`"') instead of apostrophes. In this case, an apostrophe within the *************** File: g77.info, Node: Expressions, Nex *** 6280,6286 **** Expressions =========== ! (The following information augments or overrides the information in Chapter 6 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 6 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 6280,6286 ---- Expressions =========== ! (The following information augments or overrides the information in Chapter 6 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 6 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Specification Sta *** 6351,6357 **** Specification Statements ======================== ! (The following information augments or overrides the information in Chapter 8 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 8 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 6351,6357 ---- Specification Statements ======================== ! (The following information augments or overrides the information in Chapter 8 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 8 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: NAMELIST, Next: *** 6367,6374 **** `NAMELIST' Statement -------------------- ! The `NAMELIST' statement, and related I/O constructs, are supported ! by the GNU Fortran language in essentially the same way as they are by `f2c'. This follows Fortran 90 with the restriction that on `NAMELIST' --- 6367,6374 ---- `NAMELIST' Statement -------------------- ! The `NAMELIST' statement, and related I/O constructs, are supported by ! the GNU Fortran language in essentially the same way as they are by `f2c'. This follows Fortran 90 with the restriction that on `NAMELIST' *************** File: g77.info, Node: DOUBLE COMPLEX, *** 6390,6397 **** `DOUBLE COMPLEX' Statement -------------------------- ! `DOUBLE COMPLEX' is a type-statement (and type) that specifies the ! type `COMPLEX(KIND=2)' in GNU Fortran.  File: g77.info, Node: Control Statements, Next: Functions and Subroutines, Prev: Specification Statements, Up: Language --- 6390,6397 ---- `DOUBLE COMPLEX' Statement -------------------------- ! `DOUBLE COMPLEX' is a type-statement (and type) that specifies the type ! `COMPLEX(KIND=2)' in GNU Fortran.  File: g77.info, Node: Control Statements, Next: Functions and Subroutines, Prev: Specification Statements, Up: Language *************** File: g77.info, Node: Control Statement *** 6399,6405 **** Control Statements ================== ! (The following information augments or overrides the information in Chapter 11 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 11 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 6399,6405 ---- Control Statements ================== ! (The following information augments or overrides the information in Chapter 11 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 11 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: DO WHILE, Next: *** 6417,6423 **** DO WHILE -------- ! The `DO WHILE' statement, a feature of both the MIL-STD 1753 and Fortran 90 standards, is provided by the GNU Fortran language. The Fortran 90 "do forever" statement comprising just `DO' is also supported. --- 6417,6423 ---- DO WHILE -------- ! The `DO WHILE' statement, a feature of both the MIL-STD 1753 and Fortran 90 standards, is provided by the GNU Fortran language. The Fortran 90 "do forever" statement comprising just `DO' is also supported. *************** File: g77.info, Node: END DO, Next: Co *** 6428,6434 **** END DO ------ ! The `END DO' statement is provided by the GNU Fortran language. This statement is used in one of two ways: --- 6428,6434 ---- END DO ------ ! The `END DO' statement is provided by the GNU Fortran language. This statement is used in one of two ways: *************** File: g77.info, Node: Construct Names, *** 6455,6461 **** Construct Names --------------- ! The GNU Fortran language supports construct names as defined by the Fortran 90 standard. These names are local to the program unit and are defined as follows: --- 6455,6461 ---- Construct Names --------------- ! The GNU Fortran language supports construct names as defined by the Fortran 90 standard. These names are local to the program unit and are defined as follows: *************** File: g77.info, Node: CYCLE and EXIT, *** 6478,6486 **** The `CYCLE' and `EXIT' Statements --------------------------------- ! The `CYCLE' and `EXIT' statements specify that the remaining ! statements in the current iteration of a particular active (enclosing) ! `DO' loop are to be skipped. `CYCLE' specifies that these statements are skipped, but the `END DO' statement that marks the end of the `DO' loop be executed--that is, --- 6478,6486 ---- The `CYCLE' and `EXIT' Statements --------------------------------- ! The `CYCLE' and `EXIT' statements specify that the remaining statements ! in the current iteration of a particular active (enclosing) `DO' loop ! are to be skipped. `CYCLE' specifies that these statements are skipped, but the `END DO' statement that marks the end of the `DO' loop be executed--that is, *************** File: g77.info, Node: Functions and Sub *** 6560,6566 **** Functions and Subroutines ========================= ! (The following information augments or overrides the information in Chapter 15 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 15 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 6560,6566 ---- Functions and Subroutines ========================= ! (The following information augments or overrides the information in Chapter 15 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 15 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Generics and Spec *** 6705,6711 **** Generics and Specifics ---------------------- ! The ANSI FORTRAN 77 language defines generic and specific intrinsics. In short, the distinctions are: * _Specific_ intrinsics have specific types for their arguments and --- 6705,6711 ---- Generics and Specifics ---------------------- ! The ANSI FORTRAN 77 language defines generic and specific intrinsics. In short, the distinctions are: * _Specific_ intrinsics have specific types for their arguments and *************** File: g77.info, Node: REAL() and AIMAG( *** 6898,6904 **** `REAL()' and `AIMAG()' of Complex --------------------------------- ! The GNU Fortran language disallows `REAL(EXPR)' and `AIMAG(EXPR)', where EXPR is any `COMPLEX' type other than `COMPLEX(KIND=1)', except when they are used in the following way: --- 6898,6904 ---- `REAL()' and `AIMAG()' of Complex --------------------------------- ! The GNU Fortran language disallows `REAL(EXPR)' and `AIMAG(EXPR)', where EXPR is any `COMPLEX' type other than `COMPLEX(KIND=1)', except when they are used in the following way: *************** File: g77.info, Node: CMPLX() of DOUBLE *** 6944,6950 **** `CMPLX()' of `DOUBLE PRECISION' ------------------------------- ! In accordance with Fortran 90 and at least some (perhaps all) other compilers, the GNU Fortran language defines `CMPLX()' as always returning a result that is type `COMPLEX(KIND=1)'. --- 6944,6950 ---- `CMPLX()' of `DOUBLE PRECISION' ------------------------------- ! In accordance with Fortran 90 and at least some (perhaps all) other compilers, the GNU Fortran language defines `CMPLX()' as always returning a result that is type `COMPLEX(KIND=1)'. *************** File: g77.info, Node: MIL-STD 1753, Ne *** 6987,6995 **** MIL-STD 1753 Support -------------------- ! The GNU Fortran language includes the MIL-STD 1753 intrinsics ! `BTEST', `IAND', `IBCLR', `IBITS', `IBSET', `IEOR', `IOR', `ISHFT', ! `ISHFTC', `MVBITS', and `NOT'.  File: g77.info, Node: f77/f2c Intrinsics, Next: Table of Intrinsic Functions, Prev: MIL-STD 1753, Up: Functions and Subroutines --- 6987,6995 ---- MIL-STD 1753 Support -------------------- ! The GNU Fortran language includes the MIL-STD 1753 intrinsics `BTEST', ! `IAND', `IBCLR', `IBITS', `IBSET', `IEOR', `IOR', `ISHFT', `ISHFTC', ! `MVBITS', and `NOT'.  File: g77.info, Node: f77/f2c Intrinsics, Next: Table of Intrinsic Functions, Prev: MIL-STD 1753, Up: Functions and Subroutines *************** File: g77.info, Node: f77/f2c Intrinsic *** 6997,7005 **** `f77'/`f2c' Intrinsics ---------------------- ! The bit-manipulation intrinsics supported by traditional `f77' and ! by `f2c' are available in the GNU Fortran language. These include ! `AND', `LSHIFT', `OR', `RSHIFT', and `XOR'. Also supported are the intrinsics `CDABS', `CDCOS', `CDEXP', `CDLOG', `CDSIN', `CDSQRT', `DCMPLX', `DCONJG', `DFLOAT', `DIMAG', --- 6997,7005 ---- `f77'/`f2c' Intrinsics ---------------------- ! The bit-manipulation intrinsics supported by traditional `f77' and by ! `f2c' are available in the GNU Fortran language. These include `AND', ! `LSHIFT', `OR', `RSHIFT', and `XOR'. Also supported are the intrinsics `CDABS', `CDCOS', `CDEXP', `CDLOG', `CDSIN', `CDSQRT', `DCMPLX', `DCONJG', `DFLOAT', `DIMAG', *************** File: g77.info, Node: Table of Intrinsi *** 7012,7018 **** Table of Intrinsic Functions ---------------------------- ! (Corresponds to Section 15.10 of ANSI X3.9-1978 FORTRAN 77.) The GNU Fortran language adds various functions, subroutines, types, and arguments to the set of intrinsic functions in ANSI FORTRAN 77. --- 7012,7018 ---- Table of Intrinsic Functions ---------------------------- ! (Corresponds to Section 15.10 of ANSI X3.9-1978 FORTRAN 77.) The GNU Fortran language adds various functions, subroutines, types, and arguments to the set of intrinsic functions in ANSI FORTRAN 77. *************** File: g77.info, Node: AdjustL Intrinsic *** 7628,7636 **** AdjustL Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AdjustL' to use this name for ! an external procedure.  File: g77.info, Node: AdjustR Intrinsic, Next: AImag Intrinsic, Prev: AdjustL Intrinsic, Up: Table of Intrinsic Functions --- 7628,7636 ---- AdjustL Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AdjustL' to use this name for an ! external procedure.  File: g77.info, Node: AdjustR Intrinsic, Next: AImag Intrinsic, Prev: AdjustL Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: AdjustR Intrinsic *** 7638,7646 **** AdjustR Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AdjustR' to use this name for ! an external procedure.  File: g77.info, Node: AImag Intrinsic, Next: AInt Intrinsic, Prev: AdjustR Intrinsic, Up: Table of Intrinsic Functions --- 7638,7646 ---- AdjustR Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AdjustR' to use this name for an ! external procedure.  File: g77.info, Node: AImag Intrinsic, Next: AInt Intrinsic, Prev: AdjustR Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: All Intrinsic, N *** 7728,7736 **** All Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL All' to use this name for an ! external procedure.  File: g77.info, Node: Allocated Intrinsic, Next: ALog Intrinsic, Prev: All Intrinsic, Up: Table of Intrinsic Functions --- 7728,7736 ---- All Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL All' to use this name for an external ! procedure.  File: g77.info, Node: Allocated Intrinsic, Next: ALog Intrinsic, Prev: All Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Allocated Intrins *** 7738,7746 **** Allocated Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Allocated' to use this name ! for an external procedure.  File: g77.info, Node: ALog Intrinsic, Next: ALog10 Intrinsic, Prev: Allocated Intrinsic, Up: Table of Intrinsic Functions --- 7738,7746 ---- Allocated Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Allocated' to use this name for an ! external procedure.  File: g77.info, Node: ALog Intrinsic, Next: ALog10 Intrinsic, Prev: Allocated Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Any Intrinsic, N *** 7937,7945 **** Any Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Any' to use this name for an ! external procedure.  File: g77.info, Node: ASin Intrinsic, Next: Associated Intrinsic, Prev: Any Intrinsic, Up: Table of Intrinsic Functions --- 7937,7945 ---- Any Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Any' to use this name for an external ! procedure.  File: g77.info, Node: ASin Intrinsic, Next: Associated Intrinsic, Prev: Any Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Associated Intrin *** 7968,7976 **** Associated Intrinsic .................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Associated' to use this name ! for an external procedure.  File: g77.info, Node: ATan Intrinsic, Next: ATan2 Intrinsic, Prev: Associated Intrinsic, Up: Table of Intrinsic Functions --- 7968,7976 ---- Associated Intrinsic .................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Associated' to use this name for an ! external procedure.  File: g77.info, Node: ATan Intrinsic, Next: ATan2 Intrinsic, Prev: Associated Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Ceiling Intrinsic *** 8239,8247 **** Ceiling Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Ceiling' to use this name for ! an external procedure.  File: g77.info, Node: CExp Intrinsic, Next: Char Intrinsic, Prev: Ceiling Intrinsic, Up: Table of Intrinsic Functions --- 8239,8247 ---- Ceiling Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Ceiling' to use this name for an ! external procedure.  File: g77.info, Node: CExp Intrinsic, Next: Char Intrinsic, Prev: Ceiling Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Count Intrinsic, *** 8532,8540 **** Count Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Count' to use this name for an ! external procedure.  File: g77.info, Node: CPU_Time Intrinsic, Next: CShift Intrinsic, Prev: Count Intrinsic, Up: Table of Intrinsic Functions --- 8532,8540 ---- Count Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Count' to use this name for an external ! procedure.  File: g77.info, Node: CPU_Time Intrinsic, Next: CShift Intrinsic, Prev: Count Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: CShift Intrinsic, *** 8566,8573 **** CShift Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL CShift' to use this name for an external procedure.  --- 8566,8573 ---- CShift Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL CShift' to use this name for an external procedure.  *************** File: g77.info, Node: Digits Intrinsic, *** 9072,9079 **** Digits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Digits' to use this name for an external procedure.  --- 9072,9079 ---- Digits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Digits' to use this name for an external procedure.  *************** File: g77.info, Node: Dot_Product Intri *** 9240,9248 **** Dot_Product Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Dot_Product' to use this name ! for an external procedure.  File: g77.info, Node: DProd Intrinsic, Next: DSign Intrinsic, Prev: Dot_Product Intrinsic, Up: Table of Intrinsic Functions --- 9240,9248 ---- Dot_Product Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Dot_Product' to use this name for an ! external procedure.  File: g77.info, Node: DProd Intrinsic, Next: DSign Intrinsic, Prev: Dot_Product Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: EOShift Intrinsic *** 9422,9430 **** EOShift Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL EOShift' to use this name for ! an external procedure.  File: g77.info, Node: Epsilon Intrinsic, Next: ErF Intrinsic, Prev: EOShift Intrinsic, Up: Table of Intrinsic Functions --- 9422,9430 ---- EOShift Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL EOShift' to use this name for an ! external procedure.  File: g77.info, Node: Epsilon Intrinsic, Next: ErF Intrinsic, Prev: EOShift Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Epsilon Intrinsic *** 9432,9440 **** Epsilon Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Epsilon' to use this name for ! an external procedure.  File: g77.info, Node: ErF Intrinsic, Next: ErFC Intrinsic, Prev: Epsilon Intrinsic, Up: Table of Intrinsic Functions --- 9432,9440 ---- Epsilon Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Epsilon' to use this name for an ! external procedure.  File: g77.info, Node: ErF Intrinsic, Next: ErFC Intrinsic, Prev: Epsilon Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Exponent Intrinsi *** 9587,9595 **** Exponent Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Exponent' to use this name for ! an external procedure.  File: g77.info, Node: FDate Intrinsic (subroutine), Next: FDate Intrinsic (function), Prev: Exponent Intrinsic, Up: Table of Intrinsic Functions --- 9587,9595 ---- Exponent Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Exponent' to use this name for an ! external procedure.  File: g77.info, Node: FDate Intrinsic (subroutine), Next: FDate Intrinsic (function), Prev: Exponent Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Floor Intrinsic, *** 9738,9746 **** Floor Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Floor' to use this name for an ! external procedure.  File: g77.info, Node: Flush Intrinsic, Next: FNum Intrinsic, Prev: Floor Intrinsic, Up: Table of Intrinsic Functions --- 9738,9746 ---- Floor Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Floor' to use this name for an external ! procedure.  File: g77.info, Node: Flush Intrinsic, Next: FNum Intrinsic, Prev: Floor Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Fraction Intrinsi *** 9846,9854 **** Fraction Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Fraction' to use this name for ! an external procedure.  File: g77.info, Node: FSeek Intrinsic, Next: FStat Intrinsic (subroutine), Prev: Fraction Intrinsic, Up: Table of Intrinsic Functions --- 9846,9854 ---- Fraction Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Fraction' to use this name for an ! external procedure.  File: g77.info, Node: FSeek Intrinsic, Next: FStat Intrinsic (subroutine), Prev: Fraction Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Huge Intrinsic, *** 10331,10339 **** Huge Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Huge' to use this name for an ! external procedure.  File: g77.info, Node: IAbs Intrinsic, Next: IAChar Intrinsic, Prev: Huge Intrinsic, Up: Table of Intrinsic Functions --- 10331,10339 ---- Huge Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Huge' to use this name for an external ! procedure.  File: g77.info, Node: IAbs Intrinsic, Next: IAChar Intrinsic, Prev: Huge Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Kind Intrinsic, *** 11052,11060 **** Kind Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Kind' to use this name for an ! external procedure.  File: g77.info, Node: LBound Intrinsic, Next: Len Intrinsic, Prev: Kind Intrinsic, Up: Table of Intrinsic Functions --- 11052,11060 ---- Kind Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Kind' to use this name for an external ! procedure.  File: g77.info, Node: LBound Intrinsic, Next: Len Intrinsic, Prev: Kind Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: LBound Intrinsic, *** 11062,11069 **** LBound Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL LBound' to use this name for an external procedure.  --- 11062,11069 ---- LBound Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL LBound' to use this name for an external procedure.  *************** File: g77.info, Node: Logical Intrinsic *** 11373,11381 **** Logical Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Logical' to use this name for ! an external procedure.  File: g77.info, Node: Long Intrinsic, Next: LShift Intrinsic, Prev: Logical Intrinsic, Up: Table of Intrinsic Functions --- 11373,11381 ---- Logical Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Logical' to use this name for an ! external procedure.  File: g77.info, Node: Long Intrinsic, Next: LShift Intrinsic, Prev: Logical Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: MatMul Intrinsic, *** 11612,11619 **** MatMul Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MatMul' to use this name for an external procedure.  --- 11612,11619 ---- MatMul Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MatMul' to use this name for an external procedure.  *************** File: g77.info, Node: MaxExponent Intri *** 11684,11692 **** MaxExponent Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MaxExponent' to use this name ! for an external procedure.  File: g77.info, Node: MaxLoc Intrinsic, Next: MaxVal Intrinsic, Prev: MaxExponent Intrinsic, Up: Table of Intrinsic Functions --- 11684,11692 ---- MaxExponent Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MaxExponent' to use this name for an ! external procedure.  File: g77.info, Node: MaxLoc Intrinsic, Next: MaxVal Intrinsic, Prev: MaxExponent Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: MaxLoc Intrinsic, *** 11694,11701 **** MaxLoc Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MaxLoc' to use this name for an external procedure.  --- 11694,11701 ---- MaxLoc Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MaxLoc' to use this name for an external procedure.  *************** File: g77.info, Node: MaxVal Intrinsic, *** 11704,11711 **** MaxVal Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MaxVal' to use this name for an external procedure.  --- 11704,11711 ---- MaxVal Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MaxVal' to use this name for an external procedure.  *************** File: g77.info, Node: Merge Intrinsic, *** 11776,11784 **** Merge Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Merge' to use this name for an ! external procedure.  File: g77.info, Node: Min Intrinsic, Next: Min0 Intrinsic, Prev: Merge Intrinsic, Up: Table of Intrinsic Functions --- 11776,11784 ---- Merge Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Merge' to use this name for an external ! procedure.  File: g77.info, Node: Min Intrinsic, Next: Min0 Intrinsic, Prev: Merge Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: MinExponent Intri *** 11848,11856 **** MinExponent Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MinExponent' to use this name ! for an external procedure.  File: g77.info, Node: MinLoc Intrinsic, Next: MinVal Intrinsic, Prev: MinExponent Intrinsic, Up: Table of Intrinsic Functions --- 11848,11856 ---- MinExponent Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MinExponent' to use this name for an ! external procedure.  File: g77.info, Node: MinLoc Intrinsic, Next: MinVal Intrinsic, Prev: MinExponent Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: MinLoc Intrinsic, *** 11858,11865 **** MinLoc Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MinLoc' to use this name for an external procedure.  --- 11858,11865 ---- MinLoc Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MinLoc' to use this name for an external procedure.  *************** File: g77.info, Node: MinVal Intrinsic, *** 11868,11875 **** MinVal Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL MinVal' to use this name for an external procedure.  --- 11868,11875 ---- MinVal Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL MinVal' to use this name for an external procedure.  *************** File: g77.info, Node: Modulo Intrinsic, *** 11903,11910 **** Modulo Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Modulo' to use this name for an external procedure.  --- 11903,11910 ---- Modulo Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Modulo' to use this name for an external procedure.  *************** File: g77.info, Node: Nearest Intrinsic *** 11943,11951 **** Nearest Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Nearest' to use this name for ! an external procedure.  File: g77.info, Node: NInt Intrinsic, Next: Not Intrinsic, Prev: Nearest Intrinsic, Up: Table of Intrinsic Functions --- 11943,11951 ---- Nearest Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Nearest' to use this name for an ! external procedure.  File: g77.info, Node: NInt Intrinsic, Next: Not Intrinsic, Prev: Nearest Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Pack Intrinsic, *** 12024,12032 **** Pack Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Pack' to use this name for an ! external procedure.  File: g77.info, Node: PError Intrinsic, Next: Precision Intrinsic, Prev: Pack Intrinsic, Up: Table of Intrinsic Functions --- 12024,12032 ---- Pack Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Pack' to use this name for an external ! procedure.  File: g77.info, Node: PError Intrinsic, Next: Precision Intrinsic, Prev: Pack Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Precision Intrins *** 12052,12060 **** Precision Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Precision' to use this name ! for an external procedure.  File: g77.info, Node: Present Intrinsic, Next: Product Intrinsic, Prev: Precision Intrinsic, Up: Table of Intrinsic Functions --- 12052,12060 ---- Precision Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Precision' to use this name for an ! external procedure.  File: g77.info, Node: Present Intrinsic, Next: Product Intrinsic, Prev: Precision Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Present Intrinsic *** 12062,12070 **** Present Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Present' to use this name for ! an external procedure.  File: g77.info, Node: Product Intrinsic, Next: Radix Intrinsic, Prev: Present Intrinsic, Up: Table of Intrinsic Functions --- 12062,12070 ---- Present Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Present' to use this name for an ! external procedure.  File: g77.info, Node: Product Intrinsic, Next: Radix Intrinsic, Prev: Present Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Product Intrinsic *** 12072,12080 **** Product Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Product' to use this name for ! an external procedure.  File: g77.info, Node: Radix Intrinsic, Next: Rand Intrinsic, Prev: Product Intrinsic, Up: Table of Intrinsic Functions --- 12072,12080 ---- Product Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Product' to use this name for an ! external procedure.  File: g77.info, Node: Radix Intrinsic, Next: Rand Intrinsic, Prev: Product Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Radix Intrinsic, *** 12082,12090 **** Radix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Radix' to use this name for an ! external procedure.  File: g77.info, Node: Rand Intrinsic, Next: Random_Number Intrinsic, Prev: Radix Intrinsic, Up: Table of Intrinsic Functions --- 12082,12090 ---- Radix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Radix' to use this name for an external ! procedure.  File: g77.info, Node: Rand Intrinsic, Next: Random_Number Intrinsic, Prev: Radix Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Random_Number Int *** 12121,12129 **** Random_Number Intrinsic ....................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Random_Number' to use this ! name for an external procedure.  File: g77.info, Node: Random_Seed Intrinsic, Next: Range Intrinsic, Prev: Random_Number Intrinsic, Up: Table of Intrinsic Functions --- 12121,12129 ---- Random_Number Intrinsic ....................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Random_Number' to use this name for an ! external procedure.  File: g77.info, Node: Random_Seed Intrinsic, Next: Range Intrinsic, Prev: Random_Number Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Random_Seed Intri *** 12131,12139 **** Random_Seed Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Random_Seed' to use this name ! for an external procedure.  File: g77.info, Node: Range Intrinsic, Next: Real Intrinsic, Prev: Random_Seed Intrinsic, Up: Table of Intrinsic Functions --- 12131,12139 ---- Random_Seed Intrinsic ..................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Random_Seed' to use this name for an ! external procedure.  File: g77.info, Node: Range Intrinsic, Next: Real Intrinsic, Prev: Random_Seed Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Range Intrinsic, *** 12141,12149 **** Range Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Range' to use this name for an ! external procedure.  File: g77.info, Node: Real Intrinsic, Next: RealPart Intrinsic, Prev: Range Intrinsic, Up: Table of Intrinsic Functions --- 12141,12149 ---- Range Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Range' to use this name for an external ! procedure.  File: g77.info, Node: Real Intrinsic, Next: RealPart Intrinsic, Prev: Range Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Repeat Intrinsic, *** 12247,12254 **** Repeat Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Repeat' to use this name for an external procedure.  --- 12247,12254 ---- Repeat Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Repeat' to use this name for an external procedure.  *************** File: g77.info, Node: Reshape Intrinsic *** 12257,12265 **** Reshape Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Reshape' to use this name for ! an external procedure.  File: g77.info, Node: RRSpacing Intrinsic, Next: RShift Intrinsic, Prev: Reshape Intrinsic, Up: Table of Intrinsic Functions --- 12257,12265 ---- Reshape Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Reshape' to use this name for an ! external procedure.  File: g77.info, Node: RRSpacing Intrinsic, Next: RShift Intrinsic, Prev: Reshape Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: RRSpacing Intrins *** 12267,12275 **** RRSpacing Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL RRSpacing' to use this name ! for an external procedure.  File: g77.info, Node: RShift Intrinsic, Next: Scale Intrinsic, Prev: RRSpacing Intrinsic, Up: Table of Intrinsic Functions --- 12267,12275 ---- RRSpacing Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL RRSpacing' to use this name for an ! external procedure.  File: g77.info, Node: RShift Intrinsic, Next: Scale Intrinsic, Prev: RRSpacing Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Scale Intrinsic, *** 12312,12320 **** Scale Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Scale' to use this name for an ! external procedure.  File: g77.info, Node: Scan Intrinsic, Next: Second Intrinsic (function), Prev: Scale Intrinsic, Up: Table of Intrinsic Functions --- 12312,12320 ---- Scale Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Scale' to use this name for an external ! procedure.  File: g77.info, Node: Scan Intrinsic, Next: Second Intrinsic (function), Prev: Scale Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Scan Intrinsic, *** 12322,12330 **** Scan Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Scan' to use this name for an ! external procedure.  File: g77.info, Node: Second Intrinsic (function), Next: Second Intrinsic (subroutine), Prev: Scan Intrinsic, Up: Table of Intrinsic Functions --- 12322,12330 ---- Scan Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Scan' to use this name for an external ! procedure.  File: g77.info, Node: Second Intrinsic (function), Next: Second Intrinsic (subroutine), Prev: Scan Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Selected_Int_Kind *** 12387,12395 **** Selected_Int_Kind Intrinsic ........................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Selected_Int_Kind' to use this ! name for an external procedure.  File: g77.info, Node: Selected_Real_Kind Intrinsic, Next: Set_Exponent Intrinsic, Prev: Selected_Int_Kind Intrinsic, Up: Table of Intrinsic Functions --- 12387,12395 ---- Selected_Int_Kind Intrinsic ........................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Selected_Int_Kind' to use this name for ! an external procedure.  File: g77.info, Node: Selected_Real_Kind Intrinsic, Next: Set_Exponent Intrinsic, Prev: Selected_Int_Kind Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Selected_Real_Kin *** 12397,12405 **** Selected_Real_Kind Intrinsic ............................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Selected_Real_Kind' to use ! this name for an external procedure.  File: g77.info, Node: Set_Exponent Intrinsic, Next: Shape Intrinsic, Prev: Selected_Real_Kind Intrinsic, Up: Table of Intrinsic Functions --- 12397,12405 ---- Selected_Real_Kind Intrinsic ............................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Selected_Real_Kind' to use this name ! for an external procedure.  File: g77.info, Node: Set_Exponent Intrinsic, Next: Shape Intrinsic, Prev: Selected_Real_Kind Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Set_Exponent Intr *** 12407,12415 **** Set_Exponent Intrinsic ...................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Set_Exponent' to use this name ! for an external procedure.  File: g77.info, Node: Shape Intrinsic, Next: Short Intrinsic, Prev: Set_Exponent Intrinsic, Up: Table of Intrinsic Functions --- 12407,12415 ---- Set_Exponent Intrinsic ...................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Set_Exponent' to use this name for an ! external procedure.  File: g77.info, Node: Shape Intrinsic, Next: Short Intrinsic, Prev: Set_Exponent Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Shape Intrinsic, *** 12417,12425 **** Shape Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Shape' to use this name for an ! external procedure.  File: g77.info, Node: Short Intrinsic, Next: Sign Intrinsic, Prev: Shape Intrinsic, Up: Table of Intrinsic Functions --- 12417,12425 ---- Shape Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Shape' to use this name for an external ! procedure.  File: g77.info, Node: Short Intrinsic, Next: Sign Intrinsic, Prev: Shape Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Spacing Intrinsic *** 12614,12622 **** Spacing Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Spacing' to use this name for ! an external procedure.  File: g77.info, Node: Spread Intrinsic, Next: SqRt Intrinsic, Prev: Spacing Intrinsic, Up: Table of Intrinsic Functions --- 12614,12622 ---- Spacing Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Spacing' to use this name for an ! external procedure.  File: g77.info, Node: Spread Intrinsic, Next: SqRt Intrinsic, Prev: Spacing Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Spread Intrinsic, *** 12624,12631 **** Spread Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Spread' to use this name for an external procedure.  --- 12624,12631 ---- Spread Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Spread' to use this name for an external procedure.  *************** File: g77.info, Node: Sum Intrinsic, N *** 12798,12806 **** Sum Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Sum' to use this name for an ! external procedure.  File: g77.info, Node: SymLnk Intrinsic (subroutine), Next: System Intrinsic (subroutine), Prev: Sum Intrinsic, Up: Table of Intrinsic Functions --- 12798,12806 ---- Sum Intrinsic ............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Sum' to use this name for an external ! procedure.  File: g77.info, Node: SymLnk Intrinsic (subroutine), Next: System Intrinsic (subroutine), Prev: Sum Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Tiny Intrinsic, *** 13001,13009 **** Tiny Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Tiny' to use this name for an ! external procedure.  File: g77.info, Node: Transfer Intrinsic, Next: Transpose Intrinsic, Prev: Tiny Intrinsic, Up: Table of Intrinsic Functions --- 13001,13009 ---- Tiny Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Tiny' to use this name for an external ! procedure.  File: g77.info, Node: Transfer Intrinsic, Next: Transpose Intrinsic, Prev: Tiny Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Transfer Intrinsi *** 13011,13019 **** Transfer Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Transfer' to use this name for ! an external procedure.  File: g77.info, Node: Transpose Intrinsic, Next: Trim Intrinsic, Prev: Transfer Intrinsic, Up: Table of Intrinsic Functions --- 13011,13019 ---- Transfer Intrinsic .................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Transfer' to use this name for an ! external procedure.  File: g77.info, Node: Transpose Intrinsic, Next: Trim Intrinsic, Prev: Transfer Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Transpose Intrins *** 13021,13029 **** Transpose Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Transpose' to use this name ! for an external procedure.  File: g77.info, Node: Trim Intrinsic, Next: TtyNam Intrinsic (subroutine), Prev: Transpose Intrinsic, Up: Table of Intrinsic Functions --- 13021,13029 ---- Transpose Intrinsic ................... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Transpose' to use this name for an ! external procedure.  File: g77.info, Node: Trim Intrinsic, Next: TtyNam Intrinsic (subroutine), Prev: Transpose Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: Trim Intrinsic, *** 13031,13039 **** Trim Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Trim' to use this name for an ! external procedure.  File: g77.info, Node: TtyNam Intrinsic (subroutine), Next: TtyNam Intrinsic (function), Prev: Trim Intrinsic, Up: Table of Intrinsic Functions --- 13031,13039 ---- Trim Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Trim' to use this name for an external ! procedure.  File: g77.info, Node: TtyNam Intrinsic (subroutine), Next: TtyNam Intrinsic (function), Prev: Trim Intrinsic, Up: Table of Intrinsic Functions *************** File: g77.info, Node: UBound Intrinsic, *** 13088,13095 **** UBound Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL UBound' to use this name for an external procedure.  --- 13088,13095 ---- UBound Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL UBound' to use this name for an external procedure.  *************** File: g77.info, Node: Unpack Intrinsic, *** 13151,13158 **** Unpack Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Unpack' to use this name for an external procedure.  --- 13151,13158 ---- Unpack Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Unpack' to use this name for an external procedure.  *************** File: g77.info, Node: Verify Intrinsic, *** 13161,13168 **** Verify Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL Verify' to use this name for an external procedure.  --- 13161,13168 ---- Verify Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL Verify' to use this name for an external procedure.  *************** File: g77.info, Node: Scope and Classes *** 13307,13313 **** Scope and Classes of Symbolic Names =================================== ! (The following information augments or overrides the information in Chapter 18 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 18 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) --- 13307,13313 ---- Scope and Classes of Symbolic Names =================================== ! (The following information augments or overrides the information in Chapter 18 of ANSI X3.9-1978 FORTRAN 77 in specifying the GNU Fortran language. Chapter 18 of that document otherwise serves as the basis for the relevant aspects of GNU Fortran.) *************** File: g77.info, Node: Underscores in Sy *** 13322,13328 **** Underscores in Symbol Names --------------------------- ! Underscores (`_') are accepted in symbol names after the first character (which must be a letter).  --- 13322,13328 ---- Underscores in Symbol Names --------------------------- ! Underscores (`_') are accepted in symbol names after the first character (which must be a letter).  *************** File: g77.info, Node: I/O, Next: Fortr *** 13331,13337 **** I/O === ! A dollar sign at the end of an output format specification suppresses the newline at the end of the output. Edit descriptors in `FORMAT' statements may contain compile-time --- 13331,13337 ---- I/O === ! A dollar sign at the end of an output format specification suppresses the newline at the end of the output. Edit descriptors in `FORMAT' statements may contain compile-time *************** File: g77.info, Node: Fortran 90 Featur *** 13354,13360 **** Fortran 90 Features =================== ! For convenience this section collects a list (probably incomplete) of the Fortran 90 features supported by the GNU Fortran language, even if they are documented elsewhere. *Note Characters, Lines, and Execution Sequence: Characters Lines Sequence, for information on additional --- 13354,13360 ---- Fortran 90 Features =================== ! For convenience this section collects a list (probably incomplete) of the Fortran 90 features supported by the GNU Fortran language, even if they are documented elsewhere. *Note Characters, Lines, and Execution Sequence: Characters Lines Sequence, for information on additional *************** File: g77.info, Node: Other Dialects, *** 13444,13452 **** Other Dialects ************** ! GNU Fortran supports a variety of features that are not considered ! part of the GNU Fortran language itself, but are representative of ! various dialects of Fortran that `g77' supports in whole or in part. Any of the features listed below might be disallowed by `g77' unless some command-line option is specified. Currently, some of the features --- 13444,13452 ---- Other Dialects ************** ! GNU Fortran supports a variety of features that are not considered part ! of the GNU Fortran language itself, but are representative of various ! dialects of Fortran that `g77' supports in whole or in part. Any of the features listed below might be disallowed by `g77' unless some command-line option is specified. Currently, some of the features *************** File: g77.info, Node: Source Form, Nex *** 13474,13481 **** Source Form =========== ! GNU Fortran accepts programs written in either fixed form or free ! form. Fixed form corresponds to ANSI FORTRAN 77 (plus popular extensions, such as allowing tabs) and Fortran 90's fixed form. --- 13474,13480 ---- Source Form =========== ! GNU Fortran accepts programs written in either fixed form or free form. Fixed form corresponds to ANSI FORTRAN 77 (plus popular extensions, such as allowing tabs) and Fortran 90's fixed form. *************** File: g77.info, Node: Carriage Returns, *** 13507,13516 **** Carriage Returns ---------------- ! Carriage returns (`\r') in source lines are ignored. This is ! somewhat different from `f2c', which seems to treat them as spaces ! outside character/Hollerith constants, and encodes them as `\r' inside ! such constants.  File: g77.info, Node: Tabs, Next: Short Lines, Prev: Carriage Returns, Up: Source Form --- 13506,13515 ---- Carriage Returns ---------------- ! Carriage returns (`\r') in source lines are ignored. This is somewhat ! different from `f2c', which seems to treat them as spaces outside ! character/Hollerith constants, and encodes them as `\r' inside such ! constants.  File: g77.info, Node: Tabs, Next: Short Lines, Prev: Carriage Returns, Up: Source Form *************** File: g77.info, Node: Tabs, Next: Shor *** 13518,13524 **** Tabs ---- ! A source line with a character anywhere in it is treated as entirely significant--however long it is--instead of ending in column 72 (for fixed-form source) or 132 (for free-form source). This also is different from `f2c', which encodes tabs as `\t' (the ASCII --- 13517,13523 ---- Tabs ---- ! A source line with a character anywhere in it is treated as entirely significant--however long it is--instead of ending in column 72 (for fixed-form source) or 132 (for free-form source). This also is different from `f2c', which encodes tabs as `\t' (the ASCII *************** File: g77.info, Node: Short Lines, Nex *** 13538,13546 **** Short Lines ----------- ! Source lines shorter than the applicable fixed-form length are ! treated as if they were padded with spaces to that length. (None of ! this is relevant to source files written in free form.) This affects only continued character and Hollerith constants, and is a different interpretation than provided by some other popular --- 13537,13545 ---- Short Lines ----------- ! Source lines shorter than the applicable fixed-form length are treated ! as if they were padded with spaces to that length. (None of this is ! relevant to source files written in free form.) This affects only continued character and Hollerith constants, and is a different interpretation than provided by some other popular *************** File: g77.info, Node: Long Lines, Next *** 13562,13568 **** Long Lines ---------- ! Source lines longer than the applicable length are truncated to that length. Currently, `g77' does not warn if the truncated characters are not spaces, to accommodate existing code written for systems that treated truncated text as commentary (especially in columns 73 through --- 13561,13567 ---- Long Lines ---------- ! Source lines longer than the applicable length are truncated to that length. Currently, `g77' does not warn if the truncated characters are not spaces, to accommodate existing code written for systems that treated truncated text as commentary (especially in columns 73 through *************** File: g77.info, Node: Ampersands, Prev *** 13578,13584 **** Ampersand Continuation Line --------------------------- ! A `&' in column 1 of fixed-form source denotes an arbitrary-length continuation line, imitating the behavior of `f2c'.  --- 13577,13583 ---- Ampersand Continuation Line --------------------------- ! A `&' in column 1 of fixed-form source denotes an arbitrary-length continuation line, imitating the behavior of `f2c'.  *************** File: g77.info, Node: Trailing Comment, *** 13587,13593 **** Trailing Comment ================ ! `g77' supports use of `/*' to start a trailing comment. In the GNU Fortran language, `!' is used for this purpose. `/*' is not in the GNU Fortran language because the use of `/*' in a --- 13586,13592 ---- Trailing Comment ================ ! `g77' supports use of `/*' to start a trailing comment. In the GNU Fortran language, `!' is used for this purpose. `/*' is not in the GNU Fortran language because the use of `/*' in a *************** File: g77.info, Node: Debug Line, Next *** 13606,13612 **** Debug Line ========== ! Use of `D' or `d' as the first character (column 1) of a source line denotes a debug line. In turn, a debug line is treated as either a comment line or a --- 13605,13611 ---- Debug Line ========== ! Use of `D' or `d' as the first character (column 1) of a source line denotes a debug line. In turn, a debug line is treated as either a comment line or a *************** File: g77.info, Node: Dollar Signs, Ne *** 13626,13632 **** Dollar Signs in Symbol Names ============================ ! Dollar signs (`$') are allowed in symbol names (after the first character) when the `-fdollar-ok' option is specified.  --- 13625,13631 ---- Dollar Signs in Symbol Names ============================ ! Dollar signs (`$') are allowed in symbol names (after the first character) when the `-fdollar-ok' option is specified.  *************** File: g77.info, Node: Case Sensitivity, *** 13635,13645 **** Case Sensitivity ================ ! GNU Fortran offers the programmer way too much flexibility in ! deciding how source files are to be treated vis-a-vis uppercase and ! lowercase characters. There are 66 useful settings that affect case ! sensitivity, plus 10 settings that are nearly useless, with the ! remaining 116 settings being either redundant or useless. None of these settings have any effect on the contents of comments (the text after a `c' or `C' in Column 1, for example) or of character --- 13634,13644 ---- Case Sensitivity ================ ! GNU Fortran offers the programmer way too much flexibility in deciding ! how source files are to be treated vis-a-vis uppercase and lowercase ! characters. There are 66 useful settings that affect case sensitivity, ! plus 10 settings that are nearly useless, with the remaining 116 ! settings being either redundant or useless. None of these settings have any effect on the contents of comments (the text after a `c' or `C' in Column 1, for example) or of character *************** File: g77.info, Node: VXT Fortran, Nex *** 13867,13874 **** VXT Fortran =========== ! `g77' supports certain constructs that have different meanings in ! VXT Fortran than they do in the GNU Fortran language. Generally, this manual uses the invented term VXT Fortran to refer VAX FORTRAN (circa v4). That compiler offered many popular features, --- 13866,13873 ---- VXT Fortran =========== ! `g77' supports certain constructs that have different meanings in VXT ! Fortran than they do in the GNU Fortran language. Generally, this manual uses the invented term VXT Fortran to refer VAX FORTRAN (circa v4). That compiler offered many popular features, *************** File: g77.info, Node: Double Quote Mean *** 13897,13903 **** Meaning of Double Quote ----------------------- ! `g77' treats double-quote (`"') as beginning an octal constant of `INTEGER(KIND=1)' type when the `-fvxt' option is specified. The form of this octal constant is --- 13896,13902 ---- Meaning of Double Quote ----------------------- ! `g77' treats double-quote (`"') as beginning an octal constant of `INTEGER(KIND=1)' type when the `-fvxt' option is specified. The form of this octal constant is *************** File: g77.info, Node: Exclamation Point *** 13927,13933 **** Meaning of Exclamation Point in Column 6 ---------------------------------------- ! `g77' treats an exclamation point (`!') in column 6 of a fixed-form source file as a continuation character rather than as the beginning of a comment (as it does in any other column) when the `-fvxt' option is specified. --- 13926,13932 ---- Meaning of Exclamation Point in Column 6 ---------------------------------------- ! `g77' treats an exclamation point (`!') in column 6 of a fixed-form source file as a continuation character rather than as the beginning of a comment (as it does in any other column) when the `-fvxt' option is specified. *************** File: g77.info, Node: Fortran 90, Next *** 13954,13961 **** Fortran 90 ========== ! The GNU Fortran language includes a number of features that are part ! of Fortran 90, even when the `-ff90' option is not specified. The features enabled by `-ff90' are intended to be those that, when `-ff90' is not specified, would have another meaning to `g77'--usually meaning something invalid in the GNU Fortran language. --- 13953,13960 ---- Fortran 90 ========== ! The GNU Fortran language includes a number of features that are part of ! Fortran 90, even when the `-ff90' option is not specified. The features enabled by `-ff90' are intended to be those that, when `-ff90' is not specified, would have another meaning to `g77'--usually meaning something invalid in the GNU Fortran language. *************** File: g77.info, Node: Pedantic Compilat *** 13980,13986 **** Pedantic Compilation ==================== ! The `-fpedantic' command-line option specifies that `g77' is to warn about code that is not standard-conforming. This is useful for finding some extensions `g77' accepts that other compilers might not accept. (Note that the `-pedantic' and `-pedantic-errors' options always imply --- 13979,13985 ---- Pedantic Compilation ==================== ! The `-fpedantic' command-line option specifies that `g77' is to warn about code that is not standard-conforming. This is useful for finding some extensions `g77' accepts that other compilers might not accept. (Note that the `-pedantic' and `-pedantic-errors' options always imply *************** File: g77.info, Node: Distensions, Pre *** 14102,14113 **** Distensions =========== ! The `-fugly-*' command-line options determine whether certain ! features supported by VAX FORTRAN and other such compilers, but ! considered too ugly to be in code that can be changed to use safer ! and/or more portable constructs, are accepted. These are humorously ! referred to as "distensions", extensions that just plain look ugly in ! the harsh light of day. * Menu: --- 14101,14112 ---- Distensions =========== ! The `-fugly-*' command-line options determine whether certain features ! supported by VAX FORTRAN and other such compilers, but considered too ! ugly to be in code that can be changed to use safer and/or more ! portable constructs, are accepted. These are humorously referred to as ! "distensions", extensions that just plain look ugly in the harsh light ! of day. * Menu: *************** File: g77.info, Node: Ugly Implicit Arg *** 14125,14131 **** Implicit Argument Conversion ---------------------------- ! The `-fno-ugly-args' option disables passing typeless and Hollerith constants as actual arguments in procedure invocations. For example: CALL FOO(4HABCD) --- 14124,14130 ---- Implicit Argument Conversion ---------------------------- ! The `-fno-ugly-args' option disables passing typeless and Hollerith constants as actual arguments in procedure invocations. For example: CALL FOO(4HABCD) *************** File: g77.info, Node: Ugly Assumed-Size *** 14142,14149 **** Ugly Assumed-Size Arrays ------------------------ ! The `-fugly-assumed' option enables the treatment of any array with ! a final dimension specified as `1' as an assumed-size array, as if `*' had been specified instead. For example, `DIMENSION X(1)' is treated as if it had read --- 14141,14148 ---- Ugly Assumed-Size Arrays ------------------------ ! The `-fugly-assumed' option enables the treatment of any array with a ! final dimension specified as `1' as an assumed-size array, as if `*' had been specified instead. For example, `DIMENSION X(1)' is treated as if it had read *************** File: g77.info, Node: Ugly Complex Part *** 14185,14191 **** Ugly Complex Part Extraction ---------------------------- ! The `-fugly-complex' option enables use of the `REAL()' and `AIMAG()' intrinsics with arguments that are `COMPLEX' types other than `COMPLEX(KIND=1)'. --- 14184,14190 ---- Ugly Complex Part Extraction ---------------------------- ! The `-fugly-complex' option enables use of the `REAL()' and `AIMAG()' intrinsics with arguments that are `COMPLEX' types other than `COMPLEX(KIND=1)'. *************** File: g77.info, Node: Ugly Null Argumen *** 14226,14232 **** Ugly Null Arguments ------------------- ! The `-fugly-comma' option enables use of a single trailing comma to mean "pass an extra trailing null argument" in a list of actual arguments to an external procedure, and use of an empty list of arguments to such a procedure to mean "pass a single null argument". --- 14225,14231 ---- Ugly Null Arguments ------------------- ! The `-fugly-comma' option enables use of a single trailing comma to mean "pass an extra trailing null argument" in a list of actual arguments to an external procedure, and use of an empty list of arguments to such a procedure to mean "pass a single null argument". *************** File: g77.info, Node: Ugly Conversion o *** 14263,14269 **** Ugly Conversion of Initializers ------------------------------- ! The constructs disabled by `-fno-ugly-init' are: * Use of Hollerith and typeless constants in contexts where they set initial (compile-time) values for variables, arrays, and named --- 14262,14268 ---- Ugly Conversion of Initializers ------------------------------- ! The constructs disabled by `-fno-ugly-init' are: * Use of Hollerith and typeless constants in contexts where they set initial (compile-time) values for variables, arrays, and named *************** File: g77.info, Node: Ugly Integer Conv *** 14310,14316 **** Ugly Integer Conversions ------------------------ ! The constructs enabled via `-fugly-logint' are: * Automatic conversion between `INTEGER' and `LOGICAL' as dictated by context (typically implies nonportable dependencies on how a --- 14309,14315 ---- Ugly Integer Conversions ------------------------ ! The constructs enabled via `-fugly-logint' are: * Automatic conversion between `INTEGER' and `LOGICAL' as dictated by context (typically implies nonportable dependencies on how a *************** File: g77.info, Node: Ugly Assigned Lab *** 14337,14343 **** Ugly Assigned Labels -------------------- ! The `-fugly-assign' option forces `g77' to use the same storage for assigned labels as it would for a normal assignment to the same variable. --- 14336,14342 ---- Ugly Assigned Labels -------------------- ! The `-fugly-assign' option forces `g77' to use the same storage for assigned labels as it would for a normal assignment to the same variable. *************** File: g77.info, Node: Compiler, Next: *** 14390,14397 **** The GNU Fortran Compiler ************************ ! The GNU Fortran compiler, `g77', supports programs written in the ! GNU Fortran language and in some other dialects of Fortran. Some aspects of how `g77' works are universal regardless of dialect, and yet are not properly part of the GNU Fortran language itself. --- 14389,14396 ---- The GNU Fortran Compiler ************************ ! The GNU Fortran compiler, `g77', supports programs written in the GNU ! Fortran language and in some other dialects of Fortran. Some aspects of how `g77' works are universal regardless of dialect, and yet are not properly part of the GNU Fortran language itself. *************** File: g77.info, Node: Compiler Limits, *** 14414,14422 **** Compiler Limits =============== ! `g77', as with GNU tools in general, imposes few arbitrary ! restrictions on lengths of identifiers, number of continuation lines, ! number of external symbols in a program, and so on. For example, some other Fortran compiler have an option (such as `-NlX') to increase the limit on the number of continuation lines. --- 14413,14421 ---- Compiler Limits =============== ! `g77', as with GNU tools in general, imposes few arbitrary restrictions ! on lengths of identifiers, number of continuation lines, number of ! external symbols in a program, and so on. For example, some other Fortran compiler have an option (such as `-NlX') to increase the limit on the number of continuation lines. *************** File: g77.info, Node: Run-time Environm *** 14436,14442 **** Run-time Environment Limits =========================== ! As a portable Fortran implementation, `g77' offers its users direct access to, and otherwise depends upon, the underlying facilities of the system used to build `g77', the system on which `g77' itself is used to compile programs, and the system on which the `g77'-compiled program is --- 14435,14441 ---- Run-time Environment Limits =========================== ! As a portable Fortran implementation, `g77' offers its users direct access to, and otherwise depends upon, the underlying facilities of the system used to build `g77', the system on which `g77' itself is used to compile programs, and the system on which the `g77'-compiled program is *************** File: g77.info, Node: Timer Wraparounds *** 14484,14490 **** Timer Wraparounds ----------------- ! Intrinsics that return values computed from system timers, whether elapsed (wall-clock) timers, process CPU timers, or other kinds of timers, are prone to experiencing wrap-around errors (or returning wrapped-around values from successive calls) due to insufficient ranges --- 14483,14489 ---- Timer Wraparounds ----------------- ! Intrinsics that return values computed from system timers, whether elapsed (wall-clock) timers, process CPU timers, or other kinds of timers, are prone to experiencing wrap-around errors (or returning wrapped-around values from successive calls) due to insufficient ranges *************** File: g77.info, Node: Year 2000 (Y2K) P *** 14511,14517 **** Year 2000 (Y2K) Problems ------------------------ ! While the `g77' compiler itself is believed to be Year-2000 (Y2K) compliant, some intrinsics are not, and, potentially, some underlying systems are not, perhaps rendering some Y2K-compliant intrinsics non-compliant when used on those particular systems. --- 14510,14516 ---- Year 2000 (Y2K) Problems ------------------------ ! While the `g77' compiler itself is believed to be Year-2000 (Y2K) compliant, some intrinsics are not, and, potentially, some underlying systems are not, perhaps rendering some Y2K-compliant intrinsics non-compliant when used on those particular systems. *************** File: g77.info, Node: Array Size, Next *** 14607,14613 **** Array Size ---------- ! Currently, `g77' uses the default `INTEGER' type for array indexes, which limits the sizes of single-dimension arrays on systems offering a larger address space than can be addressed by that type. (That `g77' puts all arrays in memory could be considered another limitation--it --- 14606,14612 ---- Array Size ---------- ! Currently, `g77' uses the default `INTEGER' type for array indexes, which limits the sizes of single-dimension arrays on systems offering a larger address space than can be addressed by that type. (That `g77' puts all arrays in memory could be considered another limitation--it *************** File: g77.info, Node: Character-variabl *** 14633,14639 **** Character-variable Length ------------------------- ! Currently, `g77' uses the default `INTEGER' type for the lengths of `CHARACTER' variables and array elements. This means that, for example, a system with a 64-bit address space --- 14632,14638 ---- Character-variable Length ------------------------- ! Currently, `g77' uses the default `INTEGER' type for the lengths of `CHARACTER' variables and array elements. This means that, for example, a system with a 64-bit address space *************** File: g77.info, Node: Year 10000 (Y10K) *** 14646,14652 **** Year 10000 (Y10K) Problems -------------------------- ! Most intrinsics returning, or computing values based on, date information are prone to Year-10000 (Y10K) problems, due to supporting only 4 digits for the year. --- 14645,14651 ---- Year 10000 (Y10K) Problems -------------------------- ! Most intrinsics returning, or computing values based on, date information are prone to Year-10000 (Y10K) problems, due to supporting only 4 digits for the year. *************** File: g77.info, Node: Compiler Types, *** 14660,14672 **** Compiler Types ============== ! Fortran implementations have a fair amount of freedom given them by ! the standard as far as how much storage space is used and how much ! precision and range is offered by the various types such as ! `LOGICAL(KIND=1)', `INTEGER(KIND=1)', `REAL(KIND=1)', `REAL(KIND=2)', ! `COMPLEX(KIND=1)', and `CHARACTER'. Further, many compilers offer ! so-called `*N' notation, but the interpretation of N varies across ! compilers and target architectures. The standard requires that `LOGICAL(KIND=1)', `INTEGER(KIND=1)', and `REAL(KIND=1)' occupy the same amount of storage space, and that --- 14659,14671 ---- Compiler Types ============== ! Fortran implementations have a fair amount of freedom given them by the ! standard as far as how much storage space is used and how much precision ! and range is offered by the various types such as `LOGICAL(KIND=1)', ! `INTEGER(KIND=1)', `REAL(KIND=1)', `REAL(KIND=2)', `COMPLEX(KIND=1)', ! and `CHARACTER'. Further, many compilers offer so-called `*N' ! notation, but the interpretation of N varies across compilers and ! target architectures. The standard requires that `LOGICAL(KIND=1)', `INTEGER(KIND=1)', and `REAL(KIND=1)' occupy the same amount of storage space, and that *************** File: g77.info, Node: Compiler Constant *** 14777,14783 **** Compiler Constants ================== ! `g77' strictly assigns types to _all_ constants not documented as "typeless" (typeless constants including `'1'Z', for example). Many other Fortran compilers attempt to assign types to typed constants based on their context. This results in hard-to-find bugs, nonportable --- 14776,14782 ---- Compiler Constants ================== ! `g77' strictly assigns types to _all_ constants not documented as "typeless" (typeless constants including `'1'Z', for example). Many other Fortran compilers attempt to assign types to typed constants based on their context. This results in hard-to-find bugs, nonportable *************** File: g77.info, Node: Compiler Intrinsi *** 14798,14805 **** Compiler Intrinsics =================== ! `g77' offers an ever-widening set of intrinsics. Currently these ! all are procedures (functions and subroutines). Some of these intrinsics are unimplemented, but their names reserved to reduce future problems with existing code as they are implemented. --- 14797,14804 ---- Compiler Intrinsics =================== ! `g77' offers an ever-widening set of intrinsics. Currently these all ! are procedures (functions and subroutines). Some of these intrinsics are unimplemented, but their names reserved to reduce future problems with existing code as they are implemented. *************** File: g77.info, Node: Intrinsic Groups, *** 14823,14831 **** Intrinsic Groups ---------------- ! A given specific intrinsic belongs in one or more groups. Each ! group is deleted, disabled, hidden, or enabled by default or a ! command-line option. The meaning of each term follows. Deleted No intrinsics are recognized as belonging to that group. --- 14822,14830 ---- Intrinsic Groups ---------------- ! A given specific intrinsic belongs in one or more groups. Each group ! is deleted, disabled, hidden, or enabled by default or a command-line ! option. The meaning of each term follows. Deleted No intrinsics are recognized as belonging to that group. *************** File: g77.info, Node: Other Intrinsics, *** 14915,14922 **** Other Intrinsics ---------------- ! `g77' supports intrinsics other than those in the GNU Fortran ! language proper. This set of intrinsics is described below. (Note that the empty lines appearing in the menu below are not intentional--they result from a bug in the `makeinfo' program.) --- 14914,14921 ---- Other Intrinsics ---------------- ! `g77' supports intrinsics other than those in the GNU Fortran language ! proper. This set of intrinsics is described below. (Note that the empty lines appearing in the menu below are not intentional--they result from a bug in the `makeinfo' program.) *************** File: g77.info, Node: ACosD Intrinsic, *** 15116,15124 **** ACosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL ACosD' to use this name for an ! external procedure.  File: g77.info, Node: AIMax0 Intrinsic, Next: AIMin0 Intrinsic, Prev: ACosD Intrinsic, Up: Other Intrinsics --- 15115,15123 ---- ACosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL ACosD' to use this name for an external ! procedure.  File: g77.info, Node: AIMax0 Intrinsic, Next: AIMin0 Intrinsic, Prev: ACosD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: AIMax0 Intrinsic, *** 15126,15133 **** AIMax0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AIMax0' to use this name for an external procedure.  --- 15125,15132 ---- AIMax0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AIMax0' to use this name for an external procedure.  *************** File: g77.info, Node: AIMin0 Intrinsic, *** 15136,15143 **** AIMin0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AIMin0' to use this name for an external procedure.  --- 15135,15142 ---- AIMin0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AIMin0' to use this name for an external procedure.  *************** File: g77.info, Node: AJMax0 Intrinsic, *** 15146,15153 **** AJMax0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AJMax0' to use this name for an external procedure.  --- 15145,15152 ---- AJMax0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AJMax0' to use this name for an external procedure.  *************** File: g77.info, Node: AJMin0 Intrinsic, *** 15156,15163 **** AJMin0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL AJMin0' to use this name for an external procedure.  --- 15155,15162 ---- AJMin0 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL AJMin0' to use this name for an external procedure.  *************** File: g77.info, Node: ASinD Intrinsic, *** 15166,15174 **** ASinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL ASinD' to use this name for an ! external procedure.  File: g77.info, Node: ATan2D Intrinsic, Next: ATanD Intrinsic, Prev: ASinD Intrinsic, Up: Other Intrinsics --- 15165,15173 ---- ASinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL ASinD' to use this name for an external ! procedure.  File: g77.info, Node: ATan2D Intrinsic, Next: ATanD Intrinsic, Prev: ASinD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: ATan2D Intrinsic, *** 15176,15183 **** ATan2D Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL ATan2D' to use this name for an external procedure.  --- 15175,15182 ---- ATan2D Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL ATan2D' to use this name for an external procedure.  *************** File: g77.info, Node: ATanD Intrinsic, *** 15186,15194 **** ATanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL ATanD' to use this name for an ! external procedure.  File: g77.info, Node: BITest Intrinsic, Next: BJTest Intrinsic, Prev: ATanD Intrinsic, Up: Other Intrinsics --- 15185,15193 ---- ATanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL ATanD' to use this name for an external ! procedure.  File: g77.info, Node: BITest Intrinsic, Next: BJTest Intrinsic, Prev: ATanD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: BITest Intrinsic, *** 15196,15203 **** BITest Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL BITest' to use this name for an external procedure.  --- 15195,15202 ---- BITest Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL BITest' to use this name for an external procedure.  *************** File: g77.info, Node: BJTest Intrinsic, *** 15206,15213 **** BJTest Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL BJTest' to use this name for an external procedure.  --- 15205,15212 ---- BJTest Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL BJTest' to use this name for an external procedure.  *************** File: g77.info, Node: CosD Intrinsic, *** 15395,15403 **** CosD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL CosD' to use this name for an ! external procedure.  File: g77.info, Node: DACosD Intrinsic, Next: DASinD Intrinsic, Prev: CosD Intrinsic, Up: Other Intrinsics --- 15394,15402 ---- CosD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL CosD' to use this name for an external ! procedure.  File: g77.info, Node: DACosD Intrinsic, Next: DASinD Intrinsic, Prev: CosD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: DACosD Intrinsic, *** 15405,15412 **** DACosD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DACosD' to use this name for an external procedure.  --- 15404,15411 ---- DACosD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DACosD' to use this name for an external procedure.  *************** File: g77.info, Node: DASinD Intrinsic, *** 15415,15422 **** DASinD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DASinD' to use this name for an external procedure.  --- 15414,15421 ---- DASinD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DASinD' to use this name for an external procedure.  *************** File: g77.info, Node: DATan2D Intrinsic *** 15425,15433 **** DATan2D Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DATan2D' to use this name for ! an external procedure.  File: g77.info, Node: DATanD Intrinsic, Next: Date Intrinsic, Prev: DATan2D Intrinsic, Up: Other Intrinsics --- 15424,15432 ---- DATan2D Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DATan2D' to use this name for an ! external procedure.  File: g77.info, Node: DATanD Intrinsic, Next: Date Intrinsic, Prev: DATan2D Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: DATanD Intrinsic, *** 15435,15442 **** DATanD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DATanD' to use this name for an external procedure.  --- 15434,15441 ---- DATanD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DATanD' to use this name for an external procedure.  *************** File: g77.info, Node: DbleQ Intrinsic, *** 15468,15476 **** DbleQ Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DbleQ' to use this name for an ! external procedure.  File: g77.info, Node: DCmplx Intrinsic, Next: DConjg Intrinsic, Prev: DbleQ Intrinsic, Up: Other Intrinsics --- 15467,15475 ---- DbleQ Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DbleQ' to use this name for an external ! procedure.  File: g77.info, Node: DCmplx Intrinsic, Next: DConjg Intrinsic, Prev: DbleQ Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: DCosD Intrinsic, *** 15540,15548 **** DCosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DCosD' to use this name for an ! external procedure.  File: g77.info, Node: DFloat Intrinsic, Next: DFlotI Intrinsic, Prev: DCosD Intrinsic, Up: Other Intrinsics --- 15539,15547 ---- DCosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DCosD' to use this name for an external ! procedure.  File: g77.info, Node: DFloat Intrinsic, Next: DFlotI Intrinsic, Prev: DCosD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: DFlotI Intrinsic, *** 15569,15576 **** DFlotI Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DFlotI' to use this name for an external procedure.  --- 15568,15575 ---- DFlotI Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DFlotI' to use this name for an external procedure.  *************** File: g77.info, Node: DFlotJ Intrinsic, *** 15579,15586 **** DFlotJ Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DFlotJ' to use this name for an external procedure.  --- 15578,15585 ---- DFlotJ Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DFlotJ' to use this name for an external procedure.  *************** File: g77.info, Node: DSinD Intrinsic, *** 15645,15653 **** DSinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DSinD' to use this name for an ! external procedure.  File: g77.info, Node: DTanD Intrinsic, Next: DTime Intrinsic (function), Prev: DSinD Intrinsic, Up: Other Intrinsics --- 15644,15652 ---- DSinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DSinD' to use this name for an external ! procedure.  File: g77.info, Node: DTanD Intrinsic, Next: DTime Intrinsic (function), Prev: DSinD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: DTanD Intrinsic, *** 15655,15663 **** DTanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL DTanD' to use this name for an ! external procedure.  File: g77.info, Node: DTime Intrinsic (function), Next: FGet Intrinsic (function), Prev: DTanD Intrinsic, Up: Other Intrinsics --- 15654,15662 ---- DTanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL DTanD' to use this name for an external ! procedure.  File: g77.info, Node: DTime Intrinsic (function), Next: FGet Intrinsic (function), Prev: DTanD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: FloatI Intrinsic, *** 15759,15766 **** FloatI Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL FloatI' to use this name for an external procedure.  --- 15758,15765 ---- FloatI Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL FloatI' to use this name for an external procedure.  *************** File: g77.info, Node: FloatJ Intrinsic, *** 15769,15776 **** FloatJ Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL FloatJ' to use this name for an external procedure.  --- 15768,15775 ---- FloatJ Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL FloatJ' to use this name for an external procedure.  *************** File: g77.info, Node: IIAbs Intrinsic, *** 15870,15878 **** IIAbs Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIAbs' to use this name for an ! external procedure.  File: g77.info, Node: IIAnd Intrinsic, Next: IIBClr Intrinsic, Prev: IIAbs Intrinsic, Up: Other Intrinsics --- 15869,15877 ---- IIAbs Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIAbs' to use this name for an external ! procedure.  File: g77.info, Node: IIAnd Intrinsic, Next: IIBClr Intrinsic, Prev: IIAbs Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIAnd Intrinsic, *** 15880,15888 **** IIAnd Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIAnd' to use this name for an ! external procedure.  File: g77.info, Node: IIBClr Intrinsic, Next: IIBits Intrinsic, Prev: IIAnd Intrinsic, Up: Other Intrinsics --- 15879,15887 ---- IIAnd Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIAnd' to use this name for an external ! procedure.  File: g77.info, Node: IIBClr Intrinsic, Next: IIBits Intrinsic, Prev: IIAnd Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIBClr Intrinsic, *** 15890,15897 **** IIBClr Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIBClr' to use this name for an external procedure.  --- 15889,15896 ---- IIBClr Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIBClr' to use this name for an external procedure.  *************** File: g77.info, Node: IIBits Intrinsic, *** 15900,15907 **** IIBits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIBits' to use this name for an external procedure.  --- 15899,15906 ---- IIBits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIBits' to use this name for an external procedure.  *************** File: g77.info, Node: IIBSet Intrinsic, *** 15910,15917 **** IIBSet Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIBSet' to use this name for an external procedure.  --- 15909,15916 ---- IIBSet Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIBSet' to use this name for an external procedure.  *************** File: g77.info, Node: IIDiM Intrinsic, *** 15920,15928 **** IIDiM Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIDiM' to use this name for an ! external procedure.  File: g77.info, Node: IIDInt Intrinsic, Next: IIDNnt Intrinsic, Prev: IIDiM Intrinsic, Up: Other Intrinsics --- 15919,15927 ---- IIDiM Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIDiM' to use this name for an external ! procedure.  File: g77.info, Node: IIDInt Intrinsic, Next: IIDNnt Intrinsic, Prev: IIDiM Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIDInt Intrinsic, *** 15930,15937 **** IIDInt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIDInt' to use this name for an external procedure.  --- 15929,15936 ---- IIDInt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIDInt' to use this name for an external procedure.  *************** File: g77.info, Node: IIDNnt Intrinsic, *** 15940,15947 **** IIDNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIDNnt' to use this name for an external procedure.  --- 15939,15946 ---- IIDNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIDNnt' to use this name for an external procedure.  *************** File: g77.info, Node: IIEOr Intrinsic, *** 15950,15958 **** IIEOr Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIEOr' to use this name for an ! external procedure.  File: g77.info, Node: IIFix Intrinsic, Next: IInt Intrinsic, Prev: IIEOr Intrinsic, Up: Other Intrinsics --- 15949,15957 ---- IIEOr Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIEOr' to use this name for an external ! procedure.  File: g77.info, Node: IIFix Intrinsic, Next: IInt Intrinsic, Prev: IIEOr Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIFix Intrinsic, *** 15960,15968 **** IIFix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIFix' to use this name for an ! external procedure.  File: g77.info, Node: IInt Intrinsic, Next: IIOr Intrinsic, Prev: IIFix Intrinsic, Up: Other Intrinsics --- 15959,15967 ---- IIFix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIFix' to use this name for an external ! procedure.  File: g77.info, Node: IInt Intrinsic, Next: IIOr Intrinsic, Prev: IIFix Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IInt Intrinsic, *** 15970,15978 **** IInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IInt' to use this name for an ! external procedure.  File: g77.info, Node: IIOr Intrinsic, Next: IIQint Intrinsic, Prev: IInt Intrinsic, Up: Other Intrinsics --- 15969,15977 ---- IInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IInt' to use this name for an external ! procedure.  File: g77.info, Node: IIOr Intrinsic, Next: IIQint Intrinsic, Prev: IInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIOr Intrinsic, *** 15980,15988 **** IIOr Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIOr' to use this name for an ! external procedure.  File: g77.info, Node: IIQint Intrinsic, Next: IIQNnt Intrinsic, Prev: IIOr Intrinsic, Up: Other Intrinsics --- 15979,15987 ---- IIOr Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIOr' to use this name for an external ! procedure.  File: g77.info, Node: IIQint Intrinsic, Next: IIQNnt Intrinsic, Prev: IIOr Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IIQint Intrinsic, *** 15990,15997 **** IIQint Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIQint' to use this name for an external procedure.  --- 15989,15996 ---- IIQint Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIQint' to use this name for an external procedure.  *************** File: g77.info, Node: IIQNnt Intrinsic, *** 16000,16007 **** IIQNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIQNnt' to use this name for an external procedure.  --- 15999,16006 ---- IIQNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIQNnt' to use this name for an external procedure.  *************** File: g77.info, Node: IIShftC Intrinsic *** 16010,16018 **** IIShftC Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IIShftC' to use this name for ! an external procedure.  File: g77.info, Node: IISign Intrinsic, Next: IMax0 Intrinsic, Prev: IIShftC Intrinsic, Up: Other Intrinsics --- 16009,16017 ---- IIShftC Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IIShftC' to use this name for an ! external procedure.  File: g77.info, Node: IISign Intrinsic, Next: IMax0 Intrinsic, Prev: IIShftC Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IISign Intrinsic, *** 16020,16027 **** IISign Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IISign' to use this name for an external procedure.  --- 16019,16026 ---- IISign Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IISign' to use this name for an external procedure.  *************** File: g77.info, Node: IMax0 Intrinsic, *** 16030,16038 **** IMax0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IMax0' to use this name for an ! external procedure.  File: g77.info, Node: IMax1 Intrinsic, Next: IMin0 Intrinsic, Prev: IMax0 Intrinsic, Up: Other Intrinsics --- 16029,16037 ---- IMax0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IMax0' to use this name for an external ! procedure.  File: g77.info, Node: IMax1 Intrinsic, Next: IMin0 Intrinsic, Prev: IMax0 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IMax1 Intrinsic, *** 16040,16048 **** IMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IMax1' to use this name for an ! external procedure.  File: g77.info, Node: IMin0 Intrinsic, Next: IMin1 Intrinsic, Prev: IMax1 Intrinsic, Up: Other Intrinsics --- 16039,16047 ---- IMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IMax1' to use this name for an external ! procedure.  File: g77.info, Node: IMin0 Intrinsic, Next: IMin1 Intrinsic, Prev: IMax1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IMin0 Intrinsic, *** 16050,16058 **** IMin0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IMin0' to use this name for an ! external procedure.  File: g77.info, Node: IMin1 Intrinsic, Next: IMod Intrinsic, Prev: IMin0 Intrinsic, Up: Other Intrinsics --- 16049,16057 ---- IMin0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IMin0' to use this name for an external ! procedure.  File: g77.info, Node: IMin1 Intrinsic, Next: IMod Intrinsic, Prev: IMin0 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IMin1 Intrinsic, *** 16060,16068 **** IMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IMin1' to use this name for an ! external procedure.  File: g77.info, Node: IMod Intrinsic, Next: INInt Intrinsic, Prev: IMin1 Intrinsic, Up: Other Intrinsics --- 16059,16067 ---- IMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IMin1' to use this name for an external ! procedure.  File: g77.info, Node: IMod Intrinsic, Next: INInt Intrinsic, Prev: IMin1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IMod Intrinsic, *** 16070,16078 **** IMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IMod' to use this name for an ! external procedure.  File: g77.info, Node: INInt Intrinsic, Next: INot Intrinsic, Prev: IMod Intrinsic, Up: Other Intrinsics --- 16069,16077 ---- IMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IMod' to use this name for an external ! procedure.  File: g77.info, Node: INInt Intrinsic, Next: INot Intrinsic, Prev: IMod Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: INInt Intrinsic, *** 16080,16088 **** INInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL INInt' to use this name for an ! external procedure.  File: g77.info, Node: INot Intrinsic, Next: IZExt Intrinsic, Prev: INInt Intrinsic, Up: Other Intrinsics --- 16079,16087 ---- INInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL INInt' to use this name for an external ! procedure.  File: g77.info, Node: INot Intrinsic, Next: IZExt Intrinsic, Prev: INInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: INot Intrinsic, *** 16090,16098 **** INot Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL INot' to use this name for an ! external procedure.  File: g77.info, Node: IZExt Intrinsic, Next: JIAbs Intrinsic, Prev: INot Intrinsic, Up: Other Intrinsics --- 16089,16097 ---- INot Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL INot' to use this name for an external ! procedure.  File: g77.info, Node: IZExt Intrinsic, Next: JIAbs Intrinsic, Prev: INot Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: IZExt Intrinsic, *** 16100,16108 **** IZExt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL IZExt' to use this name for an ! external procedure.  File: g77.info, Node: JIAbs Intrinsic, Next: JIAnd Intrinsic, Prev: IZExt Intrinsic, Up: Other Intrinsics --- 16099,16107 ---- IZExt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL IZExt' to use this name for an external ! procedure.  File: g77.info, Node: JIAbs Intrinsic, Next: JIAnd Intrinsic, Prev: IZExt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIAbs Intrinsic, *** 16110,16118 **** JIAbs Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIAbs' to use this name for an ! external procedure.  File: g77.info, Node: JIAnd Intrinsic, Next: JIBClr Intrinsic, Prev: JIAbs Intrinsic, Up: Other Intrinsics --- 16109,16117 ---- JIAbs Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIAbs' to use this name for an external ! procedure.  File: g77.info, Node: JIAnd Intrinsic, Next: JIBClr Intrinsic, Prev: JIAbs Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIAnd Intrinsic, *** 16120,16128 **** JIAnd Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIAnd' to use this name for an ! external procedure.  File: g77.info, Node: JIBClr Intrinsic, Next: JIBits Intrinsic, Prev: JIAnd Intrinsic, Up: Other Intrinsics --- 16119,16127 ---- JIAnd Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIAnd' to use this name for an external ! procedure.  File: g77.info, Node: JIBClr Intrinsic, Next: JIBits Intrinsic, Prev: JIAnd Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIBClr Intrinsic, *** 16130,16137 **** JIBClr Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIBClr' to use this name for an external procedure.  --- 16129,16136 ---- JIBClr Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIBClr' to use this name for an external procedure.  *************** File: g77.info, Node: JIBits Intrinsic, *** 16140,16147 **** JIBits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIBits' to use this name for an external procedure.  --- 16139,16146 ---- JIBits Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIBits' to use this name for an external procedure.  *************** File: g77.info, Node: JIBSet Intrinsic, *** 16150,16157 **** JIBSet Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIBSet' to use this name for an external procedure.  --- 16149,16156 ---- JIBSet Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIBSet' to use this name for an external procedure.  *************** File: g77.info, Node: JIDiM Intrinsic, *** 16160,16168 **** JIDiM Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIDiM' to use this name for an ! external procedure.  File: g77.info, Node: JIDInt Intrinsic, Next: JIDNnt Intrinsic, Prev: JIDiM Intrinsic, Up: Other Intrinsics --- 16159,16167 ---- JIDiM Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIDiM' to use this name for an external ! procedure.  File: g77.info, Node: JIDInt Intrinsic, Next: JIDNnt Intrinsic, Prev: JIDiM Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIDInt Intrinsic, *** 16170,16177 **** JIDInt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIDInt' to use this name for an external procedure.  --- 16169,16176 ---- JIDInt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIDInt' to use this name for an external procedure.  *************** File: g77.info, Node: JIDNnt Intrinsic, *** 16180,16187 **** JIDNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIDNnt' to use this name for an external procedure.  --- 16179,16186 ---- JIDNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIDNnt' to use this name for an external procedure.  *************** File: g77.info, Node: JIEOr Intrinsic, *** 16190,16198 **** JIEOr Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIEOr' to use this name for an ! external procedure.  File: g77.info, Node: JIFix Intrinsic, Next: JInt Intrinsic, Prev: JIEOr Intrinsic, Up: Other Intrinsics --- 16189,16197 ---- JIEOr Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIEOr' to use this name for an external ! procedure.  File: g77.info, Node: JIFix Intrinsic, Next: JInt Intrinsic, Prev: JIEOr Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIFix Intrinsic, *** 16200,16208 **** JIFix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIFix' to use this name for an ! external procedure.  File: g77.info, Node: JInt Intrinsic, Next: JIOr Intrinsic, Prev: JIFix Intrinsic, Up: Other Intrinsics --- 16199,16207 ---- JIFix Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIFix' to use this name for an external ! procedure.  File: g77.info, Node: JInt Intrinsic, Next: JIOr Intrinsic, Prev: JIFix Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JInt Intrinsic, *** 16210,16218 **** JInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JInt' to use this name for an ! external procedure.  File: g77.info, Node: JIOr Intrinsic, Next: JIQint Intrinsic, Prev: JInt Intrinsic, Up: Other Intrinsics --- 16209,16217 ---- JInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JInt' to use this name for an external ! procedure.  File: g77.info, Node: JIOr Intrinsic, Next: JIQint Intrinsic, Prev: JInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIOr Intrinsic, *** 16220,16228 **** JIOr Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIOr' to use this name for an ! external procedure.  File: g77.info, Node: JIQint Intrinsic, Next: JIQNnt Intrinsic, Prev: JIOr Intrinsic, Up: Other Intrinsics --- 16219,16227 ---- JIOr Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIOr' to use this name for an external ! procedure.  File: g77.info, Node: JIQint Intrinsic, Next: JIQNnt Intrinsic, Prev: JIOr Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JIQint Intrinsic, *** 16230,16237 **** JIQint Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIQint' to use this name for an external procedure.  --- 16229,16236 ---- JIQint Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIQint' to use this name for an external procedure.  *************** File: g77.info, Node: JIQNnt Intrinsic, *** 16240,16247 **** JIQNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIQNnt' to use this name for an external procedure.  --- 16239,16246 ---- JIQNnt Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIQNnt' to use this name for an external procedure.  *************** File: g77.info, Node: JIShft Intrinsic, *** 16250,16257 **** JIShft Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIShft' to use this name for an external procedure.  --- 16249,16256 ---- JIShft Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIShft' to use this name for an external procedure.  *************** File: g77.info, Node: JIShftC Intrinsic *** 16260,16268 **** JIShftC Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JIShftC' to use this name for ! an external procedure.  File: g77.info, Node: JISign Intrinsic, Next: JMax0 Intrinsic, Prev: JIShftC Intrinsic, Up: Other Intrinsics --- 16259,16267 ---- JIShftC Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JIShftC' to use this name for an ! external procedure.  File: g77.info, Node: JISign Intrinsic, Next: JMax0 Intrinsic, Prev: JIShftC Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JISign Intrinsic, *** 16270,16277 **** JISign Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JISign' to use this name for an external procedure.  --- 16269,16276 ---- JISign Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JISign' to use this name for an external procedure.  *************** File: g77.info, Node: JMax0 Intrinsic, *** 16280,16288 **** JMax0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JMax0' to use this name for an ! external procedure.  File: g77.info, Node: JMax1 Intrinsic, Next: JMin0 Intrinsic, Prev: JMax0 Intrinsic, Up: Other Intrinsics --- 16279,16287 ---- JMax0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JMax0' to use this name for an external ! procedure.  File: g77.info, Node: JMax1 Intrinsic, Next: JMin0 Intrinsic, Prev: JMax0 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JMax1 Intrinsic, *** 16290,16298 **** JMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JMax1' to use this name for an ! external procedure.  File: g77.info, Node: JMin0 Intrinsic, Next: JMin1 Intrinsic, Prev: JMax1 Intrinsic, Up: Other Intrinsics --- 16289,16297 ---- JMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JMax1' to use this name for an external ! procedure.  File: g77.info, Node: JMin0 Intrinsic, Next: JMin1 Intrinsic, Prev: JMax1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JMin0 Intrinsic, *** 16300,16308 **** JMin0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JMin0' to use this name for an ! external procedure.  File: g77.info, Node: JMin1 Intrinsic, Next: JMod Intrinsic, Prev: JMin0 Intrinsic, Up: Other Intrinsics --- 16299,16307 ---- JMin0 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JMin0' to use this name for an external ! procedure.  File: g77.info, Node: JMin1 Intrinsic, Next: JMod Intrinsic, Prev: JMin0 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JMin1 Intrinsic, *** 16310,16318 **** JMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JMin1' to use this name for an ! external procedure.  File: g77.info, Node: JMod Intrinsic, Next: JNInt Intrinsic, Prev: JMin1 Intrinsic, Up: Other Intrinsics --- 16309,16317 ---- JMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JMin1' to use this name for an external ! procedure.  File: g77.info, Node: JMod Intrinsic, Next: JNInt Intrinsic, Prev: JMin1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JMod Intrinsic, *** 16320,16328 **** JMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JMod' to use this name for an ! external procedure.  File: g77.info, Node: JNInt Intrinsic, Next: JNot Intrinsic, Prev: JMod Intrinsic, Up: Other Intrinsics --- 16319,16327 ---- JMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JMod' to use this name for an external ! procedure.  File: g77.info, Node: JNInt Intrinsic, Next: JNot Intrinsic, Prev: JMod Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JNInt Intrinsic, *** 16330,16338 **** JNInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JNInt' to use this name for an ! external procedure.  File: g77.info, Node: JNot Intrinsic, Next: JZExt Intrinsic, Prev: JNInt Intrinsic, Up: Other Intrinsics --- 16329,16337 ---- JNInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JNInt' to use this name for an external ! procedure.  File: g77.info, Node: JNot Intrinsic, Next: JZExt Intrinsic, Prev: JNInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JNot Intrinsic, *** 16340,16348 **** JNot Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JNot' to use this name for an ! external procedure.  File: g77.info, Node: JZExt Intrinsic, Next: Kill Intrinsic (function), Prev: JNot Intrinsic, Up: Other Intrinsics --- 16339,16347 ---- JNot Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JNot' to use this name for an external ! procedure.  File: g77.info, Node: JZExt Intrinsic, Next: Kill Intrinsic (function), Prev: JNot Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: JZExt Intrinsic, *** 16350,16358 **** JZExt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL JZExt' to use this name for an ! external procedure.  File: g77.info, Node: Kill Intrinsic (function), Next: Link Intrinsic (function), Prev: JZExt Intrinsic, Up: Other Intrinsics --- 16349,16357 ---- JZExt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL JZExt' to use this name for an external ! procedure.  File: g77.info, Node: Kill Intrinsic (function), Next: Link Intrinsic (function), Prev: JZExt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QAbs Intrinsic, *** 16416,16424 **** QAbs Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QAbs' to use this name for an ! external procedure.  File: g77.info, Node: QACos Intrinsic, Next: QACosD Intrinsic, Prev: QAbs Intrinsic, Up: Other Intrinsics --- 16415,16423 ---- QAbs Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QAbs' to use this name for an external ! procedure.  File: g77.info, Node: QACos Intrinsic, Next: QACosD Intrinsic, Prev: QAbs Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QACos Intrinsic, *** 16426,16434 **** QACos Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QACos' to use this name for an ! external procedure.  File: g77.info, Node: QACosD Intrinsic, Next: QASin Intrinsic, Prev: QACos Intrinsic, Up: Other Intrinsics --- 16425,16433 ---- QACos Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QACos' to use this name for an external ! procedure.  File: g77.info, Node: QACosD Intrinsic, Next: QASin Intrinsic, Prev: QACos Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QACosD Intrinsic, *** 16436,16443 **** QACosD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QACosD' to use this name for an external procedure.  --- 16435,16442 ---- QACosD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QACosD' to use this name for an external procedure.  *************** File: g77.info, Node: QASin Intrinsic, *** 16446,16454 **** QASin Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QASin' to use this name for an ! external procedure.  File: g77.info, Node: QASinD Intrinsic, Next: QATan Intrinsic, Prev: QASin Intrinsic, Up: Other Intrinsics --- 16445,16453 ---- QASin Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QASin' to use this name for an external ! procedure.  File: g77.info, Node: QASinD Intrinsic, Next: QATan Intrinsic, Prev: QASin Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QASinD Intrinsic, *** 16456,16463 **** QASinD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QASinD' to use this name for an external procedure.  --- 16455,16462 ---- QASinD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QASinD' to use this name for an external procedure.  *************** File: g77.info, Node: QATan Intrinsic, *** 16466,16474 **** QATan Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QATan' to use this name for an ! external procedure.  File: g77.info, Node: QATan2 Intrinsic, Next: QATan2D Intrinsic, Prev: QATan Intrinsic, Up: Other Intrinsics --- 16465,16473 ---- QATan Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QATan' to use this name for an external ! procedure.  File: g77.info, Node: QATan2 Intrinsic, Next: QATan2D Intrinsic, Prev: QATan Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QATan2 Intrinsic, *** 16476,16483 **** QATan2 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QATan2' to use this name for an external procedure.  --- 16475,16482 ---- QATan2 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QATan2' to use this name for an external procedure.  *************** File: g77.info, Node: QATan2D Intrinsic *** 16486,16494 **** QATan2D Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QATan2D' to use this name for ! an external procedure.  File: g77.info, Node: QATanD Intrinsic, Next: QCos Intrinsic, Prev: QATan2D Intrinsic, Up: Other Intrinsics --- 16485,16493 ---- QATan2D Intrinsic ................. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QATan2D' to use this name for an ! external procedure.  File: g77.info, Node: QATanD Intrinsic, Next: QCos Intrinsic, Prev: QATan2D Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QATanD Intrinsic, *** 16496,16503 **** QATanD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QATanD' to use this name for an external procedure.  --- 16495,16502 ---- QATanD Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QATanD' to use this name for an external procedure.  *************** File: g77.info, Node: QCos Intrinsic, *** 16506,16514 **** QCos Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QCos' to use this name for an ! external procedure.  File: g77.info, Node: QCosD Intrinsic, Next: QCosH Intrinsic, Prev: QCos Intrinsic, Up: Other Intrinsics --- 16505,16513 ---- QCos Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QCos' to use this name for an external ! procedure.  File: g77.info, Node: QCosD Intrinsic, Next: QCosH Intrinsic, Prev: QCos Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QCosD Intrinsic, *** 16516,16524 **** QCosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QCosD' to use this name for an ! external procedure.  File: g77.info, Node: QCosH Intrinsic, Next: QDiM Intrinsic, Prev: QCosD Intrinsic, Up: Other Intrinsics --- 16515,16523 ---- QCosD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QCosD' to use this name for an external ! procedure.  File: g77.info, Node: QCosH Intrinsic, Next: QDiM Intrinsic, Prev: QCosD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QCosH Intrinsic, *** 16526,16534 **** QCosH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QCosH' to use this name for an ! external procedure.  File: g77.info, Node: QDiM Intrinsic, Next: QExp Intrinsic, Prev: QCosH Intrinsic, Up: Other Intrinsics --- 16525,16533 ---- QCosH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QCosH' to use this name for an external ! procedure.  File: g77.info, Node: QDiM Intrinsic, Next: QExp Intrinsic, Prev: QCosH Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QDiM Intrinsic, *** 16536,16544 **** QDiM Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QDiM' to use this name for an ! external procedure.  File: g77.info, Node: QExp Intrinsic, Next: QExt Intrinsic, Prev: QDiM Intrinsic, Up: Other Intrinsics --- 16535,16543 ---- QDiM Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QDiM' to use this name for an external ! procedure.  File: g77.info, Node: QExp Intrinsic, Next: QExt Intrinsic, Prev: QDiM Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QExp Intrinsic, *** 16546,16554 **** QExp Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QExp' to use this name for an ! external procedure.  File: g77.info, Node: QExt Intrinsic, Next: QExtD Intrinsic, Prev: QExp Intrinsic, Up: Other Intrinsics --- 16545,16553 ---- QExp Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QExp' to use this name for an external ! procedure.  File: g77.info, Node: QExt Intrinsic, Next: QExtD Intrinsic, Prev: QExp Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QExt Intrinsic, *** 16556,16564 **** QExt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QExt' to use this name for an ! external procedure.  File: g77.info, Node: QExtD Intrinsic, Next: QFloat Intrinsic, Prev: QExt Intrinsic, Up: Other Intrinsics --- 16555,16563 ---- QExt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QExt' to use this name for an external ! procedure.  File: g77.info, Node: QExtD Intrinsic, Next: QFloat Intrinsic, Prev: QExt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QExtD Intrinsic, *** 16566,16574 **** QExtD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QExtD' to use this name for an ! external procedure.  File: g77.info, Node: QFloat Intrinsic, Next: QInt Intrinsic, Prev: QExtD Intrinsic, Up: Other Intrinsics --- 16565,16573 ---- QExtD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QExtD' to use this name for an external ! procedure.  File: g77.info, Node: QFloat Intrinsic, Next: QInt Intrinsic, Prev: QExtD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QFloat Intrinsic, *** 16576,16583 **** QFloat Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QFloat' to use this name for an external procedure.  --- 16575,16582 ---- QFloat Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QFloat' to use this name for an external procedure.  *************** File: g77.info, Node: QInt Intrinsic, *** 16586,16594 **** QInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QInt' to use this name for an ! external procedure.  File: g77.info, Node: QLog Intrinsic, Next: QLog10 Intrinsic, Prev: QInt Intrinsic, Up: Other Intrinsics --- 16585,16593 ---- QInt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QInt' to use this name for an external ! procedure.  File: g77.info, Node: QLog Intrinsic, Next: QLog10 Intrinsic, Prev: QInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QLog Intrinsic, *** 16596,16604 **** QLog Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QLog' to use this name for an ! external procedure.  File: g77.info, Node: QLog10 Intrinsic, Next: QMax1 Intrinsic, Prev: QLog Intrinsic, Up: Other Intrinsics --- 16595,16603 ---- QLog Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QLog' to use this name for an external ! procedure.  File: g77.info, Node: QLog10 Intrinsic, Next: QMax1 Intrinsic, Prev: QLog Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QLog10 Intrinsic, *** 16606,16613 **** QLog10 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QLog10' to use this name for an external procedure.  --- 16605,16612 ---- QLog10 Intrinsic ................ ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QLog10' to use this name for an external procedure.  *************** File: g77.info, Node: QMax1 Intrinsic, *** 16616,16624 **** QMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QMax1' to use this name for an ! external procedure.  File: g77.info, Node: QMin1 Intrinsic, Next: QMod Intrinsic, Prev: QMax1 Intrinsic, Up: Other Intrinsics --- 16615,16623 ---- QMax1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QMax1' to use this name for an external ! procedure.  File: g77.info, Node: QMin1 Intrinsic, Next: QMod Intrinsic, Prev: QMax1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QMin1 Intrinsic, *** 16626,16634 **** QMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QMin1' to use this name for an ! external procedure.  File: g77.info, Node: QMod Intrinsic, Next: QNInt Intrinsic, Prev: QMin1 Intrinsic, Up: Other Intrinsics --- 16625,16633 ---- QMin1 Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QMin1' to use this name for an external ! procedure.  File: g77.info, Node: QMod Intrinsic, Next: QNInt Intrinsic, Prev: QMin1 Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QMod Intrinsic, *** 16636,16644 **** QMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QMod' to use this name for an ! external procedure.  File: g77.info, Node: QNInt Intrinsic, Next: QSin Intrinsic, Prev: QMod Intrinsic, Up: Other Intrinsics --- 16635,16643 ---- QMod Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QMod' to use this name for an external ! procedure.  File: g77.info, Node: QNInt Intrinsic, Next: QSin Intrinsic, Prev: QMod Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QNInt Intrinsic, *** 16646,16654 **** QNInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QNInt' to use this name for an ! external procedure.  File: g77.info, Node: QSin Intrinsic, Next: QSinD Intrinsic, Prev: QNInt Intrinsic, Up: Other Intrinsics --- 16645,16653 ---- QNInt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QNInt' to use this name for an external ! procedure.  File: g77.info, Node: QSin Intrinsic, Next: QSinD Intrinsic, Prev: QNInt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QSin Intrinsic, *** 16656,16664 **** QSin Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QSin' to use this name for an ! external procedure.  File: g77.info, Node: QSinD Intrinsic, Next: QSinH Intrinsic, Prev: QSin Intrinsic, Up: Other Intrinsics --- 16655,16663 ---- QSin Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QSin' to use this name for an external ! procedure.  File: g77.info, Node: QSinD Intrinsic, Next: QSinH Intrinsic, Prev: QSin Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QSinD Intrinsic, *** 16666,16674 **** QSinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QSinD' to use this name for an ! external procedure.  File: g77.info, Node: QSinH Intrinsic, Next: QSqRt Intrinsic, Prev: QSinD Intrinsic, Up: Other Intrinsics --- 16665,16673 ---- QSinD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QSinD' to use this name for an external ! procedure.  File: g77.info, Node: QSinH Intrinsic, Next: QSqRt Intrinsic, Prev: QSinD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QSinH Intrinsic, *** 16676,16684 **** QSinH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QSinH' to use this name for an ! external procedure.  File: g77.info, Node: QSqRt Intrinsic, Next: QTan Intrinsic, Prev: QSinH Intrinsic, Up: Other Intrinsics --- 16675,16683 ---- QSinH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QSinH' to use this name for an external ! procedure.  File: g77.info, Node: QSqRt Intrinsic, Next: QTan Intrinsic, Prev: QSinH Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QSqRt Intrinsic, *** 16686,16694 **** QSqRt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QSqRt' to use this name for an ! external procedure.  File: g77.info, Node: QTan Intrinsic, Next: QTanD Intrinsic, Prev: QSqRt Intrinsic, Up: Other Intrinsics --- 16685,16693 ---- QSqRt Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QSqRt' to use this name for an external ! procedure.  File: g77.info, Node: QTan Intrinsic, Next: QTanD Intrinsic, Prev: QSqRt Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QTan Intrinsic, *** 16696,16704 **** QTan Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QTan' to use this name for an ! external procedure.  File: g77.info, Node: QTanD Intrinsic, Next: QTanH Intrinsic, Prev: QTan Intrinsic, Up: Other Intrinsics --- 16695,16703 ---- QTan Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QTan' to use this name for an external ! procedure.  File: g77.info, Node: QTanD Intrinsic, Next: QTanH Intrinsic, Prev: QTan Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QTanD Intrinsic, *** 16706,16714 **** QTanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QTanD' to use this name for an ! external procedure.  File: g77.info, Node: QTanH Intrinsic, Next: Rename Intrinsic (function), Prev: QTanD Intrinsic, Up: Other Intrinsics --- 16705,16713 ---- QTanD Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QTanD' to use this name for an external ! procedure.  File: g77.info, Node: QTanH Intrinsic, Next: Rename Intrinsic (function), Prev: QTanD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: QTanH Intrinsic, *** 16716,16724 **** QTanH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL QTanH' to use this name for an ! external procedure.  File: g77.info, Node: Rename Intrinsic (function), Next: Secnds Intrinsic, Prev: QTanH Intrinsic, Up: Other Intrinsics --- 16715,16723 ---- QTanH Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL QTanH' to use this name for an external ! procedure.  File: g77.info, Node: Rename Intrinsic (function), Next: Secnds Intrinsic, Prev: QTanH Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: SinD Intrinsic, *** 16858,16866 **** SinD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL SinD' to use this name for an ! external procedure.  File: g77.info, Node: SnglQ Intrinsic, Next: SymLnk Intrinsic (function), Prev: SinD Intrinsic, Up: Other Intrinsics --- 16857,16865 ---- SinD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL SinD' to use this name for an external ! procedure.  File: g77.info, Node: SnglQ Intrinsic, Next: SymLnk Intrinsic (function), Prev: SinD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: SnglQ Intrinsic, *** 16868,16876 **** SnglQ Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL SnglQ' to use this name for an ! external procedure.  File: g77.info, Node: SymLnk Intrinsic (function), Next: System Intrinsic (function), Prev: SnglQ Intrinsic, Up: Other Intrinsics --- 16867,16875 ---- SnglQ Intrinsic ............... ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL SnglQ' to use this name for an external ! procedure.  File: g77.info, Node: SymLnk Intrinsic (function), Next: System Intrinsic (function), Prev: SnglQ Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: TanD Intrinsic, *** 16944,16952 **** TanD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL TanD' to use this name for an ! external procedure.  File: g77.info, Node: Time Intrinsic (VXT), Next: UMask Intrinsic (function), Prev: TanD Intrinsic, Up: Other Intrinsics --- 16943,16951 ---- TanD Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL TanD' to use this name for an external ! procedure.  File: g77.info, Node: Time Intrinsic (VXT), Next: UMask Intrinsic (function), Prev: TanD Intrinsic, Up: Other Intrinsics *************** File: g77.info, Node: ZExt Intrinsic, *** 17032,17040 **** ZExt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, ! reserved as an intrinsic. Use `EXTERNAL ZExt' to use this name for an ! external procedure.  File: g77.info, Node: Other Compilers, Next: Other Languages, Prev: Other Dialects, Up: Top --- 17031,17039 ---- ZExt Intrinsic .............. ! This intrinsic is not yet implemented. The name is, however, reserved ! as an intrinsic. Use `EXTERNAL ZExt' to use this name for an external ! procedure.  File: g77.info, Node: Other Compilers, Next: Other Languages, Prev: Other Dialects, Up: Top *************** File: g77.info, Node: Other Compilers, *** 17042,17054 **** Other Compilers *************** ! An individual Fortran source file can be compiled to an object ! (`*.o') file instead of to the final program executable. This allows ! several portions of a program to be compiled at different times and ! linked together whenever a new version of the program is needed. ! However, it introduces the issue of "object compatibility" across the ! various object files (and libraries, or `*.a' files) that are linked ! together to produce any particular executable file. Object compatibility is an issue when combining, in one program, Fortran code compiled by more than one compiler (or more than one --- 17041,17053 ---- Other Compilers *************** ! An individual Fortran source file can be compiled to an object (`*.o') ! file instead of to the final program executable. This allows several ! portions of a program to be compiled at different times and linked ! together whenever a new version of the program is needed. However, it ! introduces the issue of "object compatibility" across the various ! object files (and libraries, or `*.a' files) that are linked together ! to produce any particular executable file. Object compatibility is an issue when combining, in one program, Fortran code compiled by more than one compiler (or more than one *************** File: g77.info, Node: Dropping f2c Comp *** 17096,17104 **** Dropping `f2c' Compatibility ============================ ! Specifying `-fno-f2c' allows `g77' to generate, in some cases, ! faster code, by not needing to allow to the possibility of linking with ! code compiled by `f2c'. For example, this affects how `REAL(KIND=1)', `COMPLEX(KIND=1)', and `COMPLEX(KIND=2)' functions are called. With `-fno-f2c', they are --- 17095,17103 ---- Dropping `f2c' Compatibility ============================ ! Specifying `-fno-f2c' allows `g77' to generate, in some cases, faster ! code, by not needing to allow to the possibility of linking with code ! compiled by `f2c'. For example, this affects how `REAL(KIND=1)', `COMPLEX(KIND=1)', and `COMPLEX(KIND=2)' functions are called. With `-fno-f2c', they are *************** File: g77.info, Node: Compilers Other T *** 17156,17162 **** Compilers Other Than `f2c' ========================== ! On systems with Fortran compilers other than `f2c' and `g77', code compiled by `g77' is not expected to work well with code compiled by the native compiler. (This is true for `f2c'-compiled objects as well.) Libraries compiled with the native compiler probably will have to be --- 17155,17161 ---- Compilers Other Than `f2c' ========================== ! On systems with Fortran compilers other than `f2c' and `g77', code compiled by `g77' is not expected to work well with code compiled by the native compiler. (This is true for `f2c'-compiled objects as well.) Libraries compiled with the native compiler probably will have to be *************** File: g77.info, Node: Other Languages, *** 17194,17200 **** Other Languages *************** ! _Note: This portion of the documentation definitely needs a lot of work!_ * Menu: --- 17193,17199 ---- Other Languages *************** ! _Note: This portion of the documentation definitely needs a lot of work!_ * Menu: *************** File: g77.info, Node: Interoperating wi *** 17207,17213 **** Tools and advice for interoperating with C and C++ ================================================== ! The following discussion assumes that you are running `g77' in `f2c' compatibility mode, i.e. not using `-fno-f2c'. It provides some advice about quick and simple techniques for linking Fortran and C (or C++), the most common requirement. For the full story consult the --- 17206,17212 ---- Tools and advice for interoperating with C and C++ ================================================== ! The following discussion assumes that you are running `g77' in `f2c' compatibility mode, i.e. not using `-fno-f2c'. It provides some advice about quick and simple techniques for linking Fortran and C (or C++), the most common requirement. For the full story consult the *************** File: g77.info, Node: C Interfacing Too *** 17234,17240 **** C Interfacing Tools ------------------- ! Even if you don't actually use it as a compiler, `f2c' from `ftp://ftp.netlib.org/f2c/src', can be a useful tool when you're interfacing (linking) Fortran and C. *Note Generating Skeletons and Prototypes with `f2c': f2c Skeletons and Prototypes. --- 17233,17239 ---- C Interfacing Tools ------------------- ! Even if you don't actually use it as a compiler, `f2c' from `ftp://ftp.netlib.org/f2c/src', can be a useful tool when you're interfacing (linking) Fortran and C. *Note Generating Skeletons and Prototypes with `f2c': f2c Skeletons and Prototypes. *************** File: g77.info, Node: C Access to Type *** 17256,17268 **** Accessing Type Information in C ------------------------------- ! Generally, C code written to link with `g77' code--calling and/or ! being called from Fortran--should `#include ' to define the C ! versions of the Fortran types. Don't assume Fortran `INTEGER' types ! correspond to C `int's, for instance; instead, declare them as ! `integer', a type defined by `g2c.h'. `g2c.h' is installed where `gcc' ! will find it by default, assuming you use a copy of `gcc' compatible ! with `g77', probably built at the same time as `g77'.  File: g77.info, Node: f2c Skeletons and Prototypes, Next: C++ Considerations, Prev: C Access to Type Information, Up: Interoperating with C and C++ --- 17255,17267 ---- Accessing Type Information in C ------------------------------- ! Generally, C code written to link with `g77' code--calling and/or being ! called from Fortran--should `#include ' to define the C versions ! of the Fortran types. Don't assume Fortran `INTEGER' types correspond ! to C `int's, for instance; instead, declare them as `integer', a type ! defined by `g2c.h'. `g2c.h' is installed where `gcc' will find it by ! default, assuming you use a copy of `gcc' compatible with `g77', ! probably built at the same time as `g77'.  File: g77.info, Node: f2c Skeletons and Prototypes, Next: C++ Considerations, Prev: C Access to Type Information, Up: Interoperating with C and C++ *************** File: g77.info, Node: f2c Skeletons and *** 17270,17277 **** Generating Skeletons and Prototypes with `f2c' ---------------------------------------------- ! A simple and foolproof way to write `g77'-callable C routines--e.g. ! to interface with an existing library--is to write a file (named, for example, `fred.f') of dummy Fortran skeletons comprising just the declaration of the routine(s) and dummy arguments plus `END' statements. Then run `f2c' on file `fred.f' to produce `fred.c' into which you can --- 17269,17276 ---- Generating Skeletons and Prototypes with `f2c' ---------------------------------------------- ! A simple and foolproof way to write `g77'-callable C routines--e.g. to ! interface with an existing library--is to write a file (named, for example, `fred.f') of dummy Fortran skeletons comprising just the declaration of the routine(s) and dummy arguments plus `END' statements. Then run `f2c' on file `fred.f' to produce `fred.c' into which you can *************** File: g77.info, Node: C++ Consideration *** 17304,17311 **** C++ Considerations ------------------ ! `f2c' can be used to generate suitable code for compilation with a ! C++ system using the `-C++' option. The important thing about linking `g77'-compiled code with C++ is that the prototypes for the `g77' routines must specify C linkage to avoid name mangling. So, use an `extern "C"' declaration. `f2c''s `-C++' option will not take care of --- 17303,17310 ---- C++ Considerations ------------------ ! `f2c' can be used to generate suitable code for compilation with a C++ ! system using the `-C++' option. The important thing about linking `g77'-compiled code with C++ is that the prototypes for the `g77' routines must specify C linkage to avoid name mangling. So, use an `extern "C"' declaration. `f2c''s `-C++' option will not take care of *************** File: g77.info, Node: Startup Code, Pr *** 17318,17324 **** Startup Code ------------ ! Unlike with some runtime systems, it shouldn't be necessary (unless there are bugs) to use a Fortran main program unit to ensure the runtime--specifically the I/O system--is initialized. --- 17317,17323 ---- Startup Code ------------ ! Unlike with some runtime systems, it shouldn't be necessary (unless there are bugs) to use a Fortran main program unit to ensure the runtime--specifically the I/O system--is initialized. *************** File: g77.info, Node: Debugging and Int *** 17429,17439 **** Debugging and Interfacing ************************* ! GNU Fortran currently generates code that is object-compatible with ! the `f2c' converter. Also, it avoids limitations in the current GBE, ! such as the inability to generate a procedure with multiple entry ! points, by generating code that is structured differently (in terms of ! procedure names, scopes, arguments, and so on) than might be expected. As a result, writing code in other languages that calls on, is called by, or shares in-memory data with `g77'-compiled code generally --- 17428,17438 ---- Debugging and Interfacing ************************* ! GNU Fortran currently generates code that is object-compatible with the ! `f2c' converter. Also, it avoids limitations in the current GBE, such ! as the inability to generate a procedure with multiple entry points, by ! generating code that is structured differently (in terms of procedure ! names, scopes, arguments, and so on) than might be expected. As a result, writing code in other languages that calls on, is called by, or shares in-memory data with `g77'-compiled code generally *************** File: g77.info, Node: Main Program Unit *** 17483,17489 **** Main Program Unit (PROGRAM) =========================== ! When `g77' compiles a main program unit, it gives it the public procedure name `MAIN__'. The `libg2c' library has the actual `main()' procedure as is typical of C-based environments, and it is this procedure that performs some initial start-up activity and then calls --- 17482,17488 ---- Main Program Unit (PROGRAM) =========================== ! When `g77' compiles a main program unit, it gives it the public procedure name `MAIN__'. The `libg2c' library has the actual `main()' procedure as is typical of C-based environments, and it is this procedure that performs some initial start-up activity and then calls *************** File: g77.info, Node: Procedures, Next *** 17539,17545 **** Procedures (SUBROUTINE and FUNCTION) ==================================== ! Currently, `g77' passes arguments via reference--specifically, by passing a pointer to the location in memory of a variable, array, array element, a temporary location that holds the result of evaluating an expression, or a temporary or permanent location that holds the value --- 17538,17544 ---- Procedures (SUBROUTINE and FUNCTION) ==================================== ! Currently, `g77' passes arguments via reference--specifically, by passing a pointer to the location in memory of a variable, array, array element, a temporary location that holds the result of evaluating an expression, or a temporary or permanent location that holds the value *************** File: g77.info, Node: Functions, Next: *** 17602,17608 **** Functions (FUNCTION and RETURN) =============================== ! `g77' handles in a special way functions that return the following types: * `CHARACTER' --- 17601,17607 ---- Functions (FUNCTION and RETURN) =============================== ! `g77' handles in a special way functions that return the following types: * `CHARACTER' *************** File: g77.info, Node: Names, Next: Com *** 17641,17650 **** Names ===== ! Fortran permits each implementation to decide how to represent names ! as far as how they're seen in other contexts, such as debuggers and ! when interfacing to other languages, and especially as far as how ! casing is handled. External names--names of entities that are public, or "accessible", to all modules in a program--normally have an underscore (`_') appended --- 17640,17649 ---- Names ===== ! Fortran permits each implementation to decide how to represent names as ! far as how they're seen in other contexts, such as debuggers and when ! interfacing to other languages, and especially as far as how casing is ! handled. External names--names of entities that are public, or "accessible", to all modules in a program--normally have an underscore (`_') appended *************** File: g77.info, Node: Common Blocks, N *** 17717,17723 **** Common Blocks (COMMON) ====================== ! `g77' names and lays out `COMMON' areas the same way `f2c' does, for compatibility with `f2c'.  --- 17716,17722 ---- Common Blocks (COMMON) ====================== ! `g77' names and lays out `COMMON' areas the same way `f2c' does, for compatibility with `f2c'.  *************** File: g77.info, Node: Local Equivalence *** 17726,17732 **** Local Equivalence Areas (EQUIVALENCE) ===================================== ! `g77' treats storage-associated areas involving a `COMMON' block as explained in the section on common blocks. A local `EQUIVALENCE' area is a collection of variables and arrays --- 17725,17731 ---- Local Equivalence Areas (EQUIVALENCE) ===================================== ! `g77' treats storage-associated areas involving a `COMMON' block as explained in the section on common blocks. A local `EQUIVALENCE' area is a collection of variables and arrays *************** File: g77.info, Node: Complex Variables *** 17748,17756 **** Complex Variables (COMPLEX) =========================== ! As of 0.5.20, `g77' defaults to handling `COMPLEX' types (and ! related intrinsics, constants, functions, and so on) in a manner that ! makes direct debugging involving these types in Fortran language mode difficult. Essentially, `g77' implements these types using an internal --- 17747,17755 ---- Complex Variables (COMPLEX) =========================== ! As of 0.5.20, `g77' defaults to handling `COMPLEX' types (and related ! intrinsics, constants, functions, and so on) in a manner that makes ! direct debugging involving these types in Fortran language mode difficult. Essentially, `g77' implements these types using an internal *************** File: g77.info, Node: Arrays, Next: Ad *** 17774,17781 **** Arrays (DIMENSION) ================== ! Fortran uses "column-major ordering" in its arrays. This differs ! from other languages, such as C, which use "row-major ordering". The difference is that, with Fortran, array elements adjacent to each other in memory differ in the _first_ subscript instead of the last; `A(5,10,20)' immediately follows `A(4,10,20)', whereas with row-major --- 17773,17780 ---- Arrays (DIMENSION) ================== ! Fortran uses "column-major ordering" in its arrays. This differs from ! other languages, such as C, which use "row-major ordering". The difference is that, with Fortran, array elements adjacent to each other in memory differ in the _first_ subscript instead of the last; `A(5,10,20)' immediately follows `A(4,10,20)', whereas with row-major *************** File: g77.info, Node: Adjustable Arrays *** 17844,17850 **** Adjustable Arrays (DIMENSION) ============================= ! Adjustable and automatic arrays in Fortran require the implementation (in this case, the `g77' compiler) to "memorize" the expressions that dimension the arrays each time the procedure is invoked. This is so that subsequent changes to variables used in those expressions, made --- 17843,17849 ---- Adjustable Arrays (DIMENSION) ============================= ! Adjustable and automatic arrays in Fortran require the implementation (in this case, the `g77' compiler) to "memorize" the expressions that dimension the arrays each time the procedure is invoked. This is so that subsequent changes to variables used in those expressions, made *************** File: g77.info, Node: Alternate Entry P *** 17909,17915 **** Alternate Entry Points (ENTRY) ============================== ! The GBE does not understand the general concept of alternate entry points as Fortran provides via the ENTRY statement. `g77' gets around this by using an approach to compiling procedures having at least one `ENTRY' statement that is almost identical to the approach used by --- 17908,17914 ---- Alternate Entry Points (ENTRY) ============================== ! The GBE does not understand the general concept of alternate entry points as Fortran provides via the ENTRY statement. `g77' gets around this by using an approach to compiling procedures having at least one `ENTRY' statement that is almost identical to the approach used by *************** File: g77.info, Node: Alternate Returns *** 18045,18051 **** Alternate Returns (SUBROUTINE and RETURN) ========================================= ! Subroutines with alternate returns (e.g. `SUBROUTINE X(*)' and `CALL X(*50)') are implemented by `g77' as functions returning the C `int' type. The actual alternate-return arguments are omitted from the calling sequence. Instead, the caller uses the return value to do a --- 18044,18050 ---- Alternate Returns (SUBROUTINE and RETURN) ========================================= ! Subroutines with alternate returns (e.g. `SUBROUTINE X(*)' and `CALL X(*50)') are implemented by `g77' as functions returning the C `int' type. The actual alternate-return arguments are omitted from the calling sequence. Instead, the caller uses the return value to do a *************** File: g77.info, Node: Assigned Statemen *** 18062,18074 **** Assigned Statement Labels (ASSIGN and GOTO) =========================================== ! For portability to machines where a pointer (such as to a label, ! which is how `g77' implements `ASSIGN' and its relatives, the ! assigned-`GOTO' and assigned-`FORMAT'-I/O statements) is wider ! (bitwise) than an `INTEGER(KIND=1)', `g77' uses a different memory ! location to hold the `ASSIGN'ed value of a variable than it does the ! numerical value in that variable, unless the variable is wide enough ! (can hold enough bits). In particular, while `g77' implements --- 18061,18072 ---- Assigned Statement Labels (ASSIGN and GOTO) =========================================== ! For portability to machines where a pointer (such as to a label, which ! is how `g77' implements `ASSIGN' and its relatives, the assigned-`GOTO' ! and assigned-`FORMAT'-I/O statements) is wider (bitwise) than an ! `INTEGER(KIND=1)', `g77' uses a different memory location to hold the ! `ASSIGN'ed value of a variable than it does the numerical value in that ! variable, unless the variable is wide enough (can hold enough bits). In particular, while `g77' implements *************** File: g77.info, Node: Run-time Library *** 18104,18111 **** Run-time Library Errors ======================= ! The `libg2c' library currently has the following table to relate ! error code numbers, returned in `IOSTAT=' variables, to messages. This information should, in future versions of this document, be expanded upon to include detailed descriptions of each message. --- 18102,18109 ---- Run-time Library Errors ======================= ! The `libg2c' library currently has the following table to relate error ! code numbers, returned in `IOSTAT=' variables, to messages. This information should, in future versions of this document, be expanded upon to include detailed descriptions of each message. *************** File: g77.info, Node: Collected Fortran *** 18157,18163 **** Collected Fortran Wisdom ************************ ! Most users of `g77' can be divided into two camps: * Those writing new Fortran code to be compiled by `g77'. --- 18155,18161 ---- Collected Fortran Wisdom ************************ ! Most users of `g77' can be divided into two camps: * Those writing new Fortran code to be compiled by `g77'. *************** File: g77.info, Node: Advantages Over f *** 18193,18199 **** Advantages Over f2c =================== ! Without `f2c', `g77' would have taken much longer to do and probably not been as good for quite a while. Sometimes people who notice how much `g77' depends on, and documents encouragement to use, `f2c' ask why `g77' was created if `f2c' already existed. --- 18191,18197 ---- Advantages Over f2c =================== ! Without `f2c', `g77' would have taken much longer to do and probably not been as good for quite a while. Sometimes people who notice how much `g77' depends on, and documents encouragement to use, `f2c' ask why `g77' was created if `f2c' already existed. *************** File: g77.info, Node: Language Extensio *** 18217,18223 **** Language Extensions ------------------- ! `g77' offers several extensions to FORTRAN 77 language that `f2c' doesn't: * Automatic arrays --- 18215,18221 ---- Language Extensions ------------------- ! `g77' offers several extensions to FORTRAN 77 language that `f2c' doesn't: * Automatic arrays *************** File: g77.info, Node: Diagnostic Abilit *** 18261,18267 **** Diagnostic Abilities -------------------- ! `g77' offers better diagnosis of problems in `FORMAT' statements. `f2c' doesn't, for example, emit any diagnostic for `FORMAT(XZFAJG10324)', leaving that to be diagnosed, at run time, by the `libf2c' run-time library. --- 18259,18265 ---- Diagnostic Abilities -------------------- ! `g77' offers better diagnosis of problems in `FORMAT' statements. `f2c' doesn't, for example, emit any diagnostic for `FORMAT(XZFAJG10324)', leaving that to be diagnosed, at run time, by the `libf2c' run-time library. *************** File: g77.info, Node: Compiler Options, *** 18272,18278 **** Compiler Options ---------------- ! `g77' offers compiler options that `f2c' doesn't, most of which are designed to more easily accommodate legacy code: * Two that control the automatic appending of extra underscores to --- 18270,18276 ---- Compiler Options ---------------- ! `g77' offers compiler options that `f2c' doesn't, most of which are designed to more easily accommodate legacy code: * Two that control the automatic appending of extra underscores to *************** File: g77.info, Node: Compiler Speed, *** 18303,18309 **** Compiler Speed -------------- ! Saving the steps of writing and then rereading C code is a big reason why `g77' should be able to compile code much faster than using `f2c' in conjunction with the equivalent invocation of `gcc'. --- 18301,18307 ---- Compiler Speed -------------- ! Saving the steps of writing and then rereading C code is a big reason why `g77' should be able to compile code much faster than using `f2c' in conjunction with the equivalent invocation of `gcc'. *************** File: g77.info, Node: Program Speed, N *** 18320,18327 **** Program Speed ------------- ! `g77' has the potential to better optimize code than `f2c', even ! when `gcc' is used to compile the output of `f2c', because `f2c' must necessarily translate Fortran into a somewhat lower-level language (C) that cannot preserve all the information that is potentially useful for optimization, while `g77' can gather, preserve, and transmit that --- 18318,18325 ---- Program Speed ------------- ! `g77' has the potential to better optimize code than `f2c', even when ! `gcc' is used to compile the output of `f2c', because `f2c' must necessarily translate Fortran into a somewhat lower-level language (C) that cannot preserve all the information that is potentially useful for optimization, while `g77' can gather, preserve, and transmit that *************** File: g77.info, Node: Ease of Debugging *** 18354,18362 **** Ease of Debugging ----------------- ! Because `g77' compiles directly to assembler code like `gcc', ! instead of translating to an intermediate language (C) as does `f2c', ! support for debugging can be better for `g77' than `f2c'. However, although `g77' might be somewhat more "native" in terms of debugging support than `f2c' plus `gcc', there still are a lot of --- 18352,18360 ---- Ease of Debugging ----------------- ! Because `g77' compiles directly to assembler code like `gcc', instead ! of translating to an intermediate language (C) as does `f2c', support ! for debugging can be better for `g77' than `f2c'. However, although `g77' might be somewhat more "native" in terms of debugging support than `f2c' plus `gcc', there still are a lot of *************** File: g77.info, Node: Character and Hol *** 18408,18418 **** Character and Hollerith Constants --------------------------------- ! To avoid the extensive hassle that would be needed to avoid this, ! `f2c' uses C character constants to encode character and Hollerith ! constants. That means a constant like `'HELLO'' is translated to ! `"hello"' in C, which further means that an extra null byte is present ! at the end of the constant. This null byte is superfluous. `g77' does not generate such null bytes. This represents significant savings of resources, such as on systems where `/dev/null' or --- 18406,18416 ---- Character and Hollerith Constants --------------------------------- ! To avoid the extensive hassle that would be needed to avoid this, `f2c' ! uses C character constants to encode character and Hollerith constants. ! That means a constant like `'HELLO'' is translated to `"hello"' in C, ! which further means that an extra null byte is present at the end of ! the constant. This null byte is superfluous. `g77' does not generate such null bytes. This represents significant savings of resources, such as on systems where `/dev/null' or *************** File: g77.info, Node: Block Data and Li *** 18428,18437 **** Block Data and Libraries ======================== ! To ensure that block data program units are linked, especially a ! concern when they are put into libraries, give each one a name (as in ! `BLOCK DATA FOO') and make sure there is an `EXTERNAL FOO' statement in ! every program unit that uses any common block initialized by the corresponding `BLOCK DATA'. `g77' currently compiles a `BLOCK DATA' as if it were a `SUBROUTINE', that is, it generates an actual procedure having the appropriate name. The procedure does nothing but return --- 18426,18435 ---- Block Data and Libraries ======================== ! To ensure that block data program units are linked, especially a concern ! when they are put into libraries, give each one a name (as in `BLOCK ! DATA FOO') and make sure there is an `EXTERNAL FOO' statement in every ! program unit that uses any common block initialized by the corresponding `BLOCK DATA'. `g77' currently compiles a `BLOCK DATA' as if it were a `SUBROUTINE', that is, it generates an actual procedure having the appropriate name. The procedure does nothing but return *************** File: g77.info, Node: Loops, Next: Wor *** 18503,18509 **** Loops ===== ! The meaning of a `DO' loop in Fortran is precisely specified in the Fortran standard...and is quite different from what many programmers might expect. --- 18501,18507 ---- Loops ===== ! The meaning of a `DO' loop in Fortran is precisely specified in the Fortran standard...and is quite different from what many programmers might expect. *************** File: g77.info, Node: Working Programs, *** 18635,18641 **** Working Programs ================ ! Getting Fortran programs to work in the first place can be quite a challenge--even when the programs already work on other systems, or when using other compilers. --- 18633,18639 ---- Working Programs ================ ! Getting Fortran programs to work in the first place can be quite a challenge--even when the programs already work on other systems, or when using other compilers. *************** File: g77.info, Node: Not My Type, Nex *** 18662,18669 **** Not My Type ----------- ! A fruitful source of bugs in Fortran source code is use, or mis-use, ! of Fortran's implicit-typing feature, whereby the type of a variable, array, or function is determined by the first character of its name. Simple cases of this include statements like `LOGX=9.227', without a --- 18660,18667 ---- Not My Type ----------- ! A fruitful source of bugs in Fortran source code is use, or mis-use, of ! Fortran's implicit-typing feature, whereby the type of a variable, array, or function is determined by the first character of its name. Simple cases of this include statements like `LOGX=9.227', without a *************** File: g77.info, Node: Variables Assumed *** 18702,18711 **** Variables Assumed To Be Zero ---------------------------- ! Many Fortran programs were developed on systems that provided ! automatic initialization of all, or some, variables and arrays to zero. ! As a result, many of these programs depend, sometimes inadvertently, on ! this behavior, though to do so violates the Fortran standards. You can ask `g77' for this behavior by specifying the `-finit-local-zero' option when compiling Fortran code. (You might --- 18700,18709 ---- Variables Assumed To Be Zero ---------------------------- ! Many Fortran programs were developed on systems that provided automatic ! initialization of all, or some, variables and arrays to zero. As a ! result, many of these programs depend, sometimes inadvertently, on this ! behavior, though to do so violates the Fortran standards. You can ask `g77' for this behavior by specifying the `-finit-local-zero' option when compiling Fortran code. (You might *************** File: g77.info, Node: Variables Assumed *** 18725,18733 **** Variables Assumed To Be Saved ----------------------------- ! Many Fortran programs were developed on systems that saved the ! values of all, or some, variables and arrays across procedure calls. ! As a result, many of these programs depend, sometimes inadvertently, on being able to assign a value to a variable, perform a `RETURN' to a calling procedure, and, upon subsequent invocation, reference the previously assigned variable to obtain the value. --- 18723,18731 ---- Variables Assumed To Be Saved ----------------------------- ! Many Fortran programs were developed on systems that saved the values ! of all, or some, variables and arrays across procedure calls. As a ! result, many of these programs depend, sometimes inadvertently, on being able to assign a value to a variable, perform a `RETURN' to a calling procedure, and, upon subsequent invocation, reference the previously assigned variable to obtain the value. *************** File: g77.info, Node: Unwanted Variable *** 18753,18763 **** Unwanted Variables ------------------ ! The `-Wunused' option can find bugs involving implicit typing, ! sometimes more easily than using `-Wimplicit' in code that makes heavy ! use of implicit typing. An unused variable or array might indicate ! that the spelling for its declaration is different from that of its ! intended uses. Other than cases involving typos, unused variables rarely indicate actual bugs in a program. However, investigating such cases thoroughly --- 18751,18761 ---- Unwanted Variables ------------------ ! The `-Wunused' option can find bugs involving implicit typing, sometimes ! more easily than using `-Wimplicit' in code that makes heavy use of ! implicit typing. An unused variable or array might indicate that the ! spelling for its declaration is different from that of its intended ! uses. Other than cases involving typos, unused variables rarely indicate actual bugs in a program. However, investigating such cases thoroughly *************** File: g77.info, Node: Unused Arguments, *** 18772,18778 **** Unused Arguments ---------------- ! As with unused variables, It is possible that unused arguments to a procedure might indicate a bug. Compile with `-W -Wunused' option to catch cases of unused arguments. --- 18770,18776 ---- Unused Arguments ---------------- ! As with unused variables, It is possible that unused arguments to a procedure might indicate a bug. Compile with `-W -Wunused' option to catch cases of unused arguments. *************** File: g77.info, Node: Surprising Interp *** 18785,18791 **** Surprising Interpretations of Code ---------------------------------- ! The `-Wsurprising' option can help find bugs involving expression evaluation or in the way `DO' loops with non-integral iteration variables are handled. Cases found by this option might indicate a difference of interpretation between the author of the code involved, --- 18783,18789 ---- Surprising Interpretations of Code ---------------------------------- ! The `-Wsurprising' option can help find bugs involving expression evaluation or in the way `DO' loops with non-integral iteration variables are handled. Cases found by this option might indicate a difference of interpretation between the author of the code involved, *************** File: g77.info, Node: Aliasing Assumed *** 18803,18809 **** Aliasing Assumed To Work ------------------------ ! The `-falias-check', `-fargument-alias', `-fargument-noalias', and `-fno-argument-noalias-global' options, introduced in version 0.5.20 and `g77''s version 2.7.2.2.f.2 of `gcc', were withdrawn as of `g77' version 0.5.23 due to their not being supported by `gcc' version 2.8. --- 18801,18807 ---- Aliasing Assumed To Work ------------------------ ! The `-falias-check', `-fargument-alias', `-fargument-noalias', and `-fno-argument-noalias-global' options, introduced in version 0.5.20 and `g77''s version 2.7.2.2.f.2 of `gcc', were withdrawn as of `g77' version 0.5.23 due to their not being supported by `gcc' version 2.8. *************** File: g77.info, Node: Output Assumed To *** 18940,18948 **** Output Assumed To Flush ----------------------- ! For several versions prior to 0.5.20, `g77' configured its version ! of the `libf2c' run-time library so that one of its configuration ! macros, `ALWAYS_FLUSH', was defined. This was done as a result of a belief that many programs expected output to be flushed to the operating system (under UNIX, via the --- 18938,18946 ---- Output Assumed To Flush ----------------------- ! For several versions prior to 0.5.20, `g77' configured its version of ! the `libf2c' run-time library so that one of its configuration macros, ! `ALWAYS_FLUSH', was defined. This was done as a result of a belief that many programs expected output to be flushed to the operating system (under UNIX, via the *************** File: g77.info, Node: Large File Unit N *** 19003,19011 **** Large File Unit Numbers ----------------------- ! If your program crashes at run time with a message including the ! text `illegal unit number', that probably is a message from the ! run-time library, `libg2c'. The message means that your program has attempted to use a file unit number that is out of the range accepted by `libg2c'. Normally, this --- 19001,19009 ---- Large File Unit Numbers ----------------------- ! If your program crashes at run time with a message including the text ! `illegal unit number', that probably is a message from the run-time ! library, `libg2c'. The message means that your program has attempted to use a file unit number that is out of the range accepted by `libg2c'. Normally, this *************** File: g77.info, Node: Floating-point pr *** 19053,19060 **** Floating-point precision ------------------------ ! If your program depends on exact IEEE 754 floating-point handling it ! may help on some systems--specifically x86 or m68k hardware--to use the `-ffloat-store' option or to reset the precision flag on the floating-point unit. *Note Optimize Options::. --- 19051,19058 ---- Floating-point precision ------------------------ ! If your program depends on exact IEEE 754 floating-point handling it may ! help on some systems--specifically x86 or m68k hardware--to use the `-ffloat-store' option or to reset the precision flag on the floating-point unit. *Note Optimize Options::. *************** File: g77.info, Node: Inconsistent Call *** 19082,19088 **** Inconsistent Calling Sequences ------------------------------ ! Code containing inconsistent calling sequences in the same file is normally rejected--see *Note GLOBALS::. (Use, say, `ftnchek' to ensure consistency across source files. *Note Generating Skeletons and Prototypes with `f2c': f2c Skeletons and Prototypes.) --- 19080,19086 ---- Inconsistent Calling Sequences ------------------------------ ! Code containing inconsistent calling sequences in the same file is normally rejected--see *Note GLOBALS::. (Use, say, `ftnchek' to ensure consistency across source files. *Note Generating Skeletons and Prototypes with `f2c': f2c Skeletons and Prototypes.) *************** File: g77.info, Node: Overly Convenient *** 19102,19113 **** Overly Convenient Command-line Options ====================================== ! These options should be used only as a quick-and-dirty way to ! determine how well your program will run under different compilation ! models without having to change the source. Some are more problematic ! than others, depending on how portable and maintainable you want the ! program to be (and, of course, whether you are allowed to change it at ! all is crucial). You should not continue to use these command-line options to compile a given program, but rather should make changes to the source code: --- 19100,19111 ---- Overly Convenient Command-line Options ====================================== ! These options should be used only as a quick-and-dirty way to determine ! how well your program will run under different compilation models ! without having to change the source. Some are more problematic than ! others, depending on how portable and maintainable you want the program ! to be (and, of course, whether you are allowed to change it at all is ! crucial). You should not continue to use these command-line options to compile a given program, but rather should make changes to the source code: *************** File: g77.info, Node: Faster Programs, *** 19170,19178 **** Faster Programs =============== ! Aside from the usual `gcc' options, such as `-O', `-ffast-math', and ! so on, consider trying some of the following approaches to speed up ! your program (once you get it working). * Menu: --- 19168,19176 ---- Faster Programs =============== ! Aside from the usual `gcc' options, such as `-O', `-ffast-math', and so ! on, consider trying some of the following approaches to speed up your ! program (once you get it working). * Menu: *************** File: g77.info, Node: Aligned Data, Ne *** 19187,19193 **** Aligned Data ------------ ! On some systems, such as those with Pentium Pro CPUs, programs that make heavy use of `REAL(KIND=2)' (`DOUBLE PRECISION') might run much slower than possible due to the compiler not aligning these 64-bit values to 64-bit boundaries in memory. (The effect also is present, --- 19185,19191 ---- Aligned Data ------------ ! On some systems, such as those with Pentium Pro CPUs, programs that make heavy use of `REAL(KIND=2)' (`DOUBLE PRECISION') might run much slower than possible due to the compiler not aligning these 64-bit values to 64-bit boundaries in memory. (The effect also is present, *************** File: g77.info, Node: Prefer Automatic *** 19283,19289 **** Prefer Automatic Uninitialized Variables ---------------------------------------- ! If you're using `-fno-automatic' already, you probably should change your code to allow compilation with `-fautomatic' (the default), to allow the program to run faster. --- 19281,19287 ---- Prefer Automatic Uninitialized Variables ---------------------------------------- ! If you're using `-fno-automatic' already, you probably should change your code to allow compilation with `-fautomatic' (the default), to allow the program to run faster. *************** File: g77.info, Node: Avoid f2c Compati *** 19312,19320 **** Avoid f2c Compatibility ----------------------- ! If you aren't linking with any code compiled using `f2c', try using ! the `-fno-f2c' option when compiling _all_ the code in your program. ! (Note that `libf2c' is _not_ an example of code that is compiled using `f2c'--it is compiled by a C compiler, typically `gcc'.)  --- 19310,19318 ---- Avoid f2c Compatibility ----------------------- ! If you aren't linking with any code compiled using `f2c', try using the ! `-fno-f2c' option when compiling _all_ the code in your program. (Note ! that `libf2c' is _not_ an example of code that is compiled using `f2c'--it is compiled by a C compiler, typically `gcc'.)  *************** File: g77.info, Node: Use Submodel Opti *** 19323,19332 **** Use Submodel Options -------------------- ! Using an appropriate `-m' option to generate specific code for your ! CPU may be worthwhile, though it may mean the executable won't run on ! other versions of the CPU that don't support the same instruction set. ! *Note Hardware Models and Configurations: (gcc)Submodel Options. For instance on an x86 system the compiler might have been built--as shown by `g77 -v'--for the target `i386-pc-linux-gnu', i.e. an `i386' CPU. In that case to generate code best optimized for a Pentium you could --- 19321,19330 ---- Use Submodel Options -------------------- ! Using an appropriate `-m' option to generate specific code for your CPU ! may be worthwhile, though it may mean the executable won't run on other ! versions of the CPU that don't support the same instruction set. *Note ! Hardware Models and Configurations: (gcc)Submodel Options. For instance on an x86 system the compiler might have been built--as shown by `g77 -v'--for the target `i386-pc-linux-gnu', i.e. an `i386' CPU. In that case to generate code best optimized for a Pentium you could *************** File: g77.info, Node: Trouble, Next: O *** 19346,19355 **** Known Causes of Trouble with GNU Fortran **************************************** ! This section describes known problems that affect users of GNU ! Fortran. Most of these are not GNU Fortran bugs per se--if they were, ! we would fix them. But the result for a user might be like the result ! of a bug. Some of these problems are due to bugs in other software, some are missing features that are too much work to add, and some are places --- 19344,19352 ---- Known Causes of Trouble with GNU Fortran **************************************** ! This section describes known problems that affect users of GNU Fortran. ! Most of these are not GNU Fortran bugs per se--if they were, we would ! fix them. But the result for a user might be like the result of a bug. Some of these problems are due to bugs in other software, some are missing features that are too much work to add, and some are places *************** File: g77.info, Node: But-bugs, Next: *** 19380,19387 **** Bugs Not In GNU Fortran ======================= ! These are bugs to which the maintainers often have to reply, "but ! that isn't a bug in `g77'...". Some of these already are fixed in new versions of other software; some still need to be fixed; some are problems with how `g77' is installed or is being used; some are the result of bad hardware that causes software to misbehave in sometimes --- 19377,19384 ---- Bugs Not In GNU Fortran ======================= ! These are bugs to which the maintainers often have to reply, "but that ! isn't a bug in `g77'...". Some of these already are fixed in new versions of other software; some still need to be fixed; some are problems with how `g77' is installed or is being used; some are the result of bad hardware that causes software to misbehave in sometimes *************** File: g77.info, Node: Signal 11 and Fri *** 19419,19425 **** Signal 11 and Friends --------------------- ! A whole variety of strange behaviors can occur when the software, or the way you are using the software, stresses the hardware in a way that triggers hardware bugs. This might seem hard to believe, but it happens frequently enough that there exist documents explaining in --- 19416,19422 ---- Signal 11 and Friends --------------------- ! A whole variety of strange behaviors can occur when the software, or the way you are using the software, stresses the hardware in a way that triggers hardware bugs. This might seem hard to believe, but it happens frequently enough that there exist documents explaining in *************** File: g77.info, Node: Cannot Link Fortr *** 19466,19472 **** Cannot Link Fortran Programs ---------------------------- ! On some systems, perhaps just those with out-of-date (shared?) libraries, unresolved-reference errors happen when linking `g77'-compiled programs (which should be done using `g77'). --- 19463,19469 ---- Cannot Link Fortran Programs ---------------------------- ! On some systems, perhaps just those with out-of-date (shared?) libraries, unresolved-reference errors happen when linking `g77'-compiled programs (which should be done using `g77'). *************** File: g77.info, Node: Large Common Bloc *** 19495,19501 **** Large Common Blocks ------------------- ! On some older GNU/Linux systems, programs with common blocks larger than 16MB cannot be linked without some kind of error message being produced. --- 19492,19498 ---- Large Common Blocks ------------------- ! On some older GNU/Linux systems, programs with common blocks larger than 16MB cannot be linked without some kind of error message being produced. *************** File: g77.info, Node: Debugger Problems *** 19508,19514 **** Debugger Problems ----------------- ! There are some known problems when using `gdb' on code compiled by `g77'. Inadequate investigation as of the release of 0.5.16 results in not knowing which products are the culprit, but `gdb-4.14' definitely crashes when, for example, an attempt is made to print the contents of --- 19505,19511 ---- Debugger Problems ----------------- ! There are some known problems when using `gdb' on code compiled by `g77'. Inadequate investigation as of the release of 0.5.16 results in not knowing which products are the culprit, but `gdb-4.14' definitely crashes when, for example, an attempt is made to print the contents of *************** File: g77.info, Node: NeXTStep Problems *** 19523,19529 **** NeXTStep Problems ----------------- ! Developers of Fortran code on NeXTStep (all architectures) have to watch out for the following problem when writing programs with large, statically allocated (i.e. non-stack based) data structures (common blocks, saved arrays). --- 19520,19526 ---- NeXTStep Problems ----------------- ! Developers of Fortran code on NeXTStep (all architectures) have to watch out for the following problem when writing programs with large, statically allocated (i.e. non-stack based) data structures (common blocks, saved arrays). *************** File: g77.info, Node: Stack Overflow, *** 19570,19576 **** Stack Overflow -------------- ! `g77' code might fail at runtime (probably with a "segmentation violation") due to overflowing the stack. This happens most often on systems with an environment that provides substantially more heap space (for use when arbitrarily allocating and freeing memory) than stack --- 19567,19573 ---- Stack Overflow -------------- ! `g77' code might fail at runtime (probably with a "segmentation violation") due to overflowing the stack. This happens most often on systems with an environment that provides substantially more heap space (for use when arbitrarily allocating and freeing memory) than stack *************** File: g77.info, Node: Nothing Happens, *** 19629,19638 **** Nothing Happens --------------- ! It is occasionally reported that a "simple" program, such as a ! "Hello, World!" program, does nothing when it is run, even though the ! compiler reported no errors, despite the program containing nothing ! other than a simple `PRINT' statement. This most often happens because the program has been compiled and linked on a UNIX system and named `test', though other names can lead --- 19626,19635 ---- Nothing Happens --------------- ! It is occasionally reported that a "simple" program, such as a "Hello, ! World!" program, does nothing when it is run, even though the compiler ! reported no errors, despite the program containing nothing other than a ! simple `PRINT' statement. This most often happens because the program has been compiled and linked on a UNIX system and named `test', though other names can lead *************** File: g77.info, Node: Strange Behavior *** 19670,19676 **** Strange Behavior at Run Time ---------------------------- ! `g77' code might fail at runtime with "segmentation violation", "bus error", or even something as subtle as a procedure call overwriting a variable or array element that it is not supposed to touch. --- 19667,19673 ---- Strange Behavior at Run Time ---------------------------- ! `g77' code might fail at runtime with "segmentation violation", "bus error", or even something as subtle as a procedure call overwriting a variable or array element that it is not supposed to touch. *************** File: g77.info, Node: Floating-point Er *** 19724,19730 **** Floating-point Errors --------------------- ! Some programs appear to produce inconsistent floating-point results compiled by `g77' versus by other compilers. Often the reason for this behavior is the fact that floating-point --- 19721,19727 ---- Floating-point Errors --------------------- ! Some programs appear to produce inconsistent floating-point results compiled by `g77' versus by other compilers. Often the reason for this behavior is the fact that floating-point *************** Known Bugs In GNU Fortran *** 19854,19860 **** ========================= This section identifies bugs that `g77' _users_ might run into in ! the GCC-3.3.2 version of `g77'. This includes bugs that are actually in the `gcc' back end (GBE) or in `libf2c', because those sets of code are at least somewhat under the control of (and necessarily intertwined with) `g77', so it isn't worth separating them out. --- 19851,19857 ---- ========================= This section identifies bugs that `g77' _users_ might run into in ! the GCC-3.3.3 version of `g77'. This includes bugs that are actually in the `gcc' back end (GBE) or in `libf2c', because those sets of code are at least somewhat under the control of (and necessarily intertwined with) `g77', so it isn't worth separating them out. *************** File: g77.info, Node: Missing Features, *** 20003,20011 **** Missing Features ================ ! This section lists features we know are missing from `g77', and ! which we want to add someday. (There is no priority implied in the ! ordering below.) * Menu: --- 20000,20008 ---- Missing Features ================ ! This section lists features we know are missing from `g77', and which ! we want to add someday. (There is no priority implied in the ordering ! below.) * Menu: *************** File: g77.info, Node: Better Source Mod *** 20078,20084 **** Better Source Model ------------------- ! `g77' needs to provide, as the default source-line model, a "pure visual" mode, where the interpretation of a source program in this mode can be accurately determined by a user looking at a traditionally displayed rendition of the program (assuming the user knows whether the --- 20075,20081 ---- Better Source Model ------------------- ! `g77' needs to provide, as the default source-line model, a "pure visual" mode, where the interpretation of a source program in this mode can be accurately determined by a user looking at a traditionally displayed rendition of the program (assuming the user knows whether the *************** File: g77.info, Node: Fortran 90 Suppor *** 20115,20122 **** Fortran 90 Support ------------------ ! `g77' does not support many of the features that distinguish Fortran ! 90 (and, now, Fortran 95) from ANSI FORTRAN 77. Some Fortran 90 features are supported, because they make sense to offer even to die-hard users of F77. For example, many of them codify --- 20112,20119 ---- Fortran 90 Support ------------------ ! `g77' does not support many of the features that distinguish Fortran 90 ! (and, now, Fortran 95) from ANSI FORTRAN 77. Some Fortran 90 features are supported, because they make sense to offer even to die-hard users of F77. For example, many of them codify *************** File: g77.info, Node: Intrinsics in PAR *** 20138,20144 **** Intrinsics in `PARAMETER' Statements ------------------------------------ ! `g77' doesn't allow intrinsics in `PARAMETER' statements. Related to this, `g77' doesn't allow non-integral exponentiation in `PARAMETER' statements, such as `PARAMETER (R=2**.25)'. It is unlikely --- 20135,20141 ---- Intrinsics in `PARAMETER' Statements ------------------------------------ ! `g77' doesn't allow intrinsics in `PARAMETER' statements. Related to this, `g77' doesn't allow non-integral exponentiation in `PARAMETER' statements, such as `PARAMETER (R=2**.25)'. It is unlikely *************** File: g77.info, Node: Arbitrary Concate *** 20154,20161 **** Arbitrary Concatenation ----------------------- ! `g77' doesn't support arbitrary operands for concatenation in ! contexts where run-time allocation is required. For example: SUBROUTINE X(A) CHARACTER*(*) A --- 20151,20158 ---- Arbitrary Concatenation ----------------------- ! `g77' doesn't support arbitrary operands for concatenation in contexts ! where run-time allocation is required. For example: SUBROUTINE X(A) CHARACTER*(*) A *************** File: g77.info, Node: SELECT CASE on CH *** 20167,20173 **** `SELECT CASE' on `CHARACTER' Type --------------------------------- ! Character-type selector/cases for `SELECT CASE' currently are not supported.  --- 20164,20170 ---- `SELECT CASE' on `CHARACTER' Type --------------------------------- ! Character-type selector/cases for `SELECT CASE' currently are not supported.  *************** File: g77.info, Node: RECURSIVE Keyword *** 20176,20182 **** `RECURSIVE' Keyword ------------------- ! `g77' doesn't support the `RECURSIVE' keyword that F90 compilers do. Nor does it provide any means for compiling procedures designed to do recursion. --- 20173,20179 ---- `RECURSIVE' Keyword ------------------- ! `g77' doesn't support the `RECURSIVE' keyword that F90 compilers do. Nor does it provide any means for compiling procedures designed to do recursion. *************** File: g77.info, Node: Increasing Precis *** 20189,20198 **** Increasing Precision/Range -------------------------- ! Some compilers, such as `f2c', have an option (`-r8', `-qrealsize=8' ! or similar) that provides automatic treatment of `REAL' entities such ! that they have twice the storage size, and a corresponding increase in ! the range and precision, of what would normally be the `REAL(KIND=1)' (default `REAL') type. (This affects `COMPLEX' the same way.) They also typically offer another option (`-i8') to increase --- 20186,20195 ---- Increasing Precision/Range -------------------------- ! Some compilers, such as `f2c', have an option (`-r8', `-qrealsize=8' or ! similar) that provides automatic treatment of `REAL' entities such that ! they have twice the storage size, and a corresponding increase in the ! range and precision, of what would normally be the `REAL(KIND=1)' (default `REAL') type. (This affects `COMPLEX' the same way.) They also typically offer another option (`-i8') to increase *************** File: g77.info, Node: Popular Non-stand *** 20223,20230 **** Popular Non-standard Types -------------------------- ! `g77' doesn't fully support `INTEGER*2', `LOGICAL*1', and similar. ! In the meantime, version 0.5.18 provides rudimentary support for them.  File: g77.info, Node: Full Support for Compiler Types, Next: Array Bounds Expressions, Prev: Popular Non-standard Types, Up: Missing Features --- 20220,20227 ---- Popular Non-standard Types -------------------------- ! `g77' doesn't fully support `INTEGER*2', `LOGICAL*1', and similar. In ! the meantime, version 0.5.18 provides rudimentary support for them.  File: g77.info, Node: Full Support for Compiler Types, Next: Array Bounds Expressions, Prev: Popular Non-standard Types, Up: Missing Features *************** File: g77.info, Node: Full Support for *** 20232,20244 **** Full Support for Compiler Types ------------------------------- ! `g77' doesn't support `INTEGER', `REAL', and `COMPLEX' equivalents ! for _all_ applicable back-end-supported types (`char', `short int', ! `int', `long int', `long long int', and `long double'). This means ! providing intrinsic support, and maybe constant support (using F90 ! syntax) as well, and, for most machines will result in automatic ! support of `INTEGER*1', `INTEGER*2', `INTEGER*8', maybe even `REAL*16', ! and so on.  File: g77.info, Node: Array Bounds Expressions, Next: POINTER Statements, Prev: Full Support for Compiler Types, Up: Missing Features --- 20229,20240 ---- Full Support for Compiler Types ------------------------------- ! `g77' doesn't support `INTEGER', `REAL', and `COMPLEX' equivalents for ! _all_ applicable back-end-supported types (`char', `short int', `int', ! `long int', `long long int', and `long double'). This means providing ! intrinsic support, and maybe constant support (using F90 syntax) as ! well, and, for most machines will result in automatic support of ! `INTEGER*1', `INTEGER*2', `INTEGER*8', maybe even `REAL*16', and so on.  File: g77.info, Node: Array Bounds Expressions, Next: POINTER Statements, Prev: Full Support for Compiler Types, Up: Missing Features *************** File: g77.info, Node: Array Bounds Expr *** 20246,20252 **** Array Bounds Expressions ------------------------ ! `g77' doesn't support more general expressions to dimension arrays, such as array element references, function references, etc. For example, `g77' currently does not accept the following: --- 20242,20248 ---- Array Bounds Expressions ------------------------ ! `g77' doesn't support more general expressions to dimension arrays, such as array element references, function references, etc. For example, `g77' currently does not accept the following: *************** File: g77.info, Node: POINTER Statement *** 20260,20266 **** POINTER Statements ------------------ ! `g77' doesn't support pointers or allocatable objects (other than automatic arrays). This set of features is probably considered just behind intrinsics in `PARAMETER' statements on the list of large, important things to add to `g77'. --- 20256,20262 ---- POINTER Statements ------------------ ! `g77' doesn't support pointers or allocatable objects (other than automatic arrays). This set of features is probably considered just behind intrinsics in `PARAMETER' statements on the list of large, important things to add to `g77'. *************** File: g77.info, Node: Sensible Non-stan *** 20280,20290 **** Sensible Non-standard Constructs -------------------------------- ! `g77' rejects things other compilers accept, like `INTRINSIC ! SQRT,SQRT'. As time permits in the future, some of these things that ! are easy for humans to read and write and unlikely to be intended to ! mean something else will be accepted by `g77' (though `-fpedantic' ! should trigger warnings about such non-standard constructs). Until `g77' no longer gratuitously rejects sensible code, you might as well fix your code to be more standard-conforming and portable. --- 20276,20286 ---- Sensible Non-standard Constructs -------------------------------- ! `g77' rejects things other compilers accept, like `INTRINSIC SQRT,SQRT'. ! As time permits in the future, some of these things that are easy for ! humans to read and write and unlikely to be intended to mean something ! else will be accepted by `g77' (though `-fpedantic' should trigger ! warnings about such non-standard constructs). Until `g77' no longer gratuitously rejects sensible code, you might as well fix your code to be more standard-conforming and portable. *************** File: g77.info, Node: READONLY Keyword, *** 20327,20337 **** `READONLY' Keyword ------------------ ! Support for `READONLY', in `OPEN' statements, requires `libg2c' ! support, to make sure that `CLOSE(...,STATUS='DELETE')' does not delete ! a file opened on a unit with the `READONLY' keyword, and perhaps to ! trigger a fatal diagnostic if a `WRITE' or `PRINT' to such a unit is ! attempted. _Note:_ It is not sufficient for `g77' and `libg2c' (its version of `libf2c') to assume that `READONLY' does not need some kind of explicit --- 20323,20332 ---- `READONLY' Keyword ------------------ ! Support for `READONLY', in `OPEN' statements, requires `libg2c' support, ! to make sure that `CLOSE(...,STATUS='DELETE')' does not delete a file ! opened on a unit with the `READONLY' keyword, and perhaps to trigger a ! fatal diagnostic if a `WRITE' or `PRINT' to such a unit is attempted. _Note:_ It is not sufficient for `g77' and `libg2c' (its version of `libf2c') to assume that `READONLY' does not need some kind of explicit *************** File: g77.info, Node: FLUSH Statement, *** 20350,20358 **** `FLUSH' Statement ----------------- ! `g77' could perhaps use a `FLUSH' statement that does what `CALL ! FLUSH' does, but that supports `*' as the unit designator (same unit as ! for `PRINT') and accepts `ERR=' and/or `IOSTAT=' specifiers.  File: g77.info, Node: Expressions in FORMAT Statements, Next: Explicit Assembler Code, Prev: FLUSH Statement, Up: Missing Features --- 20345,20353 ---- `FLUSH' Statement ----------------- ! `g77' could perhaps use a `FLUSH' statement that does what `CALL FLUSH' ! does, but that supports `*' as the unit designator (same unit as for ! `PRINT') and accepts `ERR=' and/or `IOSTAT=' specifiers.  File: g77.info, Node: Expressions in FORMAT Statements, Next: Explicit Assembler Code, Prev: FLUSH Statement, Up: Missing Features *************** File: g77.info, Node: Expressions in FO *** 20360,20366 **** Expressions in `FORMAT' Statements ---------------------------------- ! `g77' doesn't support `FORMAT(I)' and the like. Supporting this requires a significant redesign or replacement of `libg2c'. However, `g77' does support this construct when the expression is --- 20355,20361 ---- Expressions in `FORMAT' Statements ---------------------------------- ! `g77' doesn't support `FORMAT(I)' and the like. Supporting this requires a significant redesign or replacement of `libg2c'. However, `g77' does support this construct when the expression is *************** File: g77.info, Node: Explicit Assemble *** 20393,20400 **** Explicit Assembler Code ----------------------- ! `g77' needs to provide some way, a la `gcc', for `g77' code to ! specify explicit assembler code.  File: g77.info, Node: Q Edit Descriptor, Next: Old-style PARAMETER Statements, Prev: Explicit Assembler Code, Up: Missing Features --- 20388,20395 ---- Explicit Assembler Code ----------------------- ! `g77' needs to provide some way, a la `gcc', for `g77' code to specify ! explicit assembler code.  File: g77.info, Node: Q Edit Descriptor, Next: Old-style PARAMETER Statements, Prev: Explicit Assembler Code, Up: Missing Features *************** File: g77.info, Node: Q Edit Descriptor *** 20402,20409 **** Q Edit Descriptor ----------------- ! The `Q' edit descriptor in `FORMAT's isn't supported. (This is ! meant to get the number of characters remaining in an input record.) Supporting this requires a significant redesign or replacement of `libg2c'. --- 20397,20404 ---- Q Edit Descriptor ----------------- ! The `Q' edit descriptor in `FORMAT's isn't supported. (This is meant ! to get the number of characters remaining in an input record.) Supporting this requires a significant redesign or replacement of `libg2c'. *************** File: g77.info, Node: Old-style PARAMET *** 20416,20424 **** Old-style PARAMETER Statements ------------------------------ ! `g77' doesn't accept `PARAMETER I=1'. Supporting this obsolete form ! of the `PARAMETER' statement would not be particularly hard, as most of ! the parsing code is already in place and working. Until time/money is spent implementing it, you might as well fix your code to use the standard form, `PARAMETER (I=1)' (possibly needing --- 20411,20419 ---- Old-style PARAMETER Statements ------------------------------ ! `g77' doesn't accept `PARAMETER I=1'. Supporting this obsolete form of ! the `PARAMETER' statement would not be particularly hard, as most of the ! parsing code is already in place and working. Until time/money is spent implementing it, you might as well fix your code to use the standard form, `PARAMETER (I=1)' (possibly needing *************** File: g77.info, Node: TYPE and ACCEPT I *** 20432,20438 **** `TYPE' and `ACCEPT' I/O Statements ---------------------------------- ! `g77' doesn't support the I/O statements `TYPE' and `ACCEPT'. These are common extensions that should be easy to support, but also are fairly easy to work around in user code. --- 20427,20433 ---- `TYPE' and `ACCEPT' I/O Statements ---------------------------------- ! `g77' doesn't support the I/O statements `TYPE' and `ACCEPT'. These are common extensions that should be easy to support, but also are fairly easy to work around in user code. *************** File: g77.info, Node: STRUCTURE UNION R *** 20446,20453 **** `STRUCTURE', `UNION', `RECORD', `MAP' ------------------------------------- ! `g77' doesn't support `STRUCTURE', `UNION', `RECORD', `MAP'. This ! set of extensions is quite a bit lower on the list of large, important things to add to `g77', partly because it requires a great deal of work either upgrading or replacing `libg2c'. --- 20441,20448 ---- `STRUCTURE', `UNION', `RECORD', `MAP' ------------------------------------- ! `g77' doesn't support `STRUCTURE', `UNION', `RECORD', `MAP'. This set ! of extensions is quite a bit lower on the list of large, important things to add to `g77', partly because it requires a great deal of work either upgrading or replacing `libg2c'. *************** File: g77.info, Node: OPEN CLOSE and IN *** 20457,20465 **** `OPEN', `CLOSE', and `INQUIRE' Keywords --------------------------------------- ! `g77' doesn't have support for keywords such as `DISP='DELETE'' in ! the `OPEN', `CLOSE', and `INQUIRE' statements. These extensions are ! easy to add to `g77' itself, but require much more work on `libg2c'. `g77' doesn't support `FORM='PRINT'' or an equivalent to translate the traditional `carriage control' characters in column 1 of output to --- 20452,20460 ---- `OPEN', `CLOSE', and `INQUIRE' Keywords --------------------------------------- ! `g77' doesn't have support for keywords such as `DISP='DELETE'' in the ! `OPEN', `CLOSE', and `INQUIRE' statements. These extensions are easy ! to add to `g77' itself, but require much more work on `libg2c'. `g77' doesn't support `FORM='PRINT'' or an equivalent to translate the traditional `carriage control' characters in column 1 of output to *************** File: g77.info, Node: ENCODE and DECODE *** 20476,20482 **** `ENCODE' and `DECODE' --------------------- ! `g77' doesn't support `ENCODE' or `DECODE'. These statements are best replaced by READ and WRITE statements involving internal files (CHARACTER variables and arrays). --- 20471,20477 ---- `ENCODE' and `DECODE' --------------------- ! `g77' doesn't support `ENCODE' or `DECODE'. These statements are best replaced by READ and WRITE statements involving internal files (CHARACTER variables and arrays). *************** File: g77.info, Node: AUTOMATIC Stateme *** 20522,20528 **** `AUTOMATIC' Statement --------------------- ! `g77' doesn't support the `AUTOMATIC' statement that `f2c' does. `AUTOMATIC' would identify a variable or array as not being `SAVE''d, which is normally the default, but which would be especially --- 20517,20523 ---- `AUTOMATIC' Statement --------------------- ! `g77' doesn't support the `AUTOMATIC' statement that `f2c' does. `AUTOMATIC' would identify a variable or array as not being `SAVE''d, which is normally the default, but which would be especially *************** File: g77.info, Node: Suppressing Space *** 20555,20562 **** Suppressing Space Padding of Source Lines ----------------------------------------- ! `g77' should offer VXT-Fortran-style suppression of virtual spaces ! at the end of a source line if an appropriate command-line option is specified. This affects cases where a character constant is continued onto the --- 20550,20557 ---- Suppressing Space Padding of Source Lines ----------------------------------------- ! `g77' should offer VXT-Fortran-style suppression of virtual spaces at ! the end of a source line if an appropriate command-line option is specified. This affects cases where a character constant is continued onto the *************** File: g77.info, Node: Fortran Preproces *** 20583,20590 **** Fortran Preprocessor -------------------- ! `g77' should offer a preprocessor designed specifically for Fortran ! to replace `cpp -traditional'. There are several out there worth evaluating, at least. Such a preprocessor would recognize Hollerith constants, properly --- 20578,20585 ---- Fortran Preprocessor -------------------- ! `g77' should offer a preprocessor designed specifically for Fortran to ! replace `cpp -traditional'. There are several out there worth evaluating, at least. Such a preprocessor would recognize Hollerith constants, properly *************** File: g77.info, Node: Bit Operations on *** 20598,20605 **** Bit Operations on Floating-point Data ------------------------------------- ! `g77' does not allow `REAL' and other non-integral types for ! arguments to intrinsics like `And', `Or', and `Shift'. For example, this program is rejected by `g77', because the intrinsic `Iand' does not accept `REAL' arguments: --- 20593,20600 ---- Bit Operations on Floating-point Data ------------------------------------- ! `g77' does not allow `REAL' and other non-integral types for arguments ! to intrinsics like `And', `Or', and `Shift'. For example, this program is rejected by `g77', because the intrinsic `Iand' does not accept `REAL' arguments: *************** File: g77.info, Node: Really Ugly Chara *** 20614,20620 **** Really Ugly Character Assignments --------------------------------- ! An option such as `-fugly-char' should be provided to allow REAL*8 A1 DATA A1 / '12345678' / --- 20609,20615 ---- Really Ugly Character Assignments --------------------------------- ! An option such as `-fugly-char' should be provided to allow REAL*8 A1 DATA A1 / '12345678' / *************** File: g77.info, Node: POSIX Standard, *** 20630,20636 **** `POSIX' Standard ---------------- ! `g77' should support the POSIX standard for Fortran.  File: g77.info, Node: Floating-point Exception Handling, Next: Nonportable Conversions, Prev: POSIX Standard, Up: Missing Features --- 20625,20631 ---- `POSIX' Standard ---------------- ! `g77' should support the POSIX standard for Fortran.  File: g77.info, Node: Floating-point Exception Handling, Next: Nonportable Conversions, Prev: POSIX Standard, Up: Missing Features *************** File: g77.info, Node: Floating-point Ex *** 20638,20644 **** Floating-point Exception Handling --------------------------------- ! The `gcc' backend and, consequently, `g77', currently provides no general control over whether or not floating-point exceptions are trapped or ignored. (Ignoring them typically results in NaN values being propagated in systems that conform to IEEE 754.) The behavior is --- 20633,20639 ---- Floating-point Exception Handling --------------------------------- ! The `gcc' backend and, consequently, `g77', currently provides no general control over whether or not floating-point exceptions are trapped or ignored. (Ignoring them typically results in NaN values being propagated in systems that conform to IEEE 754.) The behavior is *************** File: g77.info, Node: Nonportable Conve *** 20673,20679 **** Nonportable Conversions ----------------------- ! `g77' doesn't accept some particularly nonportable, silent data-type conversions such as `LOGICAL' to `REAL' (as in `A=.FALSE.', where `A' is type `REAL'), that other compilers might quietly accept. --- 20668,20674 ---- Nonportable Conversions ----------------------- ! `g77' doesn't accept some particularly nonportable, silent data-type conversions such as `LOGICAL' to `REAL' (as in `A=.FALSE.', where `A' is type `REAL'), that other compilers might quietly accept. *************** File: g77.info, Node: Large Automatic A *** 20687,20693 **** Large Automatic Arrays ---------------------- ! Currently, automatic arrays always are allocated on the stack. For situations where the stack cannot be made large enough, `g77' should offer a compiler option that specifies allocation of automatic arrays in heap storage. --- 20682,20688 ---- Large Automatic Arrays ---------------------- ! Currently, automatic arrays always are allocated on the stack. For situations where the stack cannot be made large enough, `g77' should offer a compiler option that specifies allocation of automatic arrays in heap storage. *************** File: g77.info, Node: Support for Threa *** 20698,20704 **** Support for Threads ------------------- ! Neither the code produced by `g77' nor the `libg2c' library are thread-safe, nor does `g77' have support for parallel processing (other than the instruction-level parallelism available on some processors). A package such as PVM might help here. --- 20693,20699 ---- Support for Threads ------------------- ! Neither the code produced by `g77' nor the `libg2c' library are thread-safe, nor does `g77' have support for parallel processing (other than the instruction-level parallelism available on some processors). A package such as PVM might help here. *************** File: g77.info, Node: Enabling Debug Li *** 20709,20717 **** Enabling Debug Lines -------------------- ! An option such as `-fdebug-lines' should be provided to turn ! fixed-form lines beginning with `D' to be treated as if they began with ! a space, instead of as if they began with a `C' (as comment lines).  File: g77.info, Node: Better Warnings, Next: Gracefully Handle Sensible Bad Code, Prev: Enabling Debug Lines, Up: Missing Features --- 20704,20712 ---- Enabling Debug Lines -------------------- ! An option such as `-fdebug-lines' should be provided to turn fixed-form ! lines beginning with `D' to be treated as if they began with a space, ! instead of as if they began with a `C' (as comment lines).  File: g77.info, Node: Better Warnings, Next: Gracefully Handle Sensible Bad Code, Prev: Enabling Debug Lines, Up: Missing Features *************** File: g77.info, Node: Better Warnings, *** 20719,20726 **** Better Warnings --------------- ! Because of how `g77' generates code via the back end, it doesn't ! always provide warnings the user wants. Consider: PROGRAM X PRINT *, A --- 20714,20721 ---- Better Warnings --------------- ! Because of how `g77' generates code via the back end, it doesn't always ! provide warnings the user wants. Consider: PROGRAM X PRINT *, A *************** File: g77.info, Node: Gracefully Handle *** 20763,20771 **** Gracefully Handle Sensible Bad Code ----------------------------------- ! `g77' generally should continue processing for warnings and ! recoverable (user) errors whenever possible--that is, it shouldn't ! gratuitously make bad or useless code. For example: --- 20758,20766 ---- Gracefully Handle Sensible Bad Code ----------------------------------- ! `g77' generally should continue processing for warnings and recoverable ! (user) errors whenever possible--that is, it shouldn't gratuitously ! make bad or useless code. For example: *************** File: g77.info, Node: Non-standard Conv *** 20785,20791 **** Non-standard Conversions ------------------------ ! `-Wconversion' and related should flag places where non-standard conversions are found. Perhaps much of this would be part of `-Wugly*'.  --- 20780,20786 ---- Non-standard Conversions ------------------------ ! `-Wconversion' and related should flag places where non-standard conversions are found. Perhaps much of this would be part of `-Wugly*'.  *************** File: g77.info, Node: Non-standard Intr *** 20794,20800 **** Non-standard Intrinsics ----------------------- ! `g77' needs a new option, like `-Wintrinsics', to warn about use of non-standard intrinsics without explicit `INTRINSIC' statements for them. This would help find code that might fail silently when ported to another compiler. --- 20789,20795 ---- Non-standard Intrinsics ----------------------- ! `g77' needs a new option, like `-Wintrinsics', to warn about use of non-standard intrinsics without explicit `INTRINSIC' statements for them. This would help find code that might fail silently when ported to another compiler. *************** File: g77.info, Node: Modifying DO Vari *** 20805,20811 **** Modifying `DO' Variable ----------------------- ! `g77' should warn about modifying `DO' variables via `EQUIVALENCE'. (The internal information gathered to produce this warning might also be useful in setting the internal "doiter" flag for a variable or even array reference within a loop, since that might produce faster code --- 20800,20806 ---- Modifying `DO' Variable ----------------------- ! `g77' should warn about modifying `DO' variables via `EQUIVALENCE'. (The internal information gathered to produce this warning might also be useful in setting the internal "doiter" flag for a variable or even array reference within a loop, since that might produce faster code *************** File: g77.info, Node: Better Pedantic C *** 20825,20832 **** Better Pedantic Compilation --------------------------- ! `g77' needs to support `-fpedantic' more thoroughly, and use it only ! to generate warnings instead of rejecting constructs outright. Have it warn: if a variable that dimensions an array is not a dummy or placed explicitly in `COMMON' (F77 does not allow it to be placed in `COMMON' via `EQUIVALENCE'); if specification statements follow --- 20820,20827 ---- Better Pedantic Compilation --------------------------- ! `g77' needs to support `-fpedantic' more thoroughly, and use it only to ! generate warnings instead of rejecting constructs outright. Have it warn: if a variable that dimensions an array is not a dummy or placed explicitly in `COMMON' (F77 does not allow it to be placed in `COMMON' via `EQUIVALENCE'); if specification statements follow *************** File: g77.info, Node: Warn About Implic *** 20839,20846 **** Warn About Implicit Conversions ------------------------------- ! `g77' needs a `-Wpromotions' option to warn if source code appears ! to expect automatic, silent, and somewhat dangerous compiler-assisted conversion of `REAL(KIND=1)' constants to `REAL(KIND=2)' based on context. --- 20834,20841 ---- Warn About Implicit Conversions ------------------------------- ! `g77' needs a `-Wpromotions' option to warn if source code appears to ! expect automatic, silent, and somewhat dangerous compiler-assisted conversion of `REAL(KIND=1)' constants to `REAL(KIND=2)' based on context. *************** File: g77.info, Node: Invalid Use of Ho *** 20856,20864 **** Invalid Use of Hollerith Constant --------------------------------- ! `g77' should disallow statements like `RETURN 2HAB', which are ! invalid in both source forms (unlike `RETURN (2HAB)', which probably ! still makes no sense but at least can be reliably parsed). Fixed-form processing rejects it, but not free-form, except in a way that is a bit difficult to understand. --- 20851,20859 ---- Invalid Use of Hollerith Constant --------------------------------- ! `g77' should disallow statements like `RETURN 2HAB', which are invalid ! in both source forms (unlike `RETURN (2HAB)', which probably still ! makes no sense but at least can be reliably parsed). Fixed-form processing rejects it, but not free-form, except in a way that is a bit difficult to understand. *************** File: g77.info, Node: Dummy Array Witho *** 20868,20874 **** Dummy Array Without Dimensioning Dummy -------------------------------------- ! `g77' should complain when a list of dummy arguments containing an adjustable dummy array does not also contain every variable listed in the dimension list of the adjustable array. --- 20863,20869 ---- Dummy Array Without Dimensioning Dummy -------------------------------------- ! `g77' should complain when a list of dummy arguments containing an adjustable dummy array does not also contain every variable listed in the dimension list of the adjustable array. *************** File: g77.info, Node: Invalid FORMAT Sp *** 20890,20897 **** Invalid FORMAT Specifiers ------------------------- ! `g77' should check `FORMAT' specifiers for validity as it does ! `FORMAT' statements. For example, a diagnostic would be produced for: --- 20885,20892 ---- Invalid FORMAT Specifiers ------------------------- ! `g77' should check `FORMAT' specifiers for validity as it does `FORMAT' ! statements. For example, a diagnostic would be produced for: *************** File: g77.info, Node: Ambiguous Dialect *** 20903,20912 **** Ambiguous Dialects ------------------ ! `g77' needs a set of options such as `-Wugly*', `-Wautomatic', ! `-Wvxt', `-Wf90', and so on. These would warn about places in the ! user's source where ambiguities are found, helpful in resolving ! ambiguities in the program's dialect or dialects.  File: g77.info, Node: Unused Labels, Next: Informational Messages, Prev: Ambiguous Dialects, Up: Missing Features --- 20898,20907 ---- Ambiguous Dialects ------------------ ! `g77' needs a set of options such as `-Wugly*', `-Wautomatic', `-Wvxt', ! `-Wf90', and so on. These would warn about places in the user's source ! where ambiguities are found, helpful in resolving ambiguities in the ! program's dialect or dialects.  File: g77.info, Node: Unused Labels, Next: Informational Messages, Prev: Ambiguous Dialects, Up: Missing Features *************** File: g77.info, Node: Unused Labels, N *** 20914,20920 **** Unused Labels ------------- ! `g77' should warn about unused labels when `-Wunused' is in effect.  File: g77.info, Node: Informational Messages, Next: Uninitialized Variables at Run Time, Prev: Unused Labels, Up: Missing Features --- 20909,20915 ---- Unused Labels ------------- ! `g77' should warn about unused labels when `-Wunused' is in effect.  File: g77.info, Node: Informational Messages, Next: Uninitialized Variables at Run Time, Prev: Unused Labels, Up: Missing Features *************** File: g77.info, Node: Informational Mes *** 20922,20929 **** Informational Messages ---------------------- ! `g77' needs an option to suppress information messages (notes). ! `-w' does this but also suppresses warnings. The default should be to suppress info messages. Perhaps info messages should simply be eliminated. --- 20917,20924 ---- Informational Messages ---------------------- ! `g77' needs an option to suppress information messages (notes). `-w' ! does this but also suppresses warnings. The default should be to suppress info messages. Perhaps info messages should simply be eliminated. *************** File: g77.info, Node: Uninitialized Var *** 20934,20940 **** Uninitialized Variables at Run Time ----------------------------------- ! `g77' needs an option to initialize everything (not otherwise explicitly initialized) to "weird" (machine-dependent) values, e.g. NaNs, bad (non-`NULL') pointers, and largest-magnitude integers, would help track down references to some kinds of uninitialized variables at --- 20929,20935 ---- Uninitialized Variables at Run Time ----------------------------------- ! `g77' needs an option to initialize everything (not otherwise explicitly initialized) to "weird" (machine-dependent) values, e.g. NaNs, bad (non-`NULL') pointers, and largest-magnitude integers, would help track down references to some kinds of uninitialized variables at *************** File: g77.info, Node: Portable Unformat *** 20949,20955 **** Portable Unformatted Files -------------------------- ! `g77' has no facility for exchanging unformatted files with systems using different number formats--even differing only in endianness (byte order)--or written by other compilers. Some compilers provide facilities at least for doing byte-swapping during unformatted I/O. --- 20944,20950 ---- Portable Unformatted Files -------------------------- ! `g77' has no facility for exchanging unformatted files with systems using different number formats--even differing only in endianness (byte order)--or written by other compilers. Some compilers provide facilities at least for doing byte-swapping during unformatted I/O. *************** File: g77.info, Node: Better List-direc *** 21012,21018 **** Better List-directed I/O ------------------------ ! Values output using list-directed I/O (`PRINT *, R, D') should be written with a field width, precision, and so on appropriate for the type (precision) of each value. --- 21007,21013 ---- Better List-directed I/O ------------------------ ! Values output using list-directed I/O (`PRINT *, R, D') should be written with a field width, precision, and so on appropriate for the type (precision) of each value. *************** File: g77.info, Node: Default to Consol *** 21035,21042 **** Default to Console I/O ---------------------- ! The default I/O units, specified by `READ FMT', `READ (UNIT=*)', ! `WRITE (UNIT=*)', and `PRINT FMT', should not be units 5 (input) and 6 (output), but, rather, unit numbers not normally available for use in statements such as `OPEN' and `CLOSE'. --- 21030,21037 ---- Default to Console I/O ---------------------- ! The default I/O units, specified by `READ FMT', `READ (UNIT=*)', `WRITE ! (UNIT=*)', and `PRINT FMT', should not be units 5 (input) and 6 (output), but, rather, unit numbers not normally available for use in statements such as `OPEN' and `CLOSE'. *************** File: g77.info, Node: Labels Visible to *** 21052,21058 **** Labels Visible to Debugger -------------------------- ! `g77' should output debugging information for statements labels, for use by debuggers that know how to support them. Same with weirder things like construct names. It is not yet known if any debug formats or debuggers support these. --- 21047,21053 ---- Labels Visible to Debugger -------------------------- ! `g77' should output debugging information for statements labels, for use by debuggers that know how to support them. Same with weirder things like construct names. It is not yet known if any debug formats or debuggers support these. *************** File: g77.info, Node: Disappointments, *** 21063,21070 **** Disappointments and Misunderstandings ===================================== ! These problems are perhaps regrettable, but we don't know any ! practical way around them for now. * Menu: --- 21058,21065 ---- Disappointments and Misunderstandings ===================================== ! These problems are perhaps regrettable, but we don't know any practical ! way around them for now. * Menu: *************** File: g77.info, Node: Mangling of Names *** 21080,21086 **** Mangling of Names in Source Code -------------------------------- ! The current external-interface design, which includes naming of external procedures, COMMON blocks, and the library interface, has various usability problems, including things like adding underscores where not really necessary (and preventing easier inter-language --- 21075,21081 ---- Mangling of Names in Source Code -------------------------------- ! The current external-interface design, which includes naming of external procedures, COMMON blocks, and the library interface, has various usability problems, including things like adding underscores where not really necessary (and preventing easier inter-language *************** File: g77.info, Node: Multiple Definiti *** 21099,21107 **** Multiple Definitions of External Names -------------------------------------- ! `g77' doesn't allow a common block and an external procedure or ! `BLOCK DATA' to have the same name. Some systems allow this, but `g77' ! does not, to be compatible with `f2c'. `g77' could special-case the way it handles `BLOCK DATA', since it is not compatible with `f2c' in this particular area (necessarily, --- 21094,21102 ---- Multiple Definitions of External Names -------------------------------------- ! `g77' doesn't allow a common block and an external procedure or `BLOCK ! DATA' to have the same name. Some systems allow this, but `g77' does ! not, to be compatible with `f2c'. `g77' could special-case the way it handles `BLOCK DATA', since it is not compatible with `f2c' in this particular area (necessarily, *************** File: g77.info, Node: Limitation on Imp *** 21128,21134 **** Limitation on Implicit Declarations ----------------------------------- ! `g77' disallows `IMPLICIT CHARACTER*(*)'. This is not standard-conforming.  --- 21123,21129 ---- Limitation on Implicit Declarations ----------------------------------- ! `g77' disallows `IMPLICIT CHARACTER*(*)'. This is not standard-conforming.  *************** File: g77.info, Node: Non-bugs, Next: *** 21137,21144 **** Certain Changes We Don't Want to Make ===================================== ! This section lists changes that people frequently request, but which ! we do not make because we think GNU Fortran is better without them. * Menu: --- 21132,21139 ---- Certain Changes We Don't Want to Make ===================================== ! This section lists changes that people frequently request, but which we ! do not make because we think GNU Fortran is better without them. * Menu: *************** File: g77.info, Node: Backslash in Cons *** 21161,21167 **** Backslash in Constants ---------------------- ! In the opinion of many experienced Fortran users, `-fno-backslash' should be the default, not `-fbackslash', as currently set by `g77'. First of all, you can always specify `-fno-backslash' to turn off --- 21156,21162 ---- Backslash in Constants ---------------------- ! In the opinion of many experienced Fortran users, `-fno-backslash' should be the default, not `-fbackslash', as currently set by `g77'. First of all, you can always specify `-fno-backslash' to turn off *************** File: g77.info, Node: Initializing Befo *** 21262,21269 **** Initializing Before Specifying ------------------------------ ! `g77' does not allow `DATA VAR/1/' to appear in the source code ! before `COMMON VAR', `DIMENSION VAR(10)', `INTEGER VAR', and so on. In general, `g77' requires initialization of a variable or array to be specified _after_ all other specifications of attributes (type, size, placement, and so on) of that variable or array are specified (though --- 21257,21264 ---- Initializing Before Specifying ------------------------------ ! `g77' does not allow `DATA VAR/1/' to appear in the source code before ! `COMMON VAR', `DIMENSION VAR(10)', `INTEGER VAR', and so on. In general, `g77' requires initialization of a variable or array to be specified _after_ all other specifications of attributes (type, size, placement, and so on) of that variable or array are specified (though *************** File: g77.info, Node: Context-Sensitive *** 21287,21293 **** Context-Sensitive Intrinsicness ------------------------------- ! `g77' treats procedure references to _possible_ intrinsic names as always enabling their intrinsic nature, regardless of whether the _form_ of the reference is valid for that intrinsic. --- 21282,21288 ---- Context-Sensitive Intrinsicness ------------------------------- ! `g77' treats procedure references to _possible_ intrinsic names as always enabling their intrinsic nature, regardless of whether the _form_ of the reference is valid for that intrinsic. *************** File: g77.info, Node: Context-Sensitive *** 21332,21340 **** Context-Sensitive Constants --------------------------- ! `g77' does not use context to determine the types of constants or ! named constants (`PARAMETER'), except for (non-standard) typeless ! constants such as `'123'O'. For example, consider the following statement: --- 21327,21335 ---- Context-Sensitive Constants --------------------------- ! `g77' does not use context to determine the types of constants or named ! constants (`PARAMETER'), except for (non-standard) typeless constants ! such as `'123'O'. For example, consider the following statement: *************** File: g77.info, Node: Equivalence Versu *** 21400,21408 **** Equivalence Versus Equality --------------------------- ! Use of `.EQ.' and `.NE.' on `LOGICAL' operands is not supported, ! except via `-fugly-logint', which is not recommended except for legacy ! code (where the behavior expected by the _code_ is assumed). Legacy code should be changed, as resources permit, to use `.EQV.' and `.NEQV.' instead, as these are permitted by the various Fortran --- 21395,21403 ---- Equivalence Versus Equality --------------------------- ! Use of `.EQ.' and `.NE.' on `LOGICAL' operands is not supported, except ! via `-fugly-logint', which is not recommended except for legacy code ! (where the behavior expected by the _code_ is assumed). Legacy code should be changed, as resources permit, to use `.EQV.' and `.NEQV.' instead, as these are permitted by the various Fortran *************** File: g77.info, Node: Order of Side Eff *** 21469,21479 **** Order of Side Effects --------------------- ! `g77' does not necessarily produce code that, when run, performs ! side effects (such as those performed by function invocations) in the ! same order as in some other compiler--or even in the same order as ! another version, port, or invocation (using different command-line ! options) of `g77'. It is never safe to depend on the order of evaluation of side effects. For example, an expression like this may very well behave --- 21464,21474 ---- Order of Side Effects --------------------- ! `g77' does not necessarily produce code that, when run, performs side ! effects (such as those performed by function invocations) in the same ! order as in some other compiler--or even in the same order as another ! version, port, or invocation (using different command-line options) of ! `g77'. It is never safe to depend on the order of evaluation of side effects. For example, an expression like this may very well behave *************** File: g77.info, Node: Warnings and Erro *** 21511,21517 **** Warning Messages and Error Messages =================================== ! The GNU compiler can produce two kinds of diagnostics: errors and warnings. Each kind has a different purpose: _Errors_ report problems that make it impossible to compile your --- 21506,21512 ---- Warning Messages and Error Messages =================================== ! The GNU compiler can produce two kinds of diagnostics: errors and warnings. Each kind has a different purpose: _Errors_ report problems that make it impossible to compile your *************** File: g77.info, Node: Open Questions, *** 21543,21549 **** Open Questions ************** ! Please consider offering useful answers to these questions! * `LOC()' and other intrinsics are probably somewhat misclassified. Is the a need for more precise classification of intrinsics, and --- 21538,21544 ---- Open Questions ************** ! Please consider offering useful answers to these questions! * `LOC()' and other intrinsics are probably somewhat misclassified. Is the a need for more precise classification of intrinsics, and *************** File: g77.info, Node: Bugs, Next: Serv *** 21557,21564 **** Reporting Bugs ************** ! Your bug reports play an essential role in making GNU Fortran ! reliable. When you encounter a problem, the first thing to do is to see if it is already known. *Note Trouble::. If it isn't known, then you should --- 21552,21558 ---- Reporting Bugs ************** ! Your bug reports play an essential role in making GNU Fortran reliable. When you encounter a problem, the first thing to do is to see if it is already known. *Note Trouble::. If it isn't known, then you should *************** File: g77.info, Node: Bug Criteria, Ne *** 21581,21587 **** Have You Found a Bug? ===================== ! If you are not sure whether you have found a bug, here are some guidelines: * If the compiler gets a fatal signal, for any input whatever, that --- 21575,21581 ---- Have You Found a Bug? ===================== ! If you are not sure whether you have found a bug, here are some guidelines: * If the compiler gets a fatal signal, for any input whatever, that *************** File: g77.info, Node: Bug Reporting, P *** 21732,21738 **** How to Report Bugs ================== ! Bugs should be reported to our bug database. Please refer to `http://gcc.gnu.org/bugs.html' for up-to-date instructions how to submit bug reports. Copies of this file in HTML (`bugs.html') and plain text (`BUGS') are also part of GCC releases. --- 21726,21732 ---- How to Report Bugs ================== ! Bugs should be reported to our bug database. Please refer to `http://gcc.gnu.org/bugs.html' for up-to-date instructions how to submit bug reports. Copies of this file in HTML (`bugs.html') and plain text (`BUGS') are also part of GCC releases. *************** File: g77.info, Node: Service, Next: A *** 21743,21750 **** How To Get Help with GNU Fortran ******************************** ! If you need help installing, using or changing GNU Fortran, there ! are two ways to find it: * Look in the service directory for someone who might help you for a fee. The service directory is found in the file named `SERVICE' --- 21737,21744 ---- How To Get Help with GNU Fortran ******************************** ! If you need help installing, using or changing GNU Fortran, there are ! two ways to find it: * Look in the service directory for someone who might help you for a fee. The service directory is found in the file named `SERVICE' *************** File: g77.info, Node: Adding Options, *** 21758,21764 **** Adding Options ************** ! To add a new command-line option to `g77', first decide what kind of option you wish to add. Search the `g77' and `gcc' documentation for one or more options that is most closely like the one you want to add (in terms of what kind of effect it has, and so on) to help clarify its --- 21752,21758 ---- Adding Options ************** ! To add a new command-line option to `g77', first decide what kind of option you wish to add. Search the `g77' and `gcc' documentation for one or more options that is most closely like the one you want to add (in terms of what kind of effect it has, and so on) to help clarify its *************** File: g77.info, Node: Projects, Next: *** 21859,21865 **** Projects ******** ! If you want to contribute to `g77' by doing research, design, specification, documentation, coding, or testing, the following information should give you some ideas. More relevant information might be available from `ftp://alpha.gnu.org/gnu/g77/projects/'. --- 21853,21859 ---- Projects ******** ! If you want to contribute to `g77' by doing research, design, specification, documentation, coding, or testing, the following information should give you some ideas. More relevant information might be available from `ftp://alpha.gnu.org/gnu/g77/projects/'. *************** File: g77.info, Node: Efficiency, Next *** 21882,21891 **** Improve Efficiency ================== ! Don't bother doing any performance analysis until most of the ! following items are taken care of, because there's no question they ! represent serious space/time problems, although some of them show up ! only given certain kinds of (popular) input. * Improve `malloc' package and its uses to specify more info about memory pools and, where feasible, use obstacks to implement them. --- 21876,21885 ---- Improve Efficiency ================== ! Don't bother doing any performance analysis until most of the following ! items are taken care of, because there's no question they represent ! serious space/time problems, although some of them show up only given ! certain kinds of (popular) input. * Improve `malloc' package and its uses to specify more info about memory pools and, where feasible, use obstacks to implement them. *************** File: g77.info, Node: Better Optimizati *** 21941,21947 **** Better Optimization =================== ! Much of this work should be put off until after `g77' has all the features necessary for its widespread acceptance as a useful F77 compiler. However, perhaps this work can be done in parallel during the feature-adding work. --- 21935,21941 ---- Better Optimization =================== ! Much of this work should be put off until after `g77' has all the features necessary for its widespread acceptance as a useful F77 compiler. However, perhaps this work can be done in parallel during the feature-adding work. *************** File: g77.info, Node: Simplify Porting, *** 22007,22015 **** Simplify Porting ================ ! Making `g77' easier to configure, port, build, and install, either ! as a single-system compiler or as a cross-compiler, would be very ! useful. * A new library (replacing `libg2c') should improve portability as well as produce more optimal code. Further, `g77' and the new --- 22001,22008 ---- Simplify Porting ================ ! Making `g77' easier to configure, port, build, and install, either as a ! single-system compiler or as a cross-compiler, would be very useful. * A new library (replacing `libg2c') should improve portability as well as produce more optimal code. Further, `g77' and the new *************** File: g77.info, Node: More Extensions, *** 22045,22051 **** More Extensions =============== ! These extensions are not the sort of things users ask for "by name", but they might improve the usability of `g77', and Fortran in general, in the long run. Some of these items really pertain to improving `g77' internals so that some popular extensions can be more easily supported. --- 22038,22044 ---- More Extensions =============== ! These extensions are not the sort of things users ask for "by name", but they might improve the usability of `g77', and Fortran in general, in the long run. Some of these items really pertain to improving `g77' internals so that some popular extensions can be more easily supported. *************** File: g77.info, Node: Machine Model, N *** 22112,22119 **** Machine Model ============= ! This items pertain to generalizing `g77''s view of the machine model ! to more fully accept whatever the GBE provides it via its configuration. * Switch to using `REAL_VALUE_TYPE' to represent floating-point constants exclusively so the target float format need not be --- 22105,22112 ---- Machine Model ============= ! This items pertain to generalizing `g77''s view of the machine model to ! more fully accept whatever the GBE provides it via its configuration. * Switch to using `REAL_VALUE_TYPE' to represent floating-point constants exclusively so the target float format need not be *************** File: g77.info, Node: Internals Documen *** 22140,22146 **** Internals Documentation ======================= ! Better info on how `g77' works and how to port it is needed. *Note Front End::, which contains some information on `g77' internals. --- 22133,22139 ---- Internals Documentation ======================= ! Better info on how `g77' works and how to port it is needed. *Note Front End::, which contains some information on `g77' internals. *************** File: g77.info, Node: Internals Improve *** 22151,22157 **** Internals Improvements ====================== ! Some more items that would make `g77' more reliable and easier to maintain: * Generally make expression handling focus more on critical syntax --- 22144,22150 ---- Internals Improvements ====================== ! Some more items that would make `g77' more reliable and easier to maintain: * Generally make expression handling focus more on critical syntax *************** File: g77.info, Node: Better Diagnostic *** 22226,22234 **** Better Diagnostics ================== ! These are things users might not ask about, or that need to be ! looked into, before worrying about. Also here are items that involve ! reducing unnecessary diagnostic clutter. * When `FUNCTION' and `ENTRY' point types disagree (`CHARACTER' lengths, type classes, and so on), `ANY'-ize the offending `ENTRY' --- 22219,22227 ---- Better Diagnostics ================== ! These are things users might not ask about, or that need to be looked ! into, before worrying about. Also here are items that involve reducing ! unnecessary diagnostic clutter. * When `FUNCTION' and `ENTRY' point types disagree (`CHARACTER' lengths, type classes, and so on), `ANY'-ize the offending `ENTRY' *************** File: g77.info, Node: Front End, Next: *** 22253,22260 **** Front End ********* ! This chapter describes some aspects of the design and implementation ! of the `g77' front end. To find about things that are "To Be Determined" or "To Be Done", search for the string TBD. If you want to help by working on one or --- 22246,22253 ---- Front End ********* ! This chapter describes some aspects of the design and implementation of ! the `g77' front end. To find about things that are "To Be Determined" or "To Be Done", search for the string TBD. If you want to help by working on one or *************** File: g77.info, Node: Overview of Sourc *** 22280,22303 **** Overview of Sources =================== ! The current directory layout includes the following: ! `{No value for `srcdir'}/gcc/' Non-g77 files in gcc ! `{No value for `srcdir'}/gcc/f/' GNU Fortran front end sources ! `{No value for `srcdir'}/libf2c/' `libg2c' configuration and `g2c.h' file generation ! `{No value for `srcdir'}/libf2c/libF77/' General support and math portion of `libg2c' ! `{No value for `srcdir'}/libf2c/libI77/' I/O portion of `libg2c' ! `{No value for `srcdir'}/libf2c/libU77/' Additional interfaces to Unix `libc' for `libg2c' Components of note in `g77' are described below. --- 22273,22296 ---- Overview of Sources =================== ! The current directory layout includes the following: ! `{Aucune valeur pour « srcdir »}/gcc/' Non-g77 files in gcc ! `{Aucune valeur pour « srcdir »}/gcc/f/' GNU Fortran front end sources ! `{Aucune valeur pour « srcdir »}/libf2c/' `libg2c' configuration and `g2c.h' file generation ! `{Aucune valeur pour « srcdir »}/libf2c/libF77/' General support and math portion of `libg2c' ! `{Aucune valeur pour « srcdir »}/libf2c/libI77/' I/O portion of `libg2c' ! `{Aucune valeur pour « srcdir »}/libf2c/libU77/' Additional interfaces to Unix `libc' for `libg2c' Components of note in `g77' are described below. *************** File: g77.info, Node: Overview of Trans *** 22459,22466 **** Overview of Translation Process =============================== ! The order of phases translating source code to the form accepted by ! the GBE is: 1. Stripping punched-card sources (`g77stripcard.c') --- 22452,22459 ---- Overview of Translation Process =============================== ! The order of phases translating source code to the form accepted by the ! GBE is: 1. Stripping punched-card sources (`g77stripcard.c') *************** File: g77.info, Node: g77stripcard, Ne *** 22591,22597 **** g77stripcard ------------ ! The `g77stripcard' program handles removing content beyond column 72 (adjustable via a command-line option), optionally warning about that content being something other than trailing whitespace or Fortran commentary. --- 22584,22590 ---- g77stripcard ------------ ! The `g77stripcard' program handles removing content beyond column 72 (adjustable via a command-line option), optionally warning about that content being something other than trailing whitespace or Fortran commentary. *************** File: g77.info, Node: lex.c, Next: sta *** 22645,22654 **** lex.c ----- ! To help make the lexer simple, fast, and easy to maintain, while ! also having `g77' generally encourage Fortran programmers to write ! simple, maintainable, portable code by maximizing the performance of ! compiling that kind of code: * There'll be just one lexer, for both fixed-form and free-form source. --- 22638,22647 ---- lex.c ----- ! To help make the lexer simple, fast, and easy to maintain, while also ! having `g77' generally encourage Fortran programmers to write simple, ! maintainable, portable code by maximizing the performance of compiling ! that kind of code: * There'll be just one lexer, for both fixed-form and free-form source. *************** File: g77.info, Node: Gotchas (Transfor *** 22896,22910 **** Gotchas (Transforming) ---------------------- ! This section is not about transforming "gotchas" into something else. It is about the weirder aspects of transforming Fortran, however that's defined, into a more modern, canonical form. Multi-character Lexemes ....................... ! Each lexeme carries with it a pointer to where it appears in the ! source. To provide the ability for diagnostics to point to column numbers, in addition to line numbers and names, lexemes that represent more than --- 22889,22902 ---- Gotchas (Transforming) ---------------------- ! This section is not about transforming "gotchas" into something else. It is about the weirder aspects of transforming Fortran, however that's defined, into a more modern, canonical form. Multi-character Lexemes ....................... ! Each lexeme carries with it a pointer to where it appears in the source. To provide the ability for diagnostics to point to column numbers, in addition to line numbers and names, lexemes that represent more than *************** it makes the parser harder. *** 22976,22983 **** Space-padding Lexemes ..................... ! Certain lexemes need to be padded with virtual spaces when the end ! of the line (or file) is encountered. This is necessary in fixed form, to handle lines that don't extend to column 72, assuming that's the line length in effect. --- 22968,22975 ---- Space-padding Lexemes ..................... ! Certain lexemes need to be padded with virtual spaces when the end of ! the line (or file) is encountered. This is necessary in fixed form, to handle lines that don't extend to column 72, assuming that's the line length in effect. *************** to column 72, assuming that's the line l *** 22985,22992 **** Bizarre Free-form Hollerith Constants ..................................... ! Last I checked, the Fortran 90 standard actually required the ! compiler to silently accept something like FORMAT ( 1 2 Htwelve chars ) --- 22977,22984 ---- Bizarre Free-form Hollerith Constants ..................................... ! Last I checked, the Fortran 90 standard actually required the compiler ! to silently accept something like FORMAT ( 1 2 Htwelve chars ) *************** between lexemes, the latter must be acce *** 23026,23032 **** Hollerith Constants ................... ! Recognizing a Hollerith constant--specifically, that an `H' or `h' after a digit string begins such a constant--requires some knowledge of context. --- 23018,23024 ---- Hollerith Constants ................... ! Recognizing a Hollerith constant--specifically, that an `H' or `h' after a digit string begins such a constant--requires some knowledge of context. *************** context. *** 23050,23056 **** Confusing Function Keyword .......................... ! While REAL FUNCTION FOO () --- 23042,23048 ---- Confusing Function Keyword .......................... ! While REAL FUNCTION FOO () *************** nested). *** 23080,23086 **** Weird READ .......... ! The statement READ (N) --- 23072,23078 ---- Weird READ .......... ! The statement READ (N) *************** File: g77.info, Node: TBD (Transforming *** 23132,23138 **** TBD (Transforming) ------------------ ! Continue researching gotchas, designing the transformational process, and implementing it. Specific issues to resolve: --- 23124,23130 ---- TBD (Transforming) ------------------ ! Continue researching gotchas, designing the transformational process, and implementing it. Specific issues to resolve: *************** File: g77.info, Node: Philosophy of Cod *** 23193,23199 **** Philosophy of Code Generation ============================= ! Don't poke the bear. The `g77' front end generates code via the `gcc' back end. --- 23185,23191 ---- Philosophy of Code Generation ============================= ! Don't poke the bear. The `g77' front end generates code via the `gcc' back end. *************** File: g77.info, Node: Two-pass Design, *** 23321,23331 **** Two-pass Design =============== ! The FFE does not tell the GBE anything about a program unit until ! after the last statement in that unit has been parsed. (A program unit ! is a Fortran concept that corresponds, in the C world, mostly closely ! to functions definitions in ISO C. That is, a program unit in Fortran ! is like a top-level function in C. Nested functions, found among the extensions offered by GNU C, correspond roughly to Fortran's statement functions.) --- 23313,23323 ---- Two-pass Design =============== ! The FFE does not tell the GBE anything about a program unit until after ! the last statement in that unit has been parsed. (A program unit is a ! Fortran concept that corresponds, in the C world, mostly closely to ! functions definitions in ISO C. That is, a program unit in Fortran is ! like a top-level function in C. Nested functions, found among the extensions offered by GNU C, correspond roughly to Fortran's statement functions.) *************** File: g77.info, Node: Two-pass Code, N *** 23352,23359 **** Two-pass Code ------------- ! Most of the code that turns the first pass (parsing) into a second ! pass for code generation is in `gcc/gcc/f/std.c'. It has external functions, called mainly by siblings in `gcc/gcc/f/stc.c', that record the information on statements and --- 23344,23351 ---- Two-pass Code ------------- ! Most of the code that turns the first pass (parsing) into a second pass ! for code generation is in `gcc/gcc/f/std.c'. It has external functions, called mainly by siblings in `gcc/gcc/f/stc.c', that record the information on statements and *************** File: g77.info, Node: Why Two Passes, *** 23371,23383 **** Why Two Passes -------------- ! The need for two passes was not immediately evident during the ! design and implementation of the code in the FFE that was to produce ! GBEL. Only after a few kludges, to handle things like ! incorrectly-guessed `ASSIGN' label nature, had been implemented, did ! enough evidence pile up to make it clear that `std.c' had to be ! introduced to intercept, save, then revisit as part of a second pass, ! the digested contents of a program unit. Other such missteps have occurred during the evolution of the FFE, because of the different goals of the FFE and the GBE. --- 23363,23375 ---- Why Two Passes -------------- ! The need for two passes was not immediately evident during the design ! and implementation of the code in the FFE that was to produce GBEL. ! Only after a few kludges, to handle things like incorrectly-guessed ! `ASSIGN' label nature, had been implemented, did enough evidence pile ! up to make it clear that `std.c' had to be introduced to intercept, ! save, then revisit as part of a second pass, the digested contents of a ! program unit. Other such missteps have occurred during the evolution of the FFE, because of the different goals of the FFE and the GBE. *************** File: g77.info, Node: Challenges Posed, *** 23539,23545 **** Challenges Posed ================ ! Consider the following Fortran code, which uses various extensions (including some to Fortran 90): SUBROUTINE X(A) --- 23531,23537 ---- Challenges Posed ================ ! Consider the following Fortran code, which uses various extensions (including some to Fortran 90): SUBROUTINE X(A) *************** File: g77.info, Node: Transforming Stat *** 23600,23607 **** Transforming Statements ======================= ! Most Fortran statements are given their own block, and, for ! temporary variables they might need, their own scope. (A block is what distinguishes `{ foo (); }' from just `foo ();' in C. A scope is included with every such block, providing a distinct name space for local variables.) --- 23592,23599 ---- Transforming Statements ======================= ! Most Fortran statements are given their own block, and, for temporary ! variables they might need, their own scope. (A block is what distinguishes `{ foo (); }' from just `foo ();' in C. A scope is included with every such block, providing a distinct name space for local variables.) *************** File: g77.info, Node: Statements Needin *** 23625,23633 **** Statements Needing Temporaries ------------------------------ ! Any temporaries needed during, but not beyond, execution of a ! Fortran statement, are made local to the scope of that statement's ! block. This allows the GBE to share storage for these temporaries among the various statements without the FFE having to manage that itself. --- 23617,23624 ---- Statements Needing Temporaries ------------------------------ ! Any temporaries needed during, but not beyond, execution of a Fortran ! statement, are made local to the scope of that statement's block. This allows the GBE to share storage for these temporaries among the various statements without the FFE having to manage that itself. *************** File: g77.info, Node: Transforming DO W *** 23682,23688 **** Transforming DO WHILE --------------------- ! `DO WHILE(expr)' _must_ be implemented so that temporaries needed to evaluate `expr' are generated just for the test, each time. Consider how `DO WHILE (A//B .NE. 'END'); ...; END DO' is --- 23673,23679 ---- Transforming DO WHILE --------------------- ! `DO WHILE(expr)' _must_ be implemented so that temporaries needed to evaluate `expr' are generated just for the test, each time. Consider how `DO WHILE (A//B .NE. 'END'); ...; END DO' is *************** File: g77.info, Node: Transforming Iter *** 23723,23729 **** Transforming Iterative DO ------------------------- ! An iterative `DO' loop (one that specifies an iteration variable) is required by the Fortran standards to be implemented as though an iteration count is computed before entering the loop body, and that iteration count used to determine the number of times the loop body is --- 23714,23720 ---- Transforming Iterative DO ------------------------- ! An iterative `DO' loop (one that specifies an iteration variable) is required by the Fortran standards to be implemented as though an iteration count is computed before entering the loop body, and that iteration count used to determine the number of times the loop body is *************** File: g77.info, Node: Transforming Bloc *** 23741,23747 **** Transforming Block IF --------------------- ! Consider: SUBROUTINE X(A,B,C) CHARACTER*(*) A, B, C --- 23732,23738 ---- Transforming Block IF --------------------- ! Consider: SUBROUTINE X(A,B,C) CHARACTER*(*) A, B, C *************** File: g77.info, Node: Transforming SELE *** 23782,23789 **** Transforming SELECT CASE ------------------------ ! `SELECT CASE' poses a few interesting problems for code generation, ! if efficiency and frugal stack management are important. Consider `SELECT CASE (I('PREFIX'//A))', where `A' is `CHARACTER*(*)'. In a case like this--basically, in any case where --- 23773,23780 ---- Transforming SELECT CASE ------------------------ ! `SELECT CASE' poses a few interesting problems for code generation, if ! efficiency and frugal stack management are important. Consider `SELECT CASE (I('PREFIX'//A))', where `A' is `CHARACTER*(*)'. In a case like this--basically, in any case where *************** File: g77.info, Node: Transforming Expr *** 23876,23883 **** Transforming Expressions ======================== ! The interactions between statements, expressions, and subexpressions ! at program run time can be viewed as: ACTION(EXPR) --- 23867,23874 ---- Transforming Expressions ======================== ! The interactions between statements, expressions, and subexpressions at ! program run time can be viewed as: ACTION(EXPR) *************** File: g77.info, Node: Internal Naming C *** 23930,23941 **** Internal Naming Conventions =========================== ! Names exported by FFE modules have the following ! (regular-expression) forms. Note that all names beginning `ffeMOD' or ! `FFEMOD', where MOD is lowercase or uppercase alphanumerics, ! respectively, are exported by the module `ffeMOD', with the source code ! doing the exporting in `MOD.h'. (Usually, the source code for the ! implementation is in `MOD.c'.) Identifiers that don't fit the following forms are not considered exported, even if they are according to the C language. (For example, --- 23921,23932 ---- Internal Naming Conventions =========================== ! Names exported by FFE modules have the following (regular-expression) ! forms. Note that all names beginning `ffeMOD' or `FFEMOD', where MOD ! is lowercase or uppercase alphanumerics, respectively, are exported by ! the module `ffeMOD', with the source code doing the exporting in ! `MOD.h'. (Usually, the source code for the implementation is in ! `MOD.c'.) Identifiers that don't fit the following forms are not considered exported, even if they are according to the C language. (For example, *************** File: g77.info, Node: Diagnostics, Nex *** 24032,24039 **** Diagnostics *********** ! Some diagnostics produced by `g77' require sufficient explanation ! that the explanations are given below, and the diagnostics themselves identify the appropriate explanation. Identification uses the GNU Info format--specifically, the `info' --- 24023,24030 ---- Diagnostics *********** ! Some diagnostics produced by `g77' require sufficient explanation that ! the explanations are given below, and the diagnostics themselves identify the appropriate explanation. Identification uses the GNU Info format--specifically, the `info' *************** Keyword Index *** 26765,27468 ****  Tag Table: ! Node: Top2292 ! Node: Copying4249 ! Node: GNU Free Documentation License23449 ! Node: Contributors45858 ! Node: Funding49137 ! Node: Funding GNU Fortran51649 Node: Getting Started52863 ! Node: What is GNU Fortran?55112 ! Node: G77 and GCC65000 ! Node: Invoking G7766218 ! Node: Option Summary68156 ! Node: Overall Options73014 ! Node: Shorthand Options79754 ! Node: Fortran Dialect Options82051 ! Node: Warning Options93308 ! Node: Debugging Options102225 ! Node: Optimize Options103815 ! Ref: Optimize Options-Footnote-1109833 ! Node: Preprocessor Options110526 ! Node: Directory Options111707 ! Node: Code Gen Options113019 ! Node: Environment Variables127926 ! Node: News128381 ! Node: Changes182791 ! Node: Language210644 ! Node: Direction of Language Development212847 ! Node: Standard Support219087 ! Node: No Passing External Assumed-length219808 ! Node: No Passing Dummy Assumed-length220285 ! Node: No Pathological Implied-DO220800 ! Node: No Useless Implied-DO221487 ! Node: Conformance222218 ! Node: Notation Used224241 ! Node: Terms and Concepts228447 ! Node: Syntactic Items228959 ! Node: Statements Comments Lines229641 ! Node: Scope of Names and Labels231506 ! Node: Characters Lines Sequence231936 ! Node: Character Set232542 ! Node: Lines233543 ! Node: Continuation Line236019 ! Node: Statements236974 ! Node: Statement Labels237930 ! Node: Order238622 ! Node: INCLUDE239507 ! Node: Cpp-style directives242279 ! Node: Data Types and Constants242734 ! Node: Types246255 ! Node: Double Notation247344 ! Node: Star Notation248416 ! Node: Kind Notation251361 ! Node: Constants259781 ! Node: Integer Type261297 ! Node: Character Type261895 ! Node: Expressions262659 ! Node: %LOC()263075 ! Node: Specification Statements265805 ! Node: NAMELIST266262 ! Node: DOUBLE COMPLEX267013 ! Node: Control Statements267267 ! Node: DO WHILE267759 ! Node: END DO268064 ! Node: Construct Names269071 ! Node: CYCLE and EXIT269811 ! Node: Functions and Subroutines272575 ! Node: %VAL()273221 ! Node: %REF()274585 ! Node: %DESCR()276413 ! Node: Generics and Specifics278546 ! Node: REAL() and AIMAG() of Complex285748 ! Node: CMPLX() of DOUBLE PRECISION287581 ! Node: MIL-STD 1753289307 ! Node: f77/f2c Intrinsics289649 ! Node: Table of Intrinsic Functions290219 ! Node: Abort Intrinsic306931 ! Node: Abs Intrinsic307195 ! Node: Access Intrinsic308058 ! Node: AChar Intrinsic308894 ! Node: ACos Intrinsic309416 ! Node: AdjustL Intrinsic309877 ! Node: AdjustR Intrinsic310202 ! Node: AImag Intrinsic310528 ! Node: AInt Intrinsic311333 ! Node: Alarm Intrinsic311961 ! Node: All Intrinsic312793 ! Node: Allocated Intrinsic313105 ! Node: ALog Intrinsic313434 ! Node: ALog10 Intrinsic313824 ! Node: AMax0 Intrinsic314222 ! Node: AMax1 Intrinsic314707 ! Node: AMin0 Intrinsic315160 ! Node: AMin1 Intrinsic315644 ! Node: AMod Intrinsic316096 ! Node: And Intrinsic316522 ! Node: ANInt Intrinsic317028 ! Node: Any Intrinsic317792 ! Node: ASin Intrinsic318099 ! Node: Associated Intrinsic318557 ! Node: ATan Intrinsic318891 ! Node: ATan2 Intrinsic319357 ! Node: BesJ0 Intrinsic319908 ! Node: BesJ1 Intrinsic320369 ! Node: BesJN Intrinsic320830 ! Node: BesY0 Intrinsic321361 ! Node: BesY1 Intrinsic321823 ! Node: BesYN Intrinsic322285 ! Node: Bit_Size Intrinsic322820 ! Node: BTest Intrinsic323479 ! Node: CAbs Intrinsic324199 ! Node: CCos Intrinsic324586 ! Node: Ceiling Intrinsic324978 ! Node: CExp Intrinsic325300 ! Node: Char Intrinsic325692 ! Node: ChDir Intrinsic (subroutine)326946 ! Node: ChMod Intrinsic (subroutine)327949 ! Node: CLog Intrinsic329219 ! Node: Cmplx Intrinsic329623 ! Node: Complex Intrinsic330424 ! Node: Conjg Intrinsic331870 ! Node: Cos Intrinsic332294 ! Node: CosH Intrinsic332757 ! Node: Count Intrinsic333132 ! Node: CPU_Time Intrinsic333450 ! Node: CShift Intrinsic334241 ! Node: CSin Intrinsic334563 ! Node: CSqRt Intrinsic334955 ! Node: CTime Intrinsic (subroutine)335365 ! Node: CTime Intrinsic (function)336120 ! Node: DAbs Intrinsic336754 ! Node: DACos Intrinsic337150 ! Node: DASin Intrinsic337541 ! Node: DATan Intrinsic337933 ! Node: DATan2 Intrinsic338326 ! Node: Date_and_Time Intrinsic338781 ! Node: DbesJ0 Intrinsic340145 ! Node: DbesJ1 Intrinsic340538 ! Node: DbesJN Intrinsic340924 ! Node: DbesY0 Intrinsic341380 ! Node: DbesY1 Intrinsic341766 ! Node: DbesYN Intrinsic342152 ! Node: Dble Intrinsic342606 ! Node: DCos Intrinsic343312 ! Node: DCosH Intrinsic343696 ! Node: DDiM Intrinsic344086 ! Node: DErF Intrinsic344518 ! Node: DErFC Intrinsic344887 ! Node: DExp Intrinsic345262 ! Node: Digits Intrinsic345648 ! Node: DiM Intrinsic345965 ! Node: DInt Intrinsic346464 ! Node: DLog Intrinsic346848 ! Node: DLog10 Intrinsic347233 ! Node: DMax1 Intrinsic347631 ! Node: DMin1 Intrinsic348085 ! Node: DMod Intrinsic348537 ! Node: DNInt Intrinsic348965 ! Node: Dot_Product Intrinsic349364 ! Node: DProd Intrinsic349704 ! Node: DSign Intrinsic350086 ! Node: DSin Intrinsic350525 ! Node: DSinH Intrinsic350910 ! Node: DSqRt Intrinsic351301 ! Node: DTan Intrinsic351692 ! Node: DTanH Intrinsic352077 ! Node: DTime Intrinsic (subroutine)352481 ! Node: EOShift Intrinsic353752 ! Node: Epsilon Intrinsic354091 ! Node: ErF Intrinsic354415 ! Node: ErFC Intrinsic354821 ! Node: ETime Intrinsic (subroutine)355381 ! Node: ETime Intrinsic (function)356544 ! Node: Exit Intrinsic357584 ! Node: Exp Intrinsic358093 ! Node: Exponent Intrinsic358555 ! Node: FDate Intrinsic (subroutine)358894 ! Node: FDate Intrinsic (function)359804 ! Node: FGet Intrinsic (subroutine)360576 ! Node: FGetC Intrinsic (subroutine)361413 ! Node: Float Intrinsic362290 ! Node: Floor Intrinsic362690 ! Node: Flush Intrinsic363006 ! Node: FNum Intrinsic363585 ! Node: FPut Intrinsic (subroutine)364033 ! Node: FPutC Intrinsic (subroutine)364830 ! Node: Fraction Intrinsic365677 ! Node: FSeek Intrinsic366018 ! Node: FStat Intrinsic (subroutine)366743 ! Node: FStat Intrinsic (function)368267 ! Node: FTell Intrinsic (subroutine)369556 ! Node: FTell Intrinsic (function)370229 ! Node: GError Intrinsic370746 ! Node: GetArg Intrinsic371120 ! Node: GetCWD Intrinsic (subroutine)371788 ! Node: GetCWD Intrinsic (function)372643 ! Node: GetEnv Intrinsic373262 ! Node: GetGId Intrinsic373849 ! Node: GetLog Intrinsic374155 ! Node: GetPId Intrinsic374693 ! Node: GetUId Intrinsic375001 ! Node: GMTime Intrinsic375306 ! Node: HostNm Intrinsic (subroutine)376314 ! Node: HostNm Intrinsic (function)377403 ! Node: Huge Intrinsic378245 ! Node: IAbs Intrinsic378568 ! Node: IAChar Intrinsic378959 ! Node: IAnd Intrinsic379499 ! Node: IArgC Intrinsic379987 ! Node: IBClr Intrinsic380363 ! Node: IBits Intrinsic380874 ! Node: IBSet Intrinsic381588 ! Node: IChar Intrinsic382090 ! Node: IDate Intrinsic (UNIX)383309 ! Node: IDiM Intrinsic384151 ! Node: IDInt Intrinsic384600 ! Node: IDNInt Intrinsic384993 ! Node: IEOr Intrinsic385392 ! Node: IErrNo Intrinsic385890 ! Node: IFix Intrinsic386217 ! Node: Imag Intrinsic386605 ! Node: ImagPart Intrinsic387610 ! Node: Index Intrinsic388636 ! Node: Int Intrinsic389189 ! Node: Int2 Intrinsic389904 ! Node: Int8 Intrinsic390613 ! Node: IOr Intrinsic391322 ! Node: IRand Intrinsic391802 ! Node: IsaTty Intrinsic392722 ! Node: IShft Intrinsic393146 ! Node: IShftC Intrinsic393976 ! Node: ISign Intrinsic394905 ! Node: ITime Intrinsic395355 ! Node: Kill Intrinsic (subroutine)395757 ! Node: Kind Intrinsic396593 ! Node: LBound Intrinsic396918 ! Node: Len Intrinsic397235 ! Node: Len_Trim Intrinsic397871 ! Node: LGe Intrinsic398283 ! Node: LGt Intrinsic399696 ! Node: Link Intrinsic (subroutine)400601 ! Node: LLe Intrinsic401565 ! Node: LLt Intrinsic402470 ! Node: LnBlnk Intrinsic403364 ! Node: Loc Intrinsic403767 ! Node: Log Intrinsic404198 ! Node: Log10 Intrinsic404789 ! Node: Logical Intrinsic405331 ! Node: Long Intrinsic405654 ! Node: LShift Intrinsic406178 ! Node: LStat Intrinsic (subroutine)407214 ! Node: LStat Intrinsic (function)409025 ! Node: LTime Intrinsic410587 ! Node: MatMul Intrinsic411591 ! Node: Max Intrinsic411909 ! Node: Max0 Intrinsic412460 ! Node: Max1 Intrinsic412911 ! Node: MaxExponent Intrinsic413395 ! Node: MaxLoc Intrinsic413735 ! Node: MaxVal Intrinsic414062 ! Node: MClock Intrinsic414384 ! Node: MClock8 Intrinsic415282 ! Node: Merge Intrinsic416470 ! Node: Min Intrinsic416786 ! Node: Min0 Intrinsic417337 ! Node: Min1 Intrinsic417788 ! Node: MinExponent Intrinsic418272 ! Node: MinLoc Intrinsic418612 ! Node: MinVal Intrinsic418939 ! Node: Mod Intrinsic419258 ! Node: Modulo Intrinsic419781 ! Node: MvBits Intrinsic420100 ! Node: Nearest Intrinsic420966 ! Node: NInt Intrinsic421290 ! Node: Not Intrinsic422128 ! Node: Or Intrinsic422523 ! Node: Pack Intrinsic423021 ! Node: PError Intrinsic423331 ! Node: Precision Intrinsic423785 ! Node: Present Intrinsic424120 ! Node: Product Intrinsic424450 ! Node: Radix Intrinsic424776 ! Node: Rand Intrinsic425093 ! Node: Random_Number Intrinsic425980 ! Node: Random_Seed Intrinsic426333 ! Node: Range Intrinsic426681 ! Node: Real Intrinsic427002 ! Node: RealPart Intrinsic428008 ! Node: Rename Intrinsic (subroutine)429041 ! Node: Repeat Intrinsic430012 ! Node: Reshape Intrinsic430348 ! Node: RRSpacing Intrinsic430677 ! Node: RShift Intrinsic431012 ! Node: Scale Intrinsic432010 ! Node: Scan Intrinsic432326 ! Node: Second Intrinsic (function)432650 ! Node: Second Intrinsic (subroutine)433481 ! Node: Selected_Int_Kind Intrinsic434456 ! Node: Selected_Real_Kind Intrinsic434847 ! Node: Set_Exponent Intrinsic435234 ! Node: Shape Intrinsic435591 ! Node: Short Intrinsic435914 ! Node: Sign Intrinsic436609 ! Node: Signal Intrinsic (subroutine)437209 ! Node: Sin Intrinsic439423 ! Node: SinH Intrinsic439898 ! Node: Sleep Intrinsic440271 ! Node: Sngl Intrinsic440613 ! Node: Spacing Intrinsic441002 ! Node: Spread Intrinsic441326 ! Node: SqRt Intrinsic441647 ! Node: SRand Intrinsic442251 ! Node: Stat Intrinsic (subroutine)442628 ! Node: Stat Intrinsic (function)444242 ! Node: Sum Intrinsic445605 ! Node: SymLnk Intrinsic (subroutine)445937 ! Node: System Intrinsic (subroutine)446968 ! Node: System_Clock Intrinsic447907 ! Node: Tan Intrinsic449031 ! Node: TanH Intrinsic449491 ! Node: Time Intrinsic (UNIX)449873 ! Node: Time8 Intrinsic450858 ! Node: Tiny Intrinsic452037 ! Node: Transfer Intrinsic452352 ! Node: Transpose Intrinsic452683 ! Node: Trim Intrinsic453017 ! Node: TtyNam Intrinsic (subroutine)453347 ! Node: TtyNam Intrinsic (function)454049 ! Node: UBound Intrinsic454618 ! Node: UMask Intrinsic (subroutine)454963 ! Node: Unlink Intrinsic (subroutine)455660 ! Node: Unpack Intrinsic456557 ! Node: Verify Intrinsic456892 ! Node: XOr Intrinsic457211 ! Node: ZAbs Intrinsic457727 ! Node: ZCos Intrinsic458096 ! Node: ZExp Intrinsic458469 ! Node: ZLog Intrinsic458842 ! Node: ZSin Intrinsic459215 ! Node: ZSqRt Intrinsic459589 ! Node: Scope and Classes of Names459946 ! Node: Underscores in Symbol Names460428 ! Node: I/O460675 ! Node: Fortran 90 Features461448 ! Node: Other Dialects464250 ! Node: Source Form465409 ! Node: Carriage Returns466624 ! Node: Tabs466953 ! Node: Short Lines467826 ! Node: Long Lines468800 ! Node: Ampersands469411 ! Node: Trailing Comment469665 ! Node: Debug Line470441 ! Node: Dollar Signs471110 ! Node: Case Sensitivity471396 ! Node: VXT Fortran480012 ! Node: Double Quote Meaning481195 ! Node: Exclamation Point482123 ! Node: Fortran 90483166 ! Node: Pedantic Compilation484218 ! Node: Distensions488182 ! Node: Ugly Implicit Argument Conversion489146 ! Node: Ugly Assumed-Size Arrays489760 ! Node: Ugly Complex Part Extraction491481 ! Node: Ugly Null Arguments493103 ! Node: Ugly Conversion of Initializers494706 ! Node: Ugly Integer Conversions496471 ! Node: Ugly Assigned Labels497579 ! Node: Compiler499510 ! Node: Compiler Limits500148 ! Node: Run-time Environment Limits501039 ! Node: Timer Wraparounds502981 ! Node: Year 2000 (Y2K) Problems504260 ! Node: Array Size508766 ! Node: Character-variable Length509951 ! Node: Year 10000 (Y10K) Problems510460 ! Node: Compiler Types511006 ! Node: Compiler Constants515717 ! Node: Compiler Intrinsics516576 ! Node: Intrinsic Groups517503 ! Node: Other Intrinsics520944 ! Node: ACosD Intrinsic528542 ! Node: AIMax0 Intrinsic528823 ! Node: AIMin0 Intrinsic529132 ! Node: AJMax0 Intrinsic529442 ! Node: AJMin0 Intrinsic529752 ! Node: ASinD Intrinsic530061 ! Node: ATan2D Intrinsic530367 ! Node: ATanD Intrinsic530675 ! Node: BITest Intrinsic530981 ! Node: BJTest Intrinsic531290 ! Node: CDAbs Intrinsic531599 ! Node: CDCos Intrinsic531972 ! Node: CDExp Intrinsic532347 ! Node: CDLog Intrinsic532722 ! Node: CDSin Intrinsic533097 ! Node: CDSqRt Intrinsic533473 ! Node: ChDir Intrinsic (function)533866 ! Node: ChMod Intrinsic (function)534694 ! Node: CosD Intrinsic535807 ! Node: DACosD Intrinsic536119 ! Node: DASinD Intrinsic536427 ! Node: DATan2D Intrinsic536738 ! Node: DATanD Intrinsic537052 ! Node: Date Intrinsic537361 ! Node: DbleQ Intrinsic538080 ! Node: DCmplx Intrinsic538384 ! Node: DConjg Intrinsic540015 ! Node: DCosD Intrinsic540400 ! Node: DFloat Intrinsic540706 ! Node: DFlotI Intrinsic541078 ! Node: DFlotJ Intrinsic541388 ! Node: DImag Intrinsic541697 ! Node: DReal Intrinsic542074 ! Node: DSinD Intrinsic543221 ! Node: DTanD Intrinsic543525 ! Node: DTime Intrinsic (function)543840 ! Node: FGet Intrinsic (function)545070 ! Node: FGetC Intrinsic (function)545843 ! Node: FloatI Intrinsic546659 ! Node: FloatJ Intrinsic546979 ! Node: FPut Intrinsic (function)547298 ! Node: FPutC Intrinsic (function)548034 ! Node: IDate Intrinsic (VXT)548827 ! Node: IIAbs Intrinsic549934 ! Node: IIAnd Intrinsic550244 ! Node: IIBClr Intrinsic550549 ! Node: IIBits Intrinsic550858 ! Node: IIBSet Intrinsic551168 ! Node: IIDiM Intrinsic551477 ! Node: IIDInt Intrinsic551783 ! Node: IIDNnt Intrinsic552092 ! Node: IIEOr Intrinsic552401 ! Node: IIFix Intrinsic552706 ! Node: IInt Intrinsic553009 ! Node: IIOr Intrinsic553308 ! Node: IIQint Intrinsic553608 ! Node: IIQNnt Intrinsic553916 ! Node: IIShftC Intrinsic554227 ! Node: IISign Intrinsic554541 ! Node: IMax0 Intrinsic554851 ! Node: IMax1 Intrinsic555156 ! Node: IMin0 Intrinsic555460 ! Node: IMin1 Intrinsic555764 ! Node: IMod Intrinsic556067 ! Node: INInt Intrinsic556367 ! Node: INot Intrinsic556669 ! Node: IZExt Intrinsic556969 ! Node: JIAbs Intrinsic557272 ! Node: JIAnd Intrinsic557576 ! Node: JIBClr Intrinsic557881 ! Node: JIBits Intrinsic558190 ! Node: JIBSet Intrinsic558500 ! Node: JIDiM Intrinsic558809 ! Node: JIDInt Intrinsic559115 ! Node: JIDNnt Intrinsic559424 ! Node: JIEOr Intrinsic559733 ! Node: JIFix Intrinsic560038 ! Node: JInt Intrinsic560341 ! Node: JIOr Intrinsic560640 ! Node: JIQint Intrinsic560940 ! Node: JIQNnt Intrinsic561248 ! Node: JIShft Intrinsic561558 ! Node: JIShftC Intrinsic561869 ! Node: JISign Intrinsic562183 ! Node: JMax0 Intrinsic562493 ! Node: JMax1 Intrinsic562798 ! Node: JMin0 Intrinsic563102 ! Node: JMin1 Intrinsic563406 ! Node: JMod Intrinsic563709 ! Node: JNInt Intrinsic564009 ! Node: JNot Intrinsic564311 ! Node: JZExt Intrinsic564611 ! Node: Kill Intrinsic (function)564924 ! Node: Link Intrinsic (function)565605 ! Node: QAbs Intrinsic566416 ! Node: QACos Intrinsic566726 ! Node: QACosD Intrinsic567030 ! Node: QASin Intrinsic567338 ! Node: QASinD Intrinsic567644 ! Node: QATan Intrinsic567952 ! Node: QATan2 Intrinsic568258 ! Node: QATan2D Intrinsic568568 ! Node: QATanD Intrinsic568882 ! Node: QCos Intrinsic569191 ! Node: QCosD Intrinsic569492 ! Node: QCosH Intrinsic569795 ! Node: QDiM Intrinsic570098 ! Node: QExp Intrinsic570397 ! Node: QExt Intrinsic570695 ! Node: QExtD Intrinsic570994 ! Node: QFloat Intrinsic571298 ! Node: QInt Intrinsic571605 ! Node: QLog Intrinsic571905 ! Node: QLog10 Intrinsic572205 ! Node: QMax1 Intrinsic572512 ! Node: QMin1 Intrinsic572817 ! Node: QMod Intrinsic573120 ! Node: QNInt Intrinsic573420 ! Node: QSin Intrinsic573722 ! Node: QSinD Intrinsic574022 ! Node: QSinH Intrinsic574325 ! Node: QSqRt Intrinsic574629 ! Node: QTan Intrinsic574932 ! Node: QTanD Intrinsic575232 ! Node: QTanH Intrinsic575535 ! Node: Rename Intrinsic (function)575851 ! Node: Secnds Intrinsic576655 ! Node: Signal Intrinsic (function)577254 ! Node: SinD Intrinsic580083 ! Node: SnglQ Intrinsic580395 ! Node: SymLnk Intrinsic (function)580710 ! Node: System Intrinsic (function)581577 ! Node: TanD Intrinsic582904 ! Node: Time Intrinsic (VXT)583221 ! Node: UMask Intrinsic (function)583975 ! Node: Unlink Intrinsic (function)584583 ! Node: ZExt Intrinsic585311 ! Node: Other Compilers585599 ! Node: Dropping f2c Compatibility588119 ! Node: Compilers Other Than f2c591191 ! Node: Other Languages592989 ! Node: Interoperating with C and C++593254 ! Node: C Interfacing Tools594287 ! Node: C Access to Type Information595215 ! Node: f2c Skeletons and Prototypes595902 ! Ref: f2c Skeletons and Prototypes-Footnote-1597349 ! Node: C++ Considerations597603 ! Node: Startup Code598270 ! Node: Debugging and Interfacing603059 ! Node: Main Program Unit605746 ! Node: Procedures608240 ! Node: Functions610898 ! Node: Names612516 ! Node: Common Blocks615659 ! Node: Local Equivalence Areas615923 ! Node: Complex Variables616907 ! Node: Arrays618027 ! Node: Adjustable Arrays621360 ! Node: Alternate Entry Points624219 ! Node: Alternate Returns630921 ! Node: Assigned Statement Labels631822 ! Node: Run-time Library Errors633667 ! Node: Collected Fortran Wisdom635619 ! Node: Advantages Over f2c637055 ! Node: Language Extensions638036 ! Node: Diagnostic Abilities639210 ! Node: Compiler Options639601 ! Node: Compiler Speed640649 ! Node: Program Speed641359 ! Node: Ease of Debugging642944 ! Node: Character and Hollerith Constants645374 ! Node: Block Data and Libraries646346 ! Node: Loops649675 ! Node: Working Programs654901 ! Node: Not My Type655645 ! Node: Variables Assumed To Be Zero657576 ! Node: Variables Assumed To Be Saved658630 ! Node: Unwanted Variables660000 ! Node: Unused Arguments660880 ! Node: Surprising Interpretations of Code661343 ! Node: Aliasing Assumed To Work662190 ! Node: Output Assumed To Flush668388 ! Node: Large File Unit Numbers671161 ! Node: Floating-point precision673313 ! Node: Inconsistent Calling Sequences674574 ! Node: Overly Convenient Options675554 ! Node: Faster Programs678860 ! Node: Aligned Data679306 ! Node: Prefer Automatic Uninitialized Variables684183 ! Node: Avoid f2c Compatibility685549 ! Node: Use Submodel Options686017 ! Node: Trouble687021 ! Node: But-bugs688483 ! Node: Signal 11 and Friends690256 ! Node: Cannot Link Fortran Programs692336 ! Node: Large Common Blocks693619 ! Node: Debugger Problems694045 ! Node: NeXTStep Problems694760 ! Node: Stack Overflow696586 ! Node: Nothing Happens699475 ! Node: Strange Behavior at Run Time701089 ! Node: Floating-point Errors703577 ! Node: Known Bugs709871 ! Node: Missing Features717162 ! Node: Better Source Model719089 ! Node: Fortran 90 Support720858 ! Node: Intrinsics in PARAMETER Statements721959 ! Node: Arbitrary Concatenation722710 ! Node: SELECT CASE on CHARACTER Type723113 ! Node: RECURSIVE Keyword723400 ! Node: Increasing Precision/Range723827 ! Node: Popular Non-standard Types725365 ! Node: Full Support for Compiler Types725704 ! Node: Array Bounds Expressions726340 ! Node: POINTER Statements726787 ! Node: Sensible Non-standard Constructs727670 ! Node: READONLY Keyword729996 ! Node: FLUSH Statement730906 ! Node: Expressions in FORMAT Statements731276 ! Node: Explicit Assembler Code732451 ! Node: Q Edit Descriptor732740 ! Node: Old-style PARAMETER Statements733244 ! Node: TYPE and ACCEPT I/O Statements733978 ! Node: STRUCTURE UNION RECORD MAP734544 ! Node: OPEN CLOSE and INQUIRE Keywords735030 ! Node: ENCODE and DECODE736010 ! Node: AUTOMATIC Statement737105 ! Node: Suppressing Space Padding738352 ! Node: Fortran Preprocessor739579 ! Node: Bit Operations on Floating-point Data740152 ! Node: Really Ugly Character Assignments740685 ! Node: POSIX Standard741060 ! Node: Floating-point Exception Handling741300 ! Node: Nonportable Conversions742702 ! Node: Large Automatic Arrays743245 ! Node: Support for Threads743652 ! Node: Enabling Debug Lines744077 ! Node: Better Warnings744454 ! Node: Gracefully Handle Sensible Bad Code746090 ! Node: Non-standard Conversions746834 ! Node: Non-standard Intrinsics747177 ! Node: Modifying DO Variable747593 ! Node: Better Pedantic Compilation748269 ! Node: Warn About Implicit Conversions748897 ! Node: Invalid Use of Hollerith Constant749484 ! Node: Dummy Array Without Dimensioning Dummy750027 ! Node: Invalid FORMAT Specifiers750940 ! Node: Ambiguous Dialects751341 ! Node: Unused Labels751752 ! Node: Informational Messages751974 ! Node: Uninitialized Variables at Run Time752377 ! Node: Portable Unformatted Files752983 ! Ref: Portable Unformatted Files-Footnote-1755939 ! Node: Better List-directed I/O755967 ! Node: Default to Console I/O756872 ! Node: Labels Visible to Debugger757520 ! Node: Disappointments757921 ! Node: Mangling of Names758559 ! Node: Multiple Definitions of External Names759409 ! Node: Limitation on Implicit Declarations760772 ! Node: Non-bugs761056 ! Node: Backslash in Constants762181 ! Node: Initializing Before Specifying767070 ! Node: Context-Sensitive Intrinsicness768212 ! Node: Context-Sensitive Constants770108 ! Node: Equivalence Versus Equality773064 ! Node: Order of Side Effects776107 ! Node: Warnings and Errors777835 ! Node: Open Questions779233 ! Node: Bugs779702 ! Node: Bug Criteria780390 ! Node: Bug Reporting786627 ! Node: Service786988 ! Node: Adding Options787454 ! Node: Projects792047 ! Node: Efficiency792982 ! Node: Better Optimization795879 ! Node: Simplify Porting799249 ! Node: More Extensions801004 ! Node: Machine Model804092 ! Node: Internals Documentation805378 ! Node: Internals Improvements805685 ! Node: Better Diagnostics809229 ! Node: Front End810146 ! Node: Overview of Sources810924 ! Node: Overview of Translation Process818313 ! Node: g77stripcard822591 ! Node: lex.c825068 ! Node: sta.c834608 ! Node: sti.c834719 ! Node: stq.c834830 ! Node: stb.c834941 ! Node: expr.c835053 ! Node: stc.c835167 ! Node: std.c835279 ! Node: ste.c835390 ! Node: Gotchas (Transforming)835518 ! Node: TBD (Transforming)843637 ! Node: Philosophy of Code Generation846333 ! Node: Two-pass Design852237 ! Node: Two-pass Code853394 ! Node: Why Two Passes854127 ! Node: Challenges Posed860195 ! Node: Transforming Statements862679 ! Node: Statements Needing Temporaries863529 ! Node: Transforming DO WHILE866293 ! Node: Transforming Iterative DO867476 ! Node: Transforming Block IF868305 ! Node: Transforming SELECT CASE869670 ! Node: Transforming Expressions872892 ! Node: Internal Naming Conventions874881 ! Node: Diagnostics877880 ! Node: CMPAMBIG879278 ! Node: EXPIMP885695 ! Node: INTGLOB886931 ! Node: LEX889175 ! Node: GLOBALS894630 ! Node: LINKFAIL897294 ! Node: Y2KBAD897918 ! Node: Keyword Index898268  End Tag Table --- 26756,27459 ----  Tag Table: ! Node: Top2313 ! Node: Copying4267 ! Node: GNU Free Documentation License23461 ! Node: Contributors45867 ! Node: Funding49143 ! Node: Funding GNU Fortran51652 Node: Getting Started52863 ! Node: What is GNU Fortran?55109 ! Node: G77 and GCC64994 ! Node: Invoking G7766209 ! Node: Option Summary68144 ! Node: Overall Options73000 ! Node: Shorthand Options79737 ! Node: Fortran Dialect Options82031 ! Node: Warning Options93285 ! Node: Debugging Options102199 ! Node: Optimize Options103786 ! Ref: Optimize Options-Footnote-1109801 ! Node: Preprocessor Options110494 ! Node: Directory Options111672 ! Node: Code Gen Options112981 ! Node: Environment Variables127885 ! Node: News128337 ! Node: Changes182741 ! Node: Language210585 ! Node: Direction of Language Development212785 ! Node: Standard Support219022 ! Node: No Passing External Assumed-length219740 ! Node: No Passing Dummy Assumed-length220214 ! Node: No Pathological Implied-DO220726 ! Node: No Useless Implied-DO221410 ! Node: Conformance222138 ! Node: Notation Used224158 ! Node: Terms and Concepts228361 ! Node: Syntactic Items228870 ! Node: Statements Comments Lines229549 ! Node: Scope of Names and Labels231411 ! Node: Characters Lines Sequence231838 ! Node: Character Set232441 ! Node: Lines233439 ! Node: Continuation Line235912 ! Node: Statements236864 ! Node: Statement Labels237817 ! Node: Order238506 ! Node: INCLUDE239388 ! Node: Cpp-style directives242157 ! Node: Data Types and Constants242609 ! Node: Types246127 ! Node: Double Notation247213 ! Node: Star Notation248282 ! Node: Kind Notation251224 ! Node: Constants259641 ! Node: Integer Type261154 ! Node: Character Type261749 ! Node: Expressions262510 ! Node: %LOC()262923 ! Node: Specification Statements265653 ! Node: NAMELIST266107 ! Node: DOUBLE COMPLEX266855 ! Node: Control Statements267106 ! Node: DO WHILE267595 ! Node: END DO267897 ! Node: Construct Names268901 ! Node: CYCLE and EXIT269638 ! Node: Functions and Subroutines272399 ! Node: %VAL()273042 ! Node: %REF()274406 ! Node: %DESCR()276234 ! Node: Generics and Specifics278367 ! Node: REAL() and AIMAG() of Complex285566 ! Node: CMPLX() of DOUBLE PRECISION287396 ! Node: MIL-STD 1753289119 ! Node: f77/f2c Intrinsics289458 ! Node: Table of Intrinsic Functions290025 ! Node: Abort Intrinsic306734 ! Node: Abs Intrinsic306998 ! Node: Access Intrinsic307861 ! Node: AChar Intrinsic308697 ! Node: ACos Intrinsic309219 ! Node: AdjustL Intrinsic309680 ! Node: AdjustR Intrinsic310002 ! Node: AImag Intrinsic310325 ! Node: AInt Intrinsic311130 ! Node: Alarm Intrinsic311758 ! Node: All Intrinsic312590 ! Node: Allocated Intrinsic312899 ! Node: ALog Intrinsic313225 ! Node: ALog10 Intrinsic313615 ! Node: AMax0 Intrinsic314013 ! Node: AMax1 Intrinsic314498 ! Node: AMin0 Intrinsic314951 ! Node: AMin1 Intrinsic315435 ! Node: AMod Intrinsic315887 ! Node: And Intrinsic316313 ! Node: ANInt Intrinsic316819 ! Node: Any Intrinsic317583 ! Node: ASin Intrinsic317887 ! Node: Associated Intrinsic318345 ! Node: ATan Intrinsic318676 ! Node: ATan2 Intrinsic319142 ! Node: BesJ0 Intrinsic319693 ! Node: BesJ1 Intrinsic320154 ! Node: BesJN Intrinsic320615 ! Node: BesY0 Intrinsic321146 ! Node: BesY1 Intrinsic321608 ! Node: BesYN Intrinsic322070 ! Node: Bit_Size Intrinsic322605 ! Node: BTest Intrinsic323264 ! Node: CAbs Intrinsic323984 ! Node: CCos Intrinsic324371 ! Node: Ceiling Intrinsic324763 ! Node: CExp Intrinsic325082 ! Node: Char Intrinsic325474 ! Node: ChDir Intrinsic (subroutine)326728 ! Node: ChMod Intrinsic (subroutine)327731 ! Node: CLog Intrinsic329001 ! Node: Cmplx Intrinsic329405 ! Node: Complex Intrinsic330206 ! Node: Conjg Intrinsic331652 ! Node: Cos Intrinsic332076 ! Node: CosH Intrinsic332539 ! Node: Count Intrinsic332914 ! Node: CPU_Time Intrinsic333229 ! Node: CShift Intrinsic334020 ! Node: CSin Intrinsic334339 ! Node: CSqRt Intrinsic334731 ! Node: CTime Intrinsic (subroutine)335141 ! Node: CTime Intrinsic (function)335896 ! Node: DAbs Intrinsic336530 ! Node: DACos Intrinsic336926 ! Node: DASin Intrinsic337317 ! Node: DATan Intrinsic337709 ! Node: DATan2 Intrinsic338102 ! Node: Date_and_Time Intrinsic338557 ! Node: DbesJ0 Intrinsic339921 ! Node: DbesJ1 Intrinsic340314 ! Node: DbesJN Intrinsic340700 ! Node: DbesY0 Intrinsic341156 ! Node: DbesY1 Intrinsic341542 ! Node: DbesYN Intrinsic341928 ! Node: Dble Intrinsic342382 ! Node: DCos Intrinsic343088 ! Node: DCosH Intrinsic343472 ! Node: DDiM Intrinsic343862 ! Node: DErF Intrinsic344294 ! Node: DErFC Intrinsic344663 ! Node: DExp Intrinsic345038 ! Node: Digits Intrinsic345424 ! Node: DiM Intrinsic345738 ! Node: DInt Intrinsic346237 ! Node: DLog Intrinsic346621 ! Node: DLog10 Intrinsic347006 ! Node: DMax1 Intrinsic347404 ! Node: DMin1 Intrinsic347858 ! Node: DMod Intrinsic348310 ! Node: DNInt Intrinsic348738 ! Node: Dot_Product Intrinsic349137 ! Node: DProd Intrinsic349474 ! Node: DSign Intrinsic349856 ! Node: DSin Intrinsic350295 ! Node: DSinH Intrinsic350680 ! Node: DSqRt Intrinsic351071 ! Node: DTan Intrinsic351462 ! Node: DTanH Intrinsic351847 ! Node: DTime Intrinsic (subroutine)352251 ! Node: EOShift Intrinsic353522 ! Node: Epsilon Intrinsic353858 ! Node: ErF Intrinsic354179 ! Node: ErFC Intrinsic354585 ! Node: ETime Intrinsic (subroutine)355145 ! Node: ETime Intrinsic (function)356308 ! Node: Exit Intrinsic357348 ! Node: Exp Intrinsic357857 ! Node: Exponent Intrinsic358319 ! Node: FDate Intrinsic (subroutine)358655 ! Node: FDate Intrinsic (function)359565 ! Node: FGet Intrinsic (subroutine)360337 ! Node: FGetC Intrinsic (subroutine)361174 ! Node: Float Intrinsic362051 ! Node: Floor Intrinsic362451 ! Node: Flush Intrinsic362764 ! Node: FNum Intrinsic363343 ! Node: FPut Intrinsic (subroutine)363791 ! Node: FPutC Intrinsic (subroutine)364588 ! Node: Fraction Intrinsic365435 ! Node: FSeek Intrinsic365773 ! Node: FStat Intrinsic (subroutine)366498 ! Node: FStat Intrinsic (function)368022 ! Node: FTell Intrinsic (subroutine)369311 ! Node: FTell Intrinsic (function)369984 ! Node: GError Intrinsic370501 ! Node: GetArg Intrinsic370875 ! Node: GetCWD Intrinsic (subroutine)371543 ! Node: GetCWD Intrinsic (function)372398 ! Node: GetEnv Intrinsic373017 ! Node: GetGId Intrinsic373604 ! Node: GetLog Intrinsic373910 ! Node: GetPId Intrinsic374448 ! Node: GetUId Intrinsic374756 ! Node: GMTime Intrinsic375061 ! Node: HostNm Intrinsic (subroutine)376069 ! Node: HostNm Intrinsic (function)377158 ! Node: Huge Intrinsic378000 ! Node: IAbs Intrinsic378320 ! Node: IAChar Intrinsic378711 ! Node: IAnd Intrinsic379251 ! Node: IArgC Intrinsic379739 ! Node: IBClr Intrinsic380115 ! Node: IBits Intrinsic380626 ! Node: IBSet Intrinsic381340 ! Node: IChar Intrinsic381842 ! Node: IDate Intrinsic (UNIX)383061 ! Node: IDiM Intrinsic383903 ! Node: IDInt Intrinsic384352 ! Node: IDNInt Intrinsic384745 ! Node: IEOr Intrinsic385144 ! Node: IErrNo Intrinsic385642 ! Node: IFix Intrinsic385969 ! Node: Imag Intrinsic386357 ! Node: ImagPart Intrinsic387362 ! Node: Index Intrinsic388388 ! Node: Int Intrinsic388941 ! Node: Int2 Intrinsic389656 ! Node: Int8 Intrinsic390365 ! Node: IOr Intrinsic391074 ! Node: IRand Intrinsic391554 ! Node: IsaTty Intrinsic392474 ! Node: IShft Intrinsic392898 ! Node: IShftC Intrinsic393728 ! Node: ISign Intrinsic394657 ! Node: ITime Intrinsic395107 ! Node: Kill Intrinsic (subroutine)395509 ! Node: Kind Intrinsic396345 ! Node: LBound Intrinsic396667 ! Node: Len Intrinsic396981 ! Node: Len_Trim Intrinsic397617 ! Node: LGe Intrinsic398029 ! Node: LGt Intrinsic399442 ! Node: Link Intrinsic (subroutine)400347 ! Node: LLe Intrinsic401311 ! Node: LLt Intrinsic402216 ! Node: LnBlnk Intrinsic403110 ! Node: Loc Intrinsic403513 ! Node: Log Intrinsic403944 ! Node: Log10 Intrinsic404535 ! Node: Logical Intrinsic405077 ! Node: Long Intrinsic405397 ! Node: LShift Intrinsic405921 ! Node: LStat Intrinsic (subroutine)406957 ! Node: LStat Intrinsic (function)408768 ! Node: LTime Intrinsic410330 ! Node: MatMul Intrinsic411334 ! Node: Max Intrinsic411649 ! Node: Max0 Intrinsic412200 ! Node: Max1 Intrinsic412651 ! Node: MaxExponent Intrinsic413135 ! Node: MaxLoc Intrinsic413472 ! Node: MaxVal Intrinsic413796 ! Node: MClock Intrinsic414115 ! Node: MClock8 Intrinsic415013 ! Node: Merge Intrinsic416201 ! Node: Min Intrinsic416514 ! Node: Min0 Intrinsic417065 ! Node: Min1 Intrinsic417516 ! Node: MinExponent Intrinsic418000 ! Node: MinLoc Intrinsic418337 ! Node: MinVal Intrinsic418661 ! Node: Mod Intrinsic418977 ! Node: Modulo Intrinsic419500 ! Node: MvBits Intrinsic419816 ! Node: Nearest Intrinsic420682 ! Node: NInt Intrinsic421003 ! Node: Not Intrinsic421841 ! Node: Or Intrinsic422236 ! Node: Pack Intrinsic422734 ! Node: PError Intrinsic423041 ! Node: Precision Intrinsic423495 ! Node: Present Intrinsic423827 ! Node: Product Intrinsic424154 ! Node: Radix Intrinsic424477 ! Node: Rand Intrinsic424791 ! Node: Random_Number Intrinsic425678 ! Node: Random_Seed Intrinsic426028 ! Node: Range Intrinsic426373 ! Node: Real Intrinsic426691 ! Node: RealPart Intrinsic427697 ! Node: Rename Intrinsic (subroutine)428730 ! Node: Repeat Intrinsic429701 ! Node: Reshape Intrinsic430034 ! Node: RRSpacing Intrinsic430360 ! Node: RShift Intrinsic430692 ! Node: Scale Intrinsic431690 ! Node: Scan Intrinsic432003 ! Node: Second Intrinsic (function)432324 ! Node: Second Intrinsic (subroutine)433155 ! Node: Selected_Int_Kind Intrinsic434130 ! Node: Selected_Real_Kind Intrinsic434518 ! Node: Set_Exponent Intrinsic434902 ! Node: Shape Intrinsic435256 ! Node: Short Intrinsic435576 ! Node: Sign Intrinsic436271 ! Node: Signal Intrinsic (subroutine)436871 ! Node: Sin Intrinsic439085 ! Node: SinH Intrinsic439560 ! Node: Sleep Intrinsic439933 ! Node: Sngl Intrinsic440275 ! Node: Spacing Intrinsic440664 ! Node: Spread Intrinsic440985 ! Node: SqRt Intrinsic441303 ! Node: SRand Intrinsic441907 ! Node: Stat Intrinsic (subroutine)442284 ! Node: Stat Intrinsic (function)443898 ! Node: Sum Intrinsic445261 ! Node: SymLnk Intrinsic (subroutine)445590 ! Node: System Intrinsic (subroutine)446621 ! Node: System_Clock Intrinsic447560 ! Node: Tan Intrinsic448684 ! Node: TanH Intrinsic449144 ! Node: Time Intrinsic (UNIX)449526 ! Node: Time8 Intrinsic450511 ! Node: Tiny Intrinsic451690 ! Node: Transfer Intrinsic452002 ! Node: Transpose Intrinsic452330 ! Node: Trim Intrinsic452661 ! Node: TtyNam Intrinsic (subroutine)452988 ! Node: TtyNam Intrinsic (function)453690 ! Node: UBound Intrinsic454259 ! Node: UMask Intrinsic (subroutine)454601 ! Node: Unlink Intrinsic (subroutine)455298 ! Node: Unpack Intrinsic456195 ! Node: Verify Intrinsic456527 ! Node: XOr Intrinsic456843 ! Node: ZAbs Intrinsic457359 ! Node: ZCos Intrinsic457728 ! Node: ZExp Intrinsic458101 ! Node: ZLog Intrinsic458474 ! Node: ZSin Intrinsic458847 ! Node: ZSqRt Intrinsic459221 ! Node: Scope and Classes of Names459578 ! Node: Underscores in Symbol Names460057 ! Node: I/O460301 ! Node: Fortran 90 Features461071 ! Node: Other Dialects463870 ! Node: Source Form465026 ! Node: Carriage Returns466238 ! Node: Tabs466564 ! Node: Short Lines467434 ! Node: Long Lines468405 ! Node: Ampersands469013 ! Node: Trailing Comment469264 ! Node: Debug Line470037 ! Node: Dollar Signs470703 ! Node: Case Sensitivity470986 ! Node: VXT Fortran479599 ! Node: Double Quote Meaning480779 ! Node: Exclamation Point481704 ! Node: Fortran 90482744 ! Node: Pedantic Compilation483793 ! Node: Distensions487754 ! Node: Ugly Implicit Argument Conversion488715 ! Node: Ugly Assumed-Size Arrays489326 ! Node: Ugly Complex Part Extraction491044 ! Node: Ugly Null Arguments492663 ! Node: Ugly Conversion of Initializers494263 ! Node: Ugly Integer Conversions496025 ! Node: Ugly Assigned Labels497130 ! Node: Compiler499058 ! Node: Compiler Limits499693 ! Node: Run-time Environment Limits500581 ! Node: Timer Wraparounds502520 ! Node: Year 2000 (Y2K) Problems503796 ! Node: Array Size508299 ! Node: Character-variable Length509481 ! Node: Year 10000 (Y10K) Problems509987 ! Node: Compiler Types510530 ! Node: Compiler Constants515238 ! Node: Compiler Intrinsics516094 ! Node: Intrinsic Groups517018 ! Node: Other Intrinsics520456 ! Node: ACosD Intrinsic528051 ! Node: AIMax0 Intrinsic528329 ! Node: AIMin0 Intrinsic528635 ! Node: AJMax0 Intrinsic528942 ! Node: AJMin0 Intrinsic529249 ! Node: ASinD Intrinsic529555 ! Node: ATan2D Intrinsic529858 ! Node: ATanD Intrinsic530163 ! Node: BITest Intrinsic530466 ! Node: BJTest Intrinsic530772 ! Node: CDAbs Intrinsic531078 ! Node: CDCos Intrinsic531451 ! Node: CDExp Intrinsic531826 ! Node: CDLog Intrinsic532201 ! Node: CDSin Intrinsic532576 ! Node: CDSqRt Intrinsic532952 ! Node: ChDir Intrinsic (function)533345 ! Node: ChMod Intrinsic (function)534173 ! Node: CosD Intrinsic535286 ! Node: DACosD Intrinsic535595 ! Node: DASinD Intrinsic535900 ! Node: DATan2D Intrinsic536208 ! Node: DATanD Intrinsic536519 ! Node: Date Intrinsic536825 ! Node: DbleQ Intrinsic537544 ! Node: DCmplx Intrinsic537845 ! Node: DConjg Intrinsic539476 ! Node: DCosD Intrinsic539861 ! Node: DFloat Intrinsic540164 ! Node: DFlotI Intrinsic540536 ! Node: DFlotJ Intrinsic540843 ! Node: DImag Intrinsic541149 ! Node: DReal Intrinsic541526 ! Node: DSinD Intrinsic542673 ! Node: DTanD Intrinsic542974 ! Node: DTime Intrinsic (function)543286 ! Node: FGet Intrinsic (function)544516 ! Node: FGetC Intrinsic (function)545289 ! Node: FloatI Intrinsic546105 ! Node: FloatJ Intrinsic546422 ! Node: FPut Intrinsic (function)546738 ! Node: FPutC Intrinsic (function)547474 ! Node: IDate Intrinsic (VXT)548267 ! Node: IIAbs Intrinsic549374 ! Node: IIAnd Intrinsic549681 ! Node: IIBClr Intrinsic549983 ! Node: IIBits Intrinsic550289 ! Node: IIBSet Intrinsic550596 ! Node: IIDiM Intrinsic550902 ! Node: IIDInt Intrinsic551205 ! Node: IIDNnt Intrinsic551511 ! Node: IIEOr Intrinsic551817 ! Node: IIFix Intrinsic552119 ! Node: IInt Intrinsic552419 ! Node: IIOr Intrinsic552715 ! Node: IIQint Intrinsic553012 ! Node: IIQNnt Intrinsic553317 ! Node: IIShftC Intrinsic553625 ! Node: IISign Intrinsic553936 ! Node: IMax0 Intrinsic554243 ! Node: IMax1 Intrinsic554545 ! Node: IMin0 Intrinsic554846 ! Node: IMin1 Intrinsic555147 ! Node: IMod Intrinsic555447 ! Node: INInt Intrinsic555744 ! Node: INot Intrinsic556043 ! Node: IZExt Intrinsic556340 ! Node: JIAbs Intrinsic556640 ! Node: JIAnd Intrinsic556941 ! Node: JIBClr Intrinsic557243 ! Node: JIBits Intrinsic557549 ! Node: JIBSet Intrinsic557856 ! Node: JIDiM Intrinsic558162 ! Node: JIDInt Intrinsic558465 ! Node: JIDNnt Intrinsic558771 ! Node: JIEOr Intrinsic559077 ! Node: JIFix Intrinsic559379 ! Node: JInt Intrinsic559679 ! Node: JIOr Intrinsic559975 ! Node: JIQint Intrinsic560272 ! Node: JIQNnt Intrinsic560577 ! Node: JIShft Intrinsic560884 ! Node: JIShftC Intrinsic561192 ! Node: JISign Intrinsic561503 ! Node: JMax0 Intrinsic561810 ! Node: JMax1 Intrinsic562112 ! Node: JMin0 Intrinsic562413 ! Node: JMin1 Intrinsic562714 ! Node: JMod Intrinsic563014 ! Node: JNInt Intrinsic563311 ! Node: JNot Intrinsic563610 ! Node: JZExt Intrinsic563907 ! Node: Kill Intrinsic (function)564217 ! Node: Link Intrinsic (function)564898 ! Node: QAbs Intrinsic565709 ! Node: QACos Intrinsic566016 ! Node: QACosD Intrinsic566317 ! Node: QASin Intrinsic566622 ! Node: QASinD Intrinsic566925 ! Node: QATan Intrinsic567230 ! Node: QATan2 Intrinsic567533 ! Node: QATan2D Intrinsic567840 ! Node: QATanD Intrinsic568151 ! Node: QCos Intrinsic568457 ! Node: QCosD Intrinsic568755 ! Node: QCosH Intrinsic569055 ! Node: QDiM Intrinsic569355 ! Node: QExp Intrinsic569651 ! Node: QExt Intrinsic569946 ! Node: QExtD Intrinsic570242 ! Node: QFloat Intrinsic570543 ! Node: QInt Intrinsic570847 ! Node: QLog Intrinsic571144 ! Node: QLog10 Intrinsic571441 ! Node: QMax1 Intrinsic571745 ! Node: QMin1 Intrinsic572047 ! Node: QMod Intrinsic572347 ! Node: QNInt Intrinsic572644 ! Node: QSin Intrinsic572943 ! Node: QSinD Intrinsic573240 ! Node: QSinH Intrinsic573540 ! Node: QSqRt Intrinsic573841 ! Node: QTan Intrinsic574141 ! Node: QTanD Intrinsic574438 ! Node: QTanH Intrinsic574738 ! Node: Rename Intrinsic (function)575051 ! Node: Secnds Intrinsic575855 ! Node: Signal Intrinsic (function)576454 ! Node: SinD Intrinsic579283 ! Node: SnglQ Intrinsic579592 ! Node: SymLnk Intrinsic (function)579904 ! Node: System Intrinsic (function)580771 ! Node: TanD Intrinsic582098 ! Node: Time Intrinsic (VXT)582412 ! Node: UMask Intrinsic (function)583166 ! Node: Unlink Intrinsic (function)583774 ! Node: ZExt Intrinsic584502 ! Node: Other Compilers584787 ! Node: Dropping f2c Compatibility587305 ! Node: Compilers Other Than f2c590374 ! Node: Other Languages592169 ! Node: Interoperating with C and C++592431 ! Node: C Interfacing Tools593461 ! Node: C Access to Type Information594386 ! Node: f2c Skeletons and Prototypes595070 ! Ref: f2c Skeletons and Prototypes-Footnote-1596514 ! Node: C++ Considerations596768 ! Node: Startup Code597432 ! Node: Debugging and Interfacing602218 ! Node: Main Program Unit604902 ! Node: Procedures607393 ! Node: Functions610048 ! Node: Names611663 ! Node: Common Blocks614803 ! Node: Local Equivalence Areas615064 ! Node: Complex Variables616045 ! Node: Arrays617162 ! Node: Adjustable Arrays620492 ! Node: Alternate Entry Points623348 ! Node: Alternate Returns630047 ! Node: Assigned Statement Labels630945 ! Node: Run-time Library Errors632787 ! Node: Collected Fortran Wisdom634736 ! Node: Advantages Over f2c636169 ! Node: Language Extensions637147 ! Node: Diagnostic Abilities638318 ! Node: Compiler Options638706 ! Node: Compiler Speed639751 ! Node: Program Speed640458 ! Node: Ease of Debugging642040 ! Node: Character and Hollerith Constants644467 ! Node: Block Data and Libraries645435 ! Node: Loops648761 ! Node: Working Programs653984 ! Node: Not My Type654725 ! Node: Variables Assumed To Be Zero656653 ! Node: Variables Assumed To Be Saved657705 ! Node: Unwanted Variables659073 ! Node: Unused Arguments659950 ! Node: Surprising Interpretations of Code660410 ! Node: Aliasing Assumed To Work661254 ! Node: Output Assumed To Flush667449 ! Node: Large File Unit Numbers670219 ! Node: Floating-point precision672368 ! Node: Inconsistent Calling Sequences673626 ! Node: Overly Convenient Options674603 ! Node: Faster Programs677906 ! Node: Aligned Data678349 ! Node: Prefer Automatic Uninitialized Variables683223 ! Node: Avoid f2c Compatibility684586 ! Node: Use Submodel Options685052 ! Node: Trouble686054 ! Node: But-bugs687512 ! Node: Signal 11 and Friends689282 ! Node: Cannot Link Fortran Programs691359 ! Node: Large Common Blocks692639 ! Node: Debugger Problems693062 ! Node: NeXTStep Problems693774 ! Node: Stack Overflow695597 ! Node: Nothing Happens698483 ! Node: Strange Behavior at Run Time700094 ! Node: Floating-point Errors702579 ! Node: Known Bugs708870 ! Node: Missing Features716161 ! Node: Better Source Model718085 ! Node: Fortran 90 Support719851 ! Node: Intrinsics in PARAMETER Statements720949 ! Node: Arbitrary Concatenation721697 ! Node: SELECT CASE on CHARACTER Type722097 ! Node: RECURSIVE Keyword722381 ! Node: Increasing Precision/Range722805 ! Node: Popular Non-standard Types724340 ! Node: Full Support for Compiler Types724677 ! Node: Array Bounds Expressions725310 ! Node: POINTER Statements725754 ! Node: Sensible Non-standard Constructs726634 ! Node: READONLY Keyword728956 ! Node: FLUSH Statement729863 ! Node: Expressions in FORMAT Statements730230 ! Node: Explicit Assembler Code731402 ! Node: Q Edit Descriptor731688 ! Node: Old-style PARAMETER Statements732189 ! Node: TYPE and ACCEPT I/O Statements732920 ! Node: STRUCTURE UNION RECORD MAP733483 ! Node: OPEN CLOSE and INQUIRE Keywords733966 ! Node: ENCODE and DECODE734943 ! Node: AUTOMATIC Statement736035 ! Node: Suppressing Space Padding737279 ! Node: Fortran Preprocessor738503 ! Node: Bit Operations on Floating-point Data739073 ! Node: Really Ugly Character Assignments739603 ! Node: POSIX Standard739975 ! Node: Floating-point Exception Handling740212 ! Node: Nonportable Conversions741611 ! Node: Large Automatic Arrays742151 ! Node: Support for Threads742555 ! Node: Enabling Debug Lines742977 ! Node: Better Warnings743351 ! Node: Gracefully Handle Sensible Bad Code744984 ! Node: Non-standard Conversions745725 ! Node: Non-standard Intrinsics746065 ! Node: Modifying DO Variable746478 ! Node: Better Pedantic Compilation747151 ! Node: Warn About Implicit Conversions747776 ! Node: Invalid Use of Hollerith Constant748360 ! Node: Dummy Array Without Dimensioning Dummy748900 ! Node: Invalid FORMAT Specifiers749810 ! Node: Ambiguous Dialects750208 ! Node: Unused Labels750616 ! Node: Informational Messages750835 ! Node: Uninitialized Variables at Run Time751236 ! Node: Portable Unformatted Files751839 ! Ref: Portable Unformatted Files-Footnote-1754792 ! Node: Better List-directed I/O754820 ! Node: Default to Console I/O755722 ! Node: Labels Visible to Debugger756367 ! Node: Disappointments756765 ! Node: Mangling of Names757400 ! Node: Multiple Definitions of External Names758247 ! Node: Limitation on Implicit Declarations759607 ! Node: Non-bugs759888 ! Node: Backslash in Constants761010 ! Node: Initializing Before Specifying765896 ! Node: Context-Sensitive Intrinsicness767035 ! Node: Context-Sensitive Constants768928 ! Node: Equivalence Versus Equality771881 ! Node: Order of Side Effects774921 ! Node: Warnings and Errors776646 ! Node: Open Questions778041 ! Node: Bugs778507 ! Node: Bug Criteria779192 ! Node: Bug Reporting785426 ! Node: Service785784 ! Node: Adding Options786247 ! Node: Projects790837 ! Node: Efficiency791769 ! Node: Better Optimization794663 ! Node: Simplify Porting798030 ! Node: More Extensions799782 ! Node: Machine Model802867 ! Node: Internals Documentation804150 ! Node: Internals Improvements804454 ! Node: Better Diagnostics807995 ! Node: Front End808909 ! Node: Overview of Sources809684 ! Node: Overview of Translation Process817118 ! Node: g77stripcard821393 ! Node: lex.c823867 ! Node: sta.c833404 ! Node: sti.c833515 ! Node: stq.c833626 ! Node: stb.c833737 ! Node: expr.c833849 ! Node: stc.c833963 ! Node: std.c834075 ! Node: ste.c834186 ! Node: Gotchas (Transforming)834314 ! Node: TBD (Transforming)842412 ! Node: Philosophy of Code Generation845105 ! Node: Two-pass Design851006 ! Node: Two-pass Code852160 ! Node: Why Two Passes852890 ! Node: Challenges Posed858954 ! Node: Transforming Statements861435 ! Node: Statements Needing Temporaries862282 ! Node: Transforming DO WHILE865043 ! Node: Transforming Iterative DO866223 ! Node: Transforming Block IF867049 ! Node: Transforming SELECT CASE868411 ! Node: Transforming Expressions871630 ! Node: Internal Naming Conventions873616 ! Node: Diagnostics876612 ! Node: CMPAMBIG878007 ! Node: EXPIMP884424 ! Node: INTGLOB885660 ! Node: LEX887904 ! Node: GLOBALS893359 ! Node: LINKFAIL896023 ! Node: Y2KBAD896647 ! Node: Keyword Index896997  End Tag Table diff -Nrc3pad gcc-3.3.2/libf2c/ChangeLog gcc-3.3.3/libf2c/ChangeLog *** gcc-3.3.2/libf2c/ChangeLog Thu Oct 16 19:44:39 2003 --- gcc-3.3.3/libf2c/ChangeLog Sat Feb 14 20:19:45 2004 *************** *** 1,3 **** --- 1,7 ---- + 2004-02-14 Release Manager + + * GCC 3.3.3 Released. + 2003-10-16 Release Manager * GCC 3.3.2 Released.