File f03_intrins.patch of Package ftnchek
--- ftnchek/symtab.h.1 2020-10-11 16:12:58.368738058 +0200
+++ ftnchek/symtab.h 2020-10-19 17:41:47.798760688 +0200
@@ -620,6 +620,7 @@ typedef struct MVHead { /* ModVarListHea
#define I_2or3 (-6) /* 2 or 3 arguments */
#define I_2to4 (-7) /* 2 to 4 arguments */
#define I_3or4 (-8) /* 3 or 4 arguments */
+#define I_2to5 (-9) /* 2 to 5 arguments */
/* for intrins_flags field */
--- ftnchek/symtab.c.1 2020-10-28 22:57:01.096736656 +0100
+++ ftnchek/symtab.c 2020-11-15 10:46:41.016144861 +0100
@@ -715,6 +715,13 @@ check_intrins_args(id, arg)
numargs_ok = (args_given == 3 || args_given == 4 ||
(opt_kind_index != -1 && args_given == 5));
break;
+ case I_2to5: /* 2 to 5 arguments allowed */
+ if (opt_kind_index == -1) { /* no KIND keyword found */
+ if (opt_kind_allowed && args_given == 6) /* last arg, no keyword */
+ opt_kind_index = 1;
+ }
+ numargs_ok = (args_given >= 2 && args_given <= (opt_kind_allowed? 6: 5));
+ break;
default: /* positive numargs: must agree */
if (opt_kind_index == -1) { /* no KIND keyword found */
if (opt_kind_allowed && args_given == (unsigned)(numargs+1)) /* last arg, no keyword */
--- ftnchek/intrins.c.3 2020-10-11 15:40:12.870234001 +0200
+++ ftnchek/intrins.c 2020-10-19 17:58:23.090243614 +0200
@@ -533,6 +533,25 @@ SYSTEM_CLOCK ([COUNT, Obtai
{"SYSTEM_CLOCK",I_0or1, I, type_SUBROUTINE,I_F90,NULL},
+ /* F2003 intrinsics, at the moment treated as F95 */
+{"C_ASSOCIATED", I_1or2, ANY, type_LOGICAL, I_F95|I_INQ,NULL},
+{"C_F_POINTER", I_2or3, ANY, type_SUBROUTINE,I_F95|I_MIXED_ARGS,NULL},
+{"C_F_PROCPOINTER", 2, ANY, type_SUBROUTINE,I_F95,NULL},
+{"C_FUNLOC", 1,I|R|D|C|Z|L|STR,type_INTEGER, I_F95,NULL},
+{"C_LOC", 1,I|R|D|C|Z|L|STR,type_INTEGER, I_F95,NULL},
+{"COMMAND_ARGUMENT_COUNT",0, 0, type_INTEGER, I_F95,NULL},
+{"EXTENDS_TYPE_OF", 2, ANY, type_LOGICAL, I_F95,NULL},
+{"GET_COMMAND", I_1to3, STR|I, type_SUBROUTINE,I_F95|I_MIXED_ARGS,NULL},
+{"GET_COMMAND_ARGUMENT",I_2to4, STR|I, type_SUBROUTINE,I_F95|I_MIXED_ARGS,NULL},
+{"GET_ENVIRONMENT_VARIABLE",I_2to5,STR|I|L,type_SUBROUTINE,I_F95|I_MIXED_ARGS,NULL},
+{"IS_IOSTAT_END", 1, I, type_LOGICAL, I_F95,NULL},
+{"IS_IOSTAT_EOR", 1, I, type_LOGICAL, I_F95,NULL},
+{"MOVE_ALLOC", 2, ANY, type_SUBROUTINE,I_F95,NULL},
+{"NEW_LINE", 1, STR, type_STRING, I_F95,NULL},
+{"SAME_TYPE_AS", 2, ANY, type_LOGICAL, I_F95,NULL},
+{"SELECTED_CHAR_KIND", 1, STR, type_INTEGER, I_F95,NULL}, /* TODO: write ii_selected_char_kind */
+
+
/* Nonstandard intrinsics */
/* Nonstandard double and quad precision intrinsics are given the