diff --git a/.prettierrc b/.prettierrc
index e10f5e20..430dd789 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -8,7 +8,7 @@
"quoteProps": "consistent",
"trailingComma": "es5",
"bracketSpacing": true,
- "jsxBracketSameLine": false,
+ "bracketSameLine": false,
"arrowParens": "avoid",
"endOfLine": "lf",
"embeddedLanguageFormatting": "auto"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index df7e173b..2578a5e7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Changed
+- Merged all Fortran intrinsics into a single `json` file
+ ([#424](https://github.com/fortran-lang/vscode-fortran-support/issues/424))
- Updates `README` text and animations, changes `SECURITY` and updates `package.json`
- Changes the interface of the extension to accommodate for the newest features
([#292](https://github.com/krvajal/vscode-fortran-support/issues/292))
diff --git a/doc/intrinsics/ABORT.json b/doc/intrinsics/ABORT.json
deleted file mode 100644
index b1f23751..00000000
--- a/doc/intrinsics/ABORT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ABORT",
- "docstr": "`ABORT` — Abort the program\n\n### Description\n`ABORT` causes immediate termination of the program. On operating\nsystems that support a core dump, `ABORT` will produce a core dump. \nIt will also print a backtrace, unless `-fno-backtrace` is given.\n\n\n\n### Syntax\n`CALL ABORT`\n\n\n### Return value\nDoes not return.\n\n\n\n### Example\n```\n\n\nprogram test_abort\n\n integer :: i = 1, j = 2\n\n if (i /= j) call abort\n\nend program test_abort\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nEXIT, KILL, BACKTRACE\n\n "
-}
diff --git a/doc/intrinsics/ABS.json b/doc/intrinsics/ABS.json
deleted file mode 100644
index 2ed98b3b..00000000
--- a/doc/intrinsics/ABS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ABS",
- "docstr": "`ABS` — Absolute value\n\n### Description\n`ABS(A)` computes the absolute value of `A`.\n\n\n\n### Syntax\n`RESULT = ABS(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and\nkind as the argument except the return value is `REAL` for a\n`COMPLEX` argument.\n\n\n\n### Example\n```\n\n\nprogram test_abs\n\n integer :: i = -1\n\n real :: x = -1.e0\n\n complex :: z = (-1.e0,0.e0)\n\n i = abs(i)\n\n x = abs(x)\n\n x = abs(z)\n\nend program test_abs\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ABS(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `CABS(A)` | `COMPLEX(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DABS(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n | `IABS(A)` | `INTEGER(4) A` | `INTEGER(4)` | Fortran 77 and later\n\n | `ZABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n | `CDABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ACCESS.json b/doc/intrinsics/ACCESS.json
deleted file mode 100644
index d7854e1a..00000000
--- a/doc/intrinsics/ACCESS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ACCESS",
- "docstr": "`ACCESS` — Checks file access modes\n\n### Description\n`ACCESS(NAME, MODE)` checks whether the file `NAME`\nexists, is readable, writable or executable. Except for the\nexecutable check, `ACCESS` can be replaced by\nFortran 95's `INQUIRE`.\n\n\n\n### Syntax\n`RESULT = ACCESS(NAME, MODE)`\n\n\n### Arguments\n\n \n of default kind with the\nfile name. Tailing blank are ignored unless the character `achar(0)`is present, then all characters up to and excluding `achar(0)` are\nused as file name. \n\n | `MODE` | Scalar `CHARACTER` of default kind with the\nfile access mode, may be any concatenation of `\"r\"` (readable),\n`\"w\"` (writable) and `\"x\"` (executable), or `\" \"` to check\nfor existence.\n\n\n\n\n\n\n### Return value\nReturns a scalar `INTEGER`, which is `0` if the file is\naccessible in the given mode; otherwise or if an invalid argument\nhas been given for `MODE` the value `1` is returned.\n\n\n\n### Example\n```\n\n\nprogram access_test\n\n implicit none\n\n character(len=*), parameter :: file = 'test.dat'\n\n character(len=*), parameter :: file2 = 'test.dat '//achar(0)\n\n if(access(file,' ') == 0) print *, trim(file),' is exists'\n\n if(access(file,'r') == 0) print *, trim(file),' is readable'\n\n if(access(file,'w') == 0) print *, trim(file),' is writable'\n\n if(access(file,'x') == 0) print *, trim(file),' is executable'\n\n if(access(file2,'rwx') == 0) &\n\n print *, trim(file2),' is readable, writable and executable'\n\nend program access_test\n\n```\n\n\n\n### Specific names\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\n\n"
-}
diff --git a/doc/intrinsics/ACHAR.json b/doc/intrinsics/ACHAR.json
deleted file mode 100644
index 977cab07..00000000
--- a/doc/intrinsics/ACHAR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ACHAR",
- "docstr": "`ACHAR` — Character in ASCII collating sequence\n\n### Description\n`ACHAR(I)` returns the character located at position `I`in the ASCII collating sequence.\n\n\n\n### Syntax\n`RESULT = ACHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` with a length of one. \nIf the `KIND` argument is present, the return value is of the\nspecified kind and of the default kind otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_achar\n\n character c\n\n c = achar(32)\n\nend program test_achar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCHAR, IACHAR, ICHAR\n\n "
-}
diff --git a/doc/intrinsics/ACOS.json b/doc/intrinsics/ACOS.json
deleted file mode 100644
index 8413c334..00000000
--- a/doc/intrinsics/ACOS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ACOS",
- "docstr": "`ACOS` — Arccosine function\n\n### Description\n`ACOS(X)` computes the arccosine of `X` (inverse of `COS(X)`).\n\n\n\n### Syntax\n`RESULT = ACOS(X)`\n\n\n### Arguments\n\n \n with a magnitude that is\nless than or equal to one - or the type shall be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n0 \\leq \\Re \\acos(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_acos\n\n real(8) :: x = 0.866_8\n\n x = acos(x)\n\nend program test_acos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ACOS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DACOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COS\n\n "
-}
diff --git a/doc/intrinsics/ACOSD.json b/doc/intrinsics/ACOSD.json
deleted file mode 100644
index 00b3a41c..00000000
--- a/doc/intrinsics/ACOSD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ACOSD",
- "docstr": "`ACOSD` — Arccosine function, degrees\n\n### Description\nACOSD(X) computes the arccosine of X in degrees (inverse of COSD(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ACOSD(X)\n### Arguments\n- X: The type shall either be REAL with a magnitude that is less than or equal to one - or the type shall be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range 0 \\leq \\Re \\acos(x) \\leq 180.\n"
-}
diff --git a/doc/intrinsics/ACOSH.json b/doc/intrinsics/ACOSH.json
deleted file mode 100644
index 164be3ca..00000000
--- a/doc/intrinsics/ACOSH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ACOSH",
- "docstr": "`ACOSH` — Inverse hyperbolic cosine function\n\n### Description\n`ACOSH(X)` computes the inverse hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`RESULT = ACOSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n 0 \\leq \\Im \\acosh(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nPROGRAM test_acosh\n\n REAL(8), DIMENSION(3) :: x = (/ 1.0, 2.0, 3.0 /)\n\n WRITE (*,*) ACOSH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DACOSH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COSH\n"
-}
diff --git a/doc/intrinsics/ADJUSTL.json b/doc/intrinsics/ADJUSTL.json
deleted file mode 100644
index 07c42d99..00000000
--- a/doc/intrinsics/ADJUSTL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ADJUSTL",
- "docstr": "`ADJUSTL` — Left adjust a string\n\n### Description\n`ADJUSTL(STRING)` will left adjust a string by removing leading spaces. \nSpaces are inserted at the end of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTL(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where leading spaces are removed and the same number of\nspaces are inserted on the end of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustl\n\n character(len=20) :: str = ' gfortran'\n\n str = adjustl(str)\n\n print *, str\n\nend program test_adjustl\n\n```\n\n\n\n### Standard\nFortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTR, TRIM\n"
-}
diff --git a/doc/intrinsics/ADJUSTR.json b/doc/intrinsics/ADJUSTR.json
deleted file mode 100644
index 37cc7710..00000000
--- a/doc/intrinsics/ADJUSTR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ADJUSTR",
- "docstr": "`ADJUSTR` — Right adjust a string\n\n### Description\n`ADJUSTR(STRING)` will right adjust a string by removing trailing spaces. \nSpaces are inserted at the start of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTR(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where trailing spaces are removed and the same number of\nspaces are inserted at the start of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustr\n\n character(len=20) :: str = 'gfortran'\n\n str = adjustr(str)\n\n print *, str\n\nend program test_adjustr\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTL, TRIM\n"
-}
diff --git a/doc/intrinsics/AIMAG.json b/doc/intrinsics/AIMAG.json
deleted file mode 100644
index 0c2691bd..00000000
--- a/doc/intrinsics/AIMAG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "AIMAG",
- "docstr": "`AIMAG` — Imaginary part of complex number\n\n### Description\n`AIMAG(Z)` yields the imaginary part of complex argument `Z`. \nThe `IMAG(Z)` and `IMAGPART(Z)` intrinsic functions are provided\nfor compatibility with *g77*, and their use in new code is\nstrongly discouraged.\n\n\n\n### Syntax\n`RESULT = AIMAG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the\nkind type parameter of the argument.\n\n\n\n### Example\n```\n\n\nprogram test_aimag\n\n complex(4) z4\n\n complex(8) z8\n\n z4 = cmplx(1.e0_4, 0.e0_4)\n\n z8 = cmplx(0.e0_8, 1.e0_8)\n\n print *, aimag(z4), dimag(z8)\n\nend program test_aimag\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AIMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `DIMAG(Z)` | `COMPLEX(8) Z` | `REAL(8)` | GNU extension\n\n | `IMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `IMAGPART(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/AINT.json b/doc/intrinsics/AINT.json
deleted file mode 100644
index 79b71d74..00000000
--- a/doc/intrinsics/AINT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "AINT",
- "docstr": "`AINT` — Truncate to a whole number\n\n### Description\n`AINT(A [, KIND])` truncates its argument to a whole number.\n\n\n\n### Syntax\n`RESULT = AINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If the magnitude of\n`X` is less than one, `AINT(X)` returns zero. If the\nmagnitude is equal to or greater than one then it returns the largest\nwhole number that does not exceed its magnitude. The sign is the same\nas the sign of `X`.\n\n\n\n### Example\n```\n\n\nprogram test_aint\n\n real(4) x4\n\n real(8) x8\n\n x4 = 1.234E0_4\n\n x8 = 4.321_8\n\n print *, aint(x4), dint(x8)\n\n x8 = aint(x4,8)\n\nend program test_aint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ALARM.json b/doc/intrinsics/ALARM.json
deleted file mode 100644
index 03e6e2cc..00000000
--- a/doc/intrinsics/ALARM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ALARM",
- "docstr": "`ALARM` — Execute a routine after a given delay\n\n### Description\n`ALARM(SECONDS, HANDLER [, STATUS])` causes external subroutine `HANDLER`\nto be executed after a delay of `SECONDS` by using `alarm(2)` to\nset up a signal and `signal(2)` to catch it. If `STATUS` is\nsupplied, it will be returned with the number of seconds remaining until\nany previously scheduled alarm was due to be delivered, or zero if there\nwas no previously scheduled alarm.\n\n\n\n### Syntax\n`CALL ALARM(SECONDS, HANDLER [, STATUS])`\n\n\n### Arguments\n\n \n | `SECONDS` | The type of the argument shall be a scalar\n`INTEGER`. It is `INTENT(IN)`. \n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. The scalar\nvalues may be either `SIG_IGN=1` to ignore the alarm generated\nor `SIG_DFL=0` to set the default action. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\nvariable of the default `INTEGER` kind. It is `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_alarm\n\n external handler_print\n\n integer i\n\n call alarm (3, handler_print, i)\n\n print *, i\n\n call sleep(10)\n\nend program test_alarm\n\n```\n\n \nThis will cause the external routine `handler_print` to be called\nafter 3 seconds. \n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/ALL.json b/doc/intrinsics/ALL.json
deleted file mode 100644
index 0ecdaf45..00000000
--- a/doc/intrinsics/ALL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ALL",
- "docstr": "`ALL` — All values in `MASK` along `DIM` are true\n\n### Description\n`ALL(MASK [, DIM])` determines if all the values are true in `MASK`\nin the array along dimension `DIM`.\n\n\n\n### Syntax\n`RESULT = ALL(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ALL(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ALL(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n
\n**(A)** `ALL(MASK)` is true if all elements of `MASK` are true. \nIt also is true if `MASK` has zero size; otherwise, it is false. \n\n**(B)** If the rank of `MASK` is one, then `ALL(MASK,DIM)` is equivalent\nto `ALL(MASK)`. If the rank is greater than one, then `ALL(MASK,DIM)`is determined by applying `ALL` to the array sections. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_all\n\n logical l\n\n l = all((/.true., .true., .true./))\n\n print *, l\n\n call section\n\n contains\n\n subroutine section\n\n integer a(2,3), b(2,3)\n\n a = 1\n\n b = 1\n\n b(2,2) = 2\n\n print *, all(a .eq. b, 1)\n\n print *, all(a .eq. b, 2)\n\n end subroutine section\n\nend program test_all\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/ALLOCATED.json b/doc/intrinsics/ALLOCATED.json
deleted file mode 100644
index 892c76e5..00000000
--- a/doc/intrinsics/ALLOCATED.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ALLOCATED",
- "docstr": "`ALLOCATED` — Status of an allocatable entity\n\n### Description\n`ALLOCATED(ARRAY)` and `ALLOCATED(SCALAR)` check the allocation\nstatus of `ARRAY` and `SCALAR`, respectively.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ALLOCATED(SCALAR)`
\n\n\n\n\n\n### Arguments\n\n \n array. \n\n | `SCALAR` | The argument shall be an `ALLOCATABLE` scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar `LOGICAL` with the default logical\nkind type parameter. If the argument is allocated, then the result is\n`.TRUE.`; otherwise, it returns `.FALSE.`\n\n\n### Example\n```\n\n\nprogram test_allocated\n\n integer :: i = 4\n\n real(4), allocatable :: x(:)\n\n if (.not. allocated(x)) allocate(x(i))\n\nend program test_allocated\n\n```\n\n \n\n### Standard\nFortran 95 and later. Note, the `SCALAR=` keyword and allocatable\nscalar entities are available in Fortran 2003 and later.\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/AND.json b/doc/intrinsics/AND.json
deleted file mode 100644
index d07dc646..00000000
--- a/doc/intrinsics/AND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "AND",
- "docstr": "`AND` — Bitwise logical AND\n\n### Description\nBitwise logical `AND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IAND intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = AND(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_and\n\n LOGICAL :: T = .TRUE., F = .FALSE.\n\n INTEGER :: a, b\n\n DATA a / Z'F' /, b / Z'3' /\n\n\n WRITE (*,*) AND(T, T), AND(T, F), AND(F, T), AND(F, F)\n\n WRITE (*,*) AND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IAND\n"
-}
diff --git a/doc/intrinsics/ANINT.json b/doc/intrinsics/ANINT.json
deleted file mode 100644
index c12f1efc..00000000
--- a/doc/intrinsics/ANINT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ANINT",
- "docstr": "`ANINT` — Nearest whole number\n\n### Description\n`ANINT(A [, KIND])` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = ANINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type real with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If `A` is greater than\nzero, `ANINT(A)` returns `AINT(X+0.5)`. If `A` is\nless than or equal to zero then it returns `AINT(X-0.5)`.\n\n\n\n### Example\n```\n\n\nprogram test_anint\n\n real(4) x4\n\n real(8) x8\n\n x4 = 1.234E0_4\n\n x8 = 4.321_8\n\n print *, anint(x4), dnint(x8)\n\n x8 = anint(x4,8)\n\nend program test_anint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DNINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ANY.json b/doc/intrinsics/ANY.json
deleted file mode 100644
index 136afca6..00000000
--- a/doc/intrinsics/ANY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ANY",
- "docstr": "`ANY` — Any value in `MASK` along `DIM` is true\n\n### Description\n`ANY(MASK [, DIM])` determines if any of the values in the logical array\n`MASK` along dimension `DIM` are `.TRUE.`.\n\n\n\n### Syntax\n`RESULT = ANY(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ANY(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ANY(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n \n**(A)** `ANY(MASK)` is true if any element of `MASK` is true;\notherwise, it is false. It also is false if `MASK` has zero size. \n\n**(B)** If the rank of `MASK` is one, then `ANY(MASK,DIM)` is equivalent\nto `ANY(MASK)`. If the rank is greater than one, then `ANY(MASK,DIM)`is determined by applying `ANY` to the array sections. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_any\n\n logical l\n\n l = any((/.true., .true., .true./))\n\n print *, l\n\n call section\n\n contains\n\n subroutine section\n\n integer a(2,3), b(2,3)\n\n a = 1\n\n b = 1\n\n b(2,2) = 2\n\n print *, any(a .eq. b, 1)\n\n print *, any(a .eq. b, 2)\n\n end subroutine section\n\nend program test_any\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/ASIN.json b/doc/intrinsics/ASIN.json
deleted file mode 100644
index c5d7a7b3..00000000
--- a/doc/intrinsics/ASIN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ASIN",
- "docstr": "`ASIN` — Arcsine function\n\n### Description\n`ASIN(X)` computes the arcsine of its `X` (inverse of `SIN(X)`).\n\n\n\n### Syntax\n`RESULT = ASIN(X)`\n\n\n### Arguments\n\n \n and a magnitude that is\nless than or equal to one - or be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\asin(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_asin\n\n real(8) :: x = 0.866_8\n\n x = asin(x)\n\nend program test_asin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ASIN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DASIN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SIN\n\n "
-}
diff --git a/doc/intrinsics/ASIND.json b/doc/intrinsics/ASIND.json
deleted file mode 100644
index a7f39c9d..00000000
--- a/doc/intrinsics/ASIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ASIND",
- "docstr": "`ASIND` — Arcsine function, degrees\n\n### Description\nASIND(X) computes the arcsine of its X in degrees (inverse of SIND(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ASIND(X)\n### Arguments\n- X: The type shall be either REAL and a magnitude that is less than or equal to one - or be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range -90 \\leq \\Re \\asin(x) \\leq 90.\n"
-}
diff --git a/doc/intrinsics/ASINH.json b/doc/intrinsics/ASINH.json
deleted file mode 100644
index 45700d77..00000000
--- a/doc/intrinsics/ASINH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ASINH",
- "docstr": "`ASINH` — Inverse hyperbolic sine function\n\n### Description\n`ASINH(X)` computes the inverse hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = ASINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\asinh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_asinh\n\n REAL(8), DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n WRITE (*,*) ASINH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DASINH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension.\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SINH\n"
-}
diff --git a/doc/intrinsics/ASSOCIATED.json b/doc/intrinsics/ASSOCIATED.json
deleted file mode 100644
index 83e2aae2..00000000
--- a/doc/intrinsics/ASSOCIATED.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ASSOCIATED",
- "docstr": "`ASSOCIATED` — Status of a pointer or pointer/target pair\n\n### Description\n`ASSOCIATED(POINTER [, TARGET])` determines the status of the pointer\n`POINTER` or if `POINTER` is associated with the target `TARGET`.\n\n\n\n### Syntax\n`RESULT = ASSOCIATED(POINTER [, TARGET])`\n\n\n### Arguments\n\n \n attribute\nand it can be of any type. \n\n | `TARGET` | (Optional) `TARGET` shall be a pointer or\na target. It must have the same type, kind type parameter, and\narray rank as `POINTER`.\n\n\nThe association status of neither `POINTER` nor `TARGET` shall be\nundefined.\n\n\n\n\n### Return value\n`ASSOCIATED(POINTER)` returns a scalar value of type `LOGICAL(4)`. \nThere are several cases:\n \n**(A) When the optional `TARGET` is not present then** `ASSOCIATED(POINTER)` is true if `POINTER` is associated with a target; otherwise, it returns false. \n\n**(B) If `TARGET` is present and a scalar target, the result is true if** `TARGET` is not a zero-sized storage sequence and the target associated with `POINTER` occupies the same storage units. If `POINTER` is\ndisassociated, the result is false. \n\n**(C) If `TARGET` is present and an array target, the result is true if** `TARGET` and `POINTER` have the same shape, are not zero-sized arrays,\nare arrays whose elements are not zero-sized storage sequences, and\n`TARGET` and `POINTER` occupy the same storage units in array element\norder. \nAs in case(B), the result is false, if `POINTER` is disassociated. \n\n**(D) If `TARGET` is present and an scalar pointer, the result is true** if `TARGET` is associated with `POINTER`, the target associated with\n`TARGET` are not zero-sized storage sequences and occupy the same storage\nunits. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n**(E) If `TARGET` is present and an array pointer, the result is true if** target associated with `POINTER` and the target associated with `TARGET`\nhave the same shape, are not zero-sized arrays, are arrays whose elements are\nnot zero-sized storage sequences, and `TARGET` and `POINTER` occupy\nthe same storage units in array element order. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n
\n\n\n\n### Example\n```\n\n\nprogram test_associated\n\n implicit none\n\n real, target :: tgt(2) = (/1., 2./)\n\n real, pointer :: ptr(:)\n\n ptr => tgt\n\n if (associated(ptr) .eqv. .false.) call abort\n\n if (associated(ptr,tgt) .eqv. .false.) call abort\n\nend program test_associated\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nNULL\n"
-}
diff --git a/doc/intrinsics/ATAN.json b/doc/intrinsics/ATAN.json
deleted file mode 100644
index 0c42e003..00000000
--- a/doc/intrinsics/ATAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATAN",
- "docstr": "`ATAN` — Arctangent function\n\n### Description\n`ATAN(X)` computes the arctangent of `X`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ATAN(Y, X)`
\n\n\n\n\n\n### Arguments\n\n \n;\nif `Y` is present, `X` shall be REAL. \n\n | `Y` shall be of the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIf `Y` is present, the result is identical to `ATAN2(Y,X)`. \nOtherwise, it the arcus tangent of `X`, where the real part of\nthe result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\atan(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan\n\n real(8) :: x = 2.866_8\n\n x = atan(x)\n\nend program test_atan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument and for two arguments\nFortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TAN\n\n "
-}
diff --git a/doc/intrinsics/ATAN2.json b/doc/intrinsics/ATAN2.json
deleted file mode 100644
index 2badc071..00000000
--- a/doc/intrinsics/ATAN2.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATAN2",
- "docstr": "`ATAN2` — Arctangent function\n\n### Description\n`ATAN2(Y, X)` computes the principal value of the argument\nfunction of the complex number X + i Y. This function can\nbe used to transform from Cartesian into polar coordinates and\nallows to determine the angle in the correct quadrant.\n\n\n\n### Syntax\n`RESULT = ATAN2(Y, X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | The type and kind type parameter shall be the same as `Y`. \nIf `Y` is zero, then `X` must be nonzero.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `Y`. It\nis the principal value of the complex number X + i Y. If `X`\nis nonzero, then it lies in the range -\\pi \\le \\atan (x) \\leq \\pi. \nThe sign is positive if `Y` is positive. If `Y` is zero, then\nthe return value is zero if `X` is strictly positive, \\pi if\n`X` is negative and `Y` is positive zero (or the processor does\nnot handle signed zeros), and -\\pi if `X` is negative and\n`Y` is negative zero. Finally, if `X` is zero, then the\nmagnitude of the result is \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan2\n\n real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n x = atan2(y,x)\n\nend program test_atan2\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN2(X, Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN2(X, Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ATAN2D.json b/doc/intrinsics/ATAN2D.json
deleted file mode 100644
index 4627ae8b..00000000
--- a/doc/intrinsics/ATAN2D.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATAN2D",
- "docstr": "`ATAN2D` — Arctangent function, degrees\n\n### Description\nATAN2D(Y, X) computes the principal value of the argument function of the complex number X + i Y in degrees. This function can be used to transform from Cartesian into polar coordinates and allows to determine the angle in the correct quadrant.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAN2D(Y, X)\n### Arguments\n- Y: The type shall be REAL.\n- X: The type and kind type parameter shall be the same as Y. If Y is zero, then X must be nonzero.\n### Return value\nThe return value has the same type and kind type parameter as Y. It is the principal value of the complex number X + i Y. If X is nonzero, then it lies in the range -180 \\le \\atan (x) \\leq 180. The sign is positive if Y is positive. If Y is zero, then the return value is zero if X is strictly positive, 180 if X is negative and Y is positive zero (or the processor does not handle signed zeros), and -180 if X is negative and Y is negative zero. Finally, if X is zero, then the magnitude of the result is 90.\n"
-}
diff --git a/doc/intrinsics/ATAND.json b/doc/intrinsics/ATAND.json
deleted file mode 100644
index b2e15f4b..00000000
--- a/doc/intrinsics/ATAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATAND",
- "docstr": "`ATAND` — Arctangent function, degrees\n\n### Description\nATAND(X) computes the arctangent of X in degrees (inverse of TAND).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAND(X)\nRESULT = ATAND(Y, X)\n### Arguments\n- X: The type shall be REAL or COMPLEX; if Y is present, X shall be REAL.- Y: Shall be of the same type and kind as X.\n### Return value\nThe return value is of the same type and kind as X. If Y is present, the result is identical to ATAND2(Y,X). Otherwise, it is the arcus tangent of X, where the real part of the result is in degrees and lies in the range -90 \\leq \\Re \\atand(x) \\leq 90."
-}
diff --git a/doc/intrinsics/ATANH.json b/doc/intrinsics/ATANH.json
deleted file mode 100644
index da8c9c5e..00000000
--- a/doc/intrinsics/ATANH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATANH",
- "docstr": "`ATANH` — Inverse hyperbolic tangent function\n\n### Description\n`ATANH(X)` computes the inverse hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`RESULT = ATANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\atanh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_atanh\n\n REAL, DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n WRITE (*,*) ATANH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DATANH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TANH\n"
-}
diff --git a/doc/intrinsics/ATOMIC_ADD.json b/doc/intrinsics/ATOMIC_ADD.json
deleted file mode 100644
index b8114daa..00000000
--- a/doc/intrinsics/ATOMIC_ADD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_ADD",
- "docstr": "`ATOMIC_ADD` — Atomic ADD operation\n\n### Description\n`ATOMIC_ADD(ATOM, VALUE)` atomically adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_ADD (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*]\n\n call atomic_add (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_ADD, ISO_FORTRAN_ENV,\nATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_AND.json b/doc/intrinsics/ATOMIC_AND.json
deleted file mode 100644
index c5873963..00000000
--- a/doc/intrinsics/ATOMIC_AND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_AND",
- "docstr": "`ATOMIC_AND` — Atomic bitwise AND operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_AND (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*]\n\n call atomic_and (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_AND, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_CAS.json b/doc/intrinsics/ATOMIC_CAS.json
deleted file mode 100644
index 2598f2dd..00000000
--- a/doc/intrinsics/ATOMIC_CAS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_CAS",
- "docstr": "`ATOMIC_CAS` — Atomic compare and swap\n\n### Description\n`ATOMIC_CAS` compares the variable `ATOM` with the value of\n`COMPARE`; if the value is the same, `ATOM` is set to the value\nof `NEW`. Additionally, `OLD` is set to the value of `ATOM`\nthat was used for the comparison. When `STAT` is present and the invokation\nwas successful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `COMPARE` | Scalar variable of the same type and kind as\n`ATOM`. \n\n | `NEW` | Scalar variable of the same type as `ATOM`. If kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n logical(atomic_logical_kind) :: atom[*], prev\n\n call atomic_cas (atom[1], prev, .false., .true.))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_REF, ISO_FORTRAN_ENV\n"
-}
diff --git a/doc/intrinsics/ATOMIC_DEFINE.json b/doc/intrinsics/ATOMIC_DEFINE.json
deleted file mode 100644
index aa074608..00000000
--- a/doc/intrinsics/ATOMIC_DEFINE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_DEFINE",
- "docstr": "`ATOMIC_DEFINE` — Setting a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` defines the variable `ATOM` with the value\n`VALUE` atomically. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*]\n\n call atomic_define (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_REF, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_FETCH_ADD.json b/doc/intrinsics/ATOMIC_FETCH_ADD.json
deleted file mode 100644
index 6bb2da52..00000000
--- a/doc/intrinsics/ATOMIC_FETCH_ADD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_FETCH_ADD",
- "docstr": "`ATOMIC_FETCH_ADD` — Atomic ADD operation with prior fetch\n\n### Description\n`ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)` atomically stores the value of\n`ATOM` in `OLD` and adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_ADD (ATOM, VALUE, old [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*], old\n\n call atomic_add (atom[1], this_image(), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_ADD, ISO_FORTRAN_ENV,\nATOMIC_FETCH_AND, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_FETCH_AND.json b/doc/intrinsics/ATOMIC_FETCH_AND.json
deleted file mode 100644
index eddac75d..00000000
--- a/doc/intrinsics/ATOMIC_FETCH_AND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_FETCH_AND",
- "docstr": "`ATOMIC_FETCH_AND` — Atomic bitwise AND operation with prior fetch\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise AND between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*], old\n\n call atomic_fetch_and (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_AND, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_FETCH_OR.json b/doc/intrinsics/ATOMIC_FETCH_OR.json
deleted file mode 100644
index 74279036..00000000
--- a/doc/intrinsics/ATOMIC_FETCH_OR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_FETCH_OR",
- "docstr": "`ATOMIC_FETCH_OR` — Atomic bitwise OR operation with prior fetch\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise OR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*], old\n\n call atomic_fetch_or (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_OR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_FETCH_XOR.json b/doc/intrinsics/ATOMIC_FETCH_XOR.json
deleted file mode 100644
index 0e992125..00000000
--- a/doc/intrinsics/ATOMIC_FETCH_XOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_FETCH_XOR",
- "docstr": "`ATOMIC_FETCH_XOR` — Atomic bitwise XOR operation with prior fetch\n\n### Description\n`ATOMIC_XOR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise XOR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*], old\n\n call atomic_fetch_xor (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_XOR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_OR.json b/doc/intrinsics/ATOMIC_OR.json
deleted file mode 100644
index 5caad138..00000000
--- a/doc/intrinsics/ATOMIC_OR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_OR",
- "docstr": "`ATOMIC_OR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_OR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*]\n\n call atomic_or (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_OR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_REF.json b/doc/intrinsics/ATOMIC_REF.json
deleted file mode 100644
index 013a3451..00000000
--- a/doc/intrinsics/ATOMIC_REF.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_REF",
- "docstr": "`ATOMIC_REF` — Obtaining the value of a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` atomically assigns the value of the\nvariable `ATOM` to `VALUE`. When `STAT` is present and the\ninvokation was successful, it is assigned the value 0. If it is present and the\ninvokation has failed, it is assigned a positive value; in particular, for a\ncoindexed `ATOM`, if the remote image has stopped, it is assigned the value\nof `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image\nhas failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_REF(VALUE, ATOM [, STAT])`\n\n\n### Arguments\n\n \n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n logical(atomic_logical_kind) :: atom[*]\n\n logical :: val\n\n call atomic_ref (atom, .false.)\n\n ! ...\n\n call atomic_ref (atom, val)\n\n if (val) then\n\n print *, \"Obtained\"\n\n end if\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR,\nATOMIC_FETCH_XOR\n"
-}
diff --git a/doc/intrinsics/ATOMIC_XOR.json b/doc/intrinsics/ATOMIC_XOR.json
deleted file mode 100644
index 7ada3e9e..00000000
--- a/doc/intrinsics/ATOMIC_XOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ATOMIC_XOR",
- "docstr": "`ATOMIC_XOR` — Atomic bitwise OR operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nXOR between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_XOR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n integer(atomic_int_kind) :: atom[*]\n\n call atomic_xor (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_XOR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
-}
diff --git a/doc/intrinsics/BACKTRACE.json b/doc/intrinsics/BACKTRACE.json
deleted file mode 100644
index c2112557..00000000
--- a/doc/intrinsics/BACKTRACE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BACKTRACE",
- "docstr": "`BACKTRACE` — Show a backtrace\n\n### Description\n`BACKTRACE` shows a backtrace at an arbitrary place in user code. Program\nexecution continues normally afterwards. The backtrace information is printed\nto the unit corresponding to `ERROR_UNIT` in `ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`CALL BACKTRACE`\n\n\n### Arguments\nNone\n\n\n\n### Standard\nGNU Extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT\n"
-}
diff --git a/doc/intrinsics/BESSEL_J0.json b/doc/intrinsics/BESSEL_J0.json
deleted file mode 100644
index 717e1551..00000000
--- a/doc/intrinsics/BESSEL_J0.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_J0",
- "docstr": "`BESSEL_J0` — Bessel function of the first kind of order 0\n\n### Description\n`BESSEL_J0(X)` computes the Bessel function of the first kind of\norder 0 of `X`. This function is available under the name\n`BESJ0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.4027... \\leq Bessel (0,x) \\leq 1. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj0\n\n real(8) :: x = 0.0_8\n\n x = bessel_j0(x)\n\nend program test_besj0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/BESSEL_J1.json b/doc/intrinsics/BESSEL_J1.json
deleted file mode 100644
index 86812b61..00000000
--- a/doc/intrinsics/BESSEL_J1.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_J1",
- "docstr": "`BESSEL_J1` — Bessel function of the first kind of order 1\n\n### Description\n`BESSEL_J1(X)` computes the Bessel function of the first kind of\norder 1 of `X`. This function is available under the name\n`BESJ1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.5818... \\leq Bessel (0,x) \\leq 0.5818 . It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj1\n\n real(8) :: x = 1.0_8\n\n x = bessel_j1(x)\n\nend program test_besj1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/BESSEL_JN.json b/doc/intrinsics/BESSEL_JN.json
deleted file mode 100644
index d475df2b..00000000
--- a/doc/intrinsics/BESSEL_JN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_JN",
- "docstr": "`BESSEL_JN` — Bessel function of the first kind\n\n### Description\n`BESSEL_JN(N, X)` computes the Bessel function of the first kind of\norder `N` of `X`. This function is available under the name\n`BESJN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_JN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_JN(N1, N2, X)`
\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_JN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besjn\n\n real(8) :: x = 1.0_8\n\n x = bessel_jn(5,x)\n\nend program test_besjn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJN(N, X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | `REAL(8) X` | | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_JN(N1, N2, X)`\n\n"
-}
diff --git a/doc/intrinsics/BESSEL_Y0.json b/doc/intrinsics/BESSEL_Y0.json
deleted file mode 100644
index 507b3340..00000000
--- a/doc/intrinsics/BESSEL_Y0.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_Y0",
- "docstr": "`BESSEL_Y0` — Bessel function of the second kind of order 0\n\n### Description\n`BESSEL_Y0(X)` computes the Bessel function of the second kind of\norder 0 of `X`. This function is available under the name\n`BESY0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy0\n\n real(8) :: x = 0.0_8\n\n x = bessel_y0(x)\n\nend program test_besy0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/BESSEL_Y1.json b/doc/intrinsics/BESSEL_Y1.json
deleted file mode 100644
index b7ac7622..00000000
--- a/doc/intrinsics/BESSEL_Y1.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_Y1",
- "docstr": "`BESSEL_Y1` — Bessel function of the second kind of order 1\n\n### Description\n`BESSEL_Y1(X)` computes the Bessel function of the second kind of\norder 1 of `X`. This function is available under the name\n`BESY1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy1\n\n real(8) :: x = 1.0_8\n\n x = bessel_y1(x)\n\nend program test_besy1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/BESSEL_YN.json b/doc/intrinsics/BESSEL_YN.json
deleted file mode 100644
index 91d9bd42..00000000
--- a/doc/intrinsics/BESSEL_YN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BESSEL_YN",
- "docstr": "`BESSEL_YN` — Bessel function of the second kind\n\n### Description\n`BESSEL_YN(N, X)` computes the Bessel function of the second kind of\norder `N` of `X`. This function is available under the name\n`BESYN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_YN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_YN(N1, N2, X)` \n\n\n\n\n\n### Arguments\n\n \n . \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_YN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besyn\n\n real(8) :: x = 1.0_8\n\n x = bessel_yn(5,x)\n\nend program test_besyn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESYN(N,X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | | `REAL(8) X` | | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_YN(N1, N2, X)`\n\n"
-}
diff --git a/doc/intrinsics/BGE.json b/doc/intrinsics/BGE.json
deleted file mode 100644
index eb31e632..00000000
--- a/doc/intrinsics/BGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BGE",
- "docstr": "`BGE` — Bitwise greater than or equal to\n\n### Description\nDetermines whether an integral is a bitwise greater than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BGE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BLE, BLT\n"
-}
diff --git a/doc/intrinsics/BGT.json b/doc/intrinsics/BGT.json
deleted file mode 100644
index 156715e3..00000000
--- a/doc/intrinsics/BGT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BGT",
- "docstr": "`BGT` — Bitwise greater than\n\n### Description\nDetermines whether an integral is a bitwise greater than another.\n\n\n\n### Syntax\n`RESULT = BGT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BLE, BLT\n"
-}
diff --git a/doc/intrinsics/BIT_SIZE.json b/doc/intrinsics/BIT_SIZE.json
deleted file mode 100644
index 5a091632..00000000
--- a/doc/intrinsics/BIT_SIZE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BIT_SIZE",
- "docstr": "`BIT_SIZE` — Bit size inquiry function\n\n### Description\n`BIT_SIZE(I)` returns the number of bits (integer precision plus sign bit)\nrepresented by the type of `I`. The result of `BIT_SIZE(I)` is\nindependent of the actual value of `I`.\n\n\n\n### Syntax\n`RESULT = BIT_SIZE(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_bit_size\n\n integer :: i = 123\n\n integer :: size\n\n size = bit_size(i)\n\n print *, size\n\nend program test_bit_size\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/BLE.json b/doc/intrinsics/BLE.json
deleted file mode 100644
index d85a67a7..00000000
--- a/doc/intrinsics/BLE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BLE",
- "docstr": "`BLE` — Bitwise less than or equal to\n\n### Description\nDetermines whether an integral is a bitwise less than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BLE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BGE, BLT\n"
-}
diff --git a/doc/intrinsics/BLT.json b/doc/intrinsics/BLT.json
deleted file mode 100644
index 090c92d4..00000000
--- a/doc/intrinsics/BLT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BLT",
- "docstr": "`BLT` — Bitwise less than\n\n### Description\nDetermines whether an integral is a bitwise less than another.\n\n\n\n### Syntax\n`RESULT = BLT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BGT, BLE\n"
-}
diff --git a/doc/intrinsics/BTEST.json b/doc/intrinsics/BTEST.json
deleted file mode 100644
index 5d3e2c8c..00000000
--- a/doc/intrinsics/BTEST.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "BTEST",
- "docstr": "`BTEST` — Bit test function\n\n### Description\n`BTEST(I,POS)` returns logical `.TRUE.` if the bit at `POS`\nin `I` is set. The counting of the bits starts at 0.\n\n\n\n### Syntax\n`RESULT = BTEST(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`\n\n\n### Example\n```\n\n\nprogram test_btest\n\n integer :: i = 32768 + 1024 + 64\n\n integer :: pos\n\n logical :: bool\n\n do pos=0,16\n\n bool = btest(i, pos)\n\n print *, pos, bool\n\n end do\n\nend program test_btest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/CEILING.json b/doc/intrinsics/CEILING.json
deleted file mode 100644
index 43c41226..00000000
--- a/doc/intrinsics/CEILING.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CEILING",
- "docstr": "`CEILING` — Integer ceiling function\n\n### Description\n`CEILING(A)` returns the least integer greater than or equal to `A`.\n\n\n\n### Syntax\n`RESULT = CEILING(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand a default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_ceiling\n\n real :: x = 63.29\n\n real :: y = -63.59\n\n print *, ceiling(x) ! returns 64\n\n print *, ceiling(y) ! returns -63\n\nend program test_ceiling\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nFLOOR, NINT\n\n "
-}
diff --git a/doc/intrinsics/CHAR.json b/doc/intrinsics/CHAR.json
deleted file mode 100644
index f68d4cde..00000000
--- a/doc/intrinsics/CHAR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CHAR",
- "docstr": "`CHAR` — Character conversion function\n\n### Description\n`CHAR(I [, KIND])` returns the character represented by the integer `I`.\n\n\n\n### Syntax\n`RESULT = CHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER(1)`\n\n\n### Example\n```\n\n\nprogram test_char\n\n integer :: i = 74\n\n character(1) :: c\n\n c = char(i)\n\n print *, i, c ! returns 'J'\n\nend program test_char\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CHAR(I)` | `INTEGER I` | `CHARACTER(LEN=1)` | F77 and later\n\n\n\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, IACHAR, ICHAR\n\n "
-}
diff --git a/doc/intrinsics/CHDIR.json b/doc/intrinsics/CHDIR.json
deleted file mode 100644
index 07d9cc4f..00000000
--- a/doc/intrinsics/CHDIR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CHDIR",
- "docstr": "`CHDIR` — Change working directory\n\n### Description\nChange current working directory to a specified path.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHDIR(NAME)` \n\n\n\n\n\n### Arguments\n\n \n of default\nkind and shall specify a valid path within the file system. \n\n | `STATUS` | (Optional) `INTEGER` status flag of the default\nkind. Returns 0 on success, and a system specific and nonzero error code\notherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_chdir\n\n CHARACTER(len=255) :: path\n\n CALL getcwd(path)\n\n WRITE(*,*) TRIM(path)\n\n CALL chdir(\"/tmp\")\n\n CALL getcwd(path)\n\n WRITE(*,*) TRIM(path)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nGETCWD\n"
-}
diff --git a/doc/intrinsics/CHMOD.json b/doc/intrinsics/CHMOD.json
deleted file mode 100644
index bfc8bebe..00000000
--- a/doc/intrinsics/CHMOD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CHMOD",
- "docstr": "`CHMOD` — Change access permissions of files\n\n### Description\n`CHMOD` changes the permissions of a file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHMOD(NAME, MODE)` \n\n\n\n\n\n### Arguments\n\n \n\n | `NAME` | Scalar `CHARACTER` of default kind with the\nfile name. Trailing blanks are ignored unless the character\n`achar(0)` is present, then all characters up to and excluding\n`achar(0)` are used as the file name.\n\n \n\n\n | `MODE` | Scalar `CHARACTER` of default kind giving the\nfile permission. `MODE` uses the same syntax as the `chmod` utility\nas defined by the POSIX standard. The argument shall either be a string of\na nonnegative octal number or a symbolic mode.\n\n \n\n\n | `STATUS` | (optional) scalar `INTEGER`, which is\n`0` on success and nonzero otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `STATUS` is set to `0` on success and nonzero\notherwise.\n\n\n\n### Example\n`CHMOD` as subroutine\n```\n\n\nprogram chmod_test\n\n implicit none\n\n integer :: status\n\n call chmod('test.dat','u+x',status)\n\n print *, 'Status: ', status\n\nend program chmod_test\n\n```\n\n \n`CHMOD` as function:\n \n program chmod_test\n implicit none\n integer :: status\n status = chmod('test.dat','u+x')\n print *, 'Status: ', status\n end program chmod_test\n \n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
-}
diff --git a/doc/intrinsics/CMPLX.json b/doc/intrinsics/CMPLX.json
deleted file mode 100644
index fd080701..00000000
--- a/doc/intrinsics/CMPLX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CMPLX",
- "docstr": "`CMPLX` — Complex conversion function\n\n### Description\n`CMPLX(X [, Y [, KIND]])` returns a complex number where `X` is converted to\nthe real component. If `Y` is present it is converted to the imaginary\ncomponent. If `Y` is not present then the imaginary component is set to\n0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = CMPLX(X [, Y [, KIND]])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional; only allowed if `X` is not\n`COMPLEX`.) May be `INTEGER` or `REAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of `COMPLEX` type, with a kind equal to\n`KIND` if it is specified. If `KIND` is not specified, the\nresult is of the default `COMPLEX` kind, regardless of the kinds of\n`X` and `Y`.\n\n\n\n### Example\n```\n\n\nprogram test_cmplx\n\n integer :: i = 42\n\n real :: x = 3.14\n\n complex :: z\n\n z = cmplx(i, x)\n\n print *, z, cmplx(x)\n\nend program test_cmplx\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCOMPLEX\n"
-}
diff --git a/doc/intrinsics/COMMAND_ARGUMENT_COUNT.json b/doc/intrinsics/COMMAND_ARGUMENT_COUNT.json
deleted file mode 100644
index c063e839..00000000
--- a/doc/intrinsics/COMMAND_ARGUMENT_COUNT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COMMAND_ARGUMENT_COUNT",
- "docstr": "`COMMAND_ARGUMENT_COUNT` — Get number of command line arguments\n\n### Description\n`COMMAND_ARGUMENT_COUNT` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`RESULT = COMMAND_ARGUMENT_COUNT()`\n\n\n### Arguments\n\n \n | None\n\n\n\n\n\n\n### Return value\nThe return value is an `INTEGER` of default kind.\n\n\n\n### Example\n```\n\n\nprogram test_command_argument_count\n\n integer :: count\n\n count = command_argument_count()\n\n print *, count\n\nend program test_command_argument_count\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nGET_COMMAND, GET_COMMAND_ARGUMENT\n"
-}
diff --git a/doc/intrinsics/COMPILER_OPTIONS.json b/doc/intrinsics/COMPILER_OPTIONS.json
deleted file mode 100644
index 746961c1..00000000
--- a/doc/intrinsics/COMPILER_OPTIONS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COMPILER_OPTIONS",
- "docstr": "`COMPILER_OPTIONS` — Options passed to the compiler\n\n### Description\n`COMPILER_OPTIONS` returns a string with the options used for\ncompiling.\n\n\n\n### Syntax\n`STR = COMPILER_OPTIONS()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the compiler flags used to compile the file, which called\nthe `COMPILER_OPTIONS` intrinsic.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n compiler_version(), ' using the options ', &\n\n compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_VERSION, ISO_FORTRAN_ENV\n"
-}
diff --git a/doc/intrinsics/COMPILER_VERSION.json b/doc/intrinsics/COMPILER_VERSION.json
deleted file mode 100644
index 24e41d1e..00000000
--- a/doc/intrinsics/COMPILER_VERSION.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COMPILER_VERSION",
- "docstr": "`COMPILER_VERSION` — Compiler version string\n\n### Description\n`COMPILER_VERSION` returns a string with the name and the\nversion of the compiler.\n\n\n\n### Syntax\n`STR = COMPILER_VERSION()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the name of the compiler and its version number.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n compiler_version(), ' using the options ', &\n\n compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_OPTIONS, ISO_FORTRAN_ENV\n"
-}
diff --git a/doc/intrinsics/COMPLEX.json b/doc/intrinsics/COMPLEX.json
deleted file mode 100644
index d2bf507b..00000000
--- a/doc/intrinsics/COMPLEX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COMPLEX",
- "docstr": "`COMPLEX` — Complex conversion function\n\n### Description\n`COMPLEX(X, Y)` returns a complex number where `X` is converted\nto the real component and `Y` is converted to the imaginary\ncomponent.\n\n\n\n### Syntax\n`RESULT = COMPLEX(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type may be `INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nIf `X` and `Y` are both of `INTEGER` type, then the return\nvalue is of default `COMPLEX` type.\n\n \nIf `X` and `Y` are of `REAL` type, or one is of `REAL`type and one is of `INTEGER` type, then the return value is of\n`COMPLEX` type with a kind equal to that of the `REAL`argument with the highest precision.\n\n\n\n\n### Example\n```\n\n\nprogram test_complex\n\n integer :: i = 42\n\n real :: x = 3.14\n\n print *, complex(i, x)\n\nend program test_complex\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCMPLX\n"
-}
diff --git a/doc/intrinsics/CONJG.json b/doc/intrinsics/CONJG.json
deleted file mode 100644
index 487d6384..00000000
--- a/doc/intrinsics/CONJG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CONJG",
- "docstr": "`CONJG` — Complex conjugate function\n\n### Description\n`CONJG(Z)` returns the conjugate of `Z`. If `Z` is `(x, y)`then the result is `(x, -y)`\n\n\n### Syntax\n`Z = CONJG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX`.\n\n\n\n### Example\n```\n\n\nprogram test_conjg\n\n complex :: z = (2.0, 3.0)\n\n complex(8) :: dz = (2.71_8, -3.14_8)\n\n z= conjg(z)\n\n print *, z\n\n dz = dconjg(dz)\n\n print *, dz\n\nend program test_conjg\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CONJG(Z)` | `COMPLEX Z` | `COMPLEX` | GNU extension\n\n | `DCONJG(Z)` | `COMPLEX(8) Z` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/COS.json b/doc/intrinsics/COS.json
deleted file mode 100644
index 63b9acf4..00000000
--- a/doc/intrinsics/COS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COS",
- "docstr": "`COS` — Cosine function\n\n### Description\n`COS(X)` computes the cosine of `X`.\n\n\n\n### Syntax\n`RESULT = COS(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. The real part\nof the result is in radians. If `X` is of the type `REAL`,\nthe return value lies in the range -1 \\leq \\cos (x) \\leq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cos\n\n real :: x = 0.0\n\n x = cos(x)\n\nend program test_cos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CCOS(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOS\n\n "
-}
diff --git a/doc/intrinsics/COSD.json b/doc/intrinsics/COSD.json
deleted file mode 100644
index 43900d59..00000000
--- a/doc/intrinsics/COSD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COSD",
- "docstr": "`COSD` — Cosine function, degrees\n\n### Description\nCOSD(X) computes the cosine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COSD(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees. If X is of the type REAL, the return value lies in the range -1 \\leq \\cosd (x) \\leq 1.\n"
-}
diff --git a/doc/intrinsics/COSH.json b/doc/intrinsics/COSH.json
deleted file mode 100644
index 8832d7f6..00000000
--- a/doc/intrinsics/COSH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COSH",
- "docstr": "`COSH` — Hyperbolic cosine function\n\n### Description\n`COSH(X)` computes the hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`X = COSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value has a lower bound of one,\n\\cosh (x) \\geq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cosh\n\n real(8) :: x = 1.0_8\n\n x = cosh(x)\n\nend program test_cosh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COSH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOSH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOSH\n\n "
-}
diff --git a/doc/intrinsics/COTAN.json b/doc/intrinsics/COTAN.json
deleted file mode 100644
index 469e5345..00000000
--- a/doc/intrinsics/COTAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COTAN",
- "docstr": "`COTAN` — Cotangent function\n\n### Description\nCOTAN(X) computes the cotangent of X. Equivalent to COS(x) divided by SIN(x), or 1 / TAN(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAN(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in radians.\n"
-}
diff --git a/doc/intrinsics/COTAND.json b/doc/intrinsics/COTAND.json
deleted file mode 100644
index 274bab6f..00000000
--- a/doc/intrinsics/COTAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COTAND",
- "docstr": "`COTAND` — Cotangent function, degrees\n\n### Description\nCOTAND(X) computes the cotangent of X in degrees. Equivalent to COSD(x) divided by SIND(x), or 1 / TAND(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
-}
diff --git a/doc/intrinsics/COUNT.json b/doc/intrinsics/COUNT.json
deleted file mode 100644
index 0d76789b..00000000
--- a/doc/intrinsics/COUNT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "COUNT",
- "docstr": "`COUNT` — Count function\n\n### Description\n\nCounts the number of `.TRUE.` elements in a logical `MASK`,\nor, if the `DIM` argument is supplied, counts the number of\nelements along each row of the array in the `DIM` direction. \nIf the array has zero size, or all of the elements of `MASK` are\n`.FALSE.`, then the result is `0`.\n\n\n\n### Syntax\n`RESULT = COUNT(MASK [, DIM, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `DIM` | (Optional) The type shall be `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is present, the result is an array with a rank one less\nthan the rank of `ARRAY`, and a size corresponding to the shape\nof `ARRAY` with the `DIM` dimension removed.\n\n\n\n### Example\n```\n\n\nprogram test_count\n\n integer, dimension(2,3) :: a, b\n\n logical, dimension(2,3) :: mask\n\n a = reshape( (/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /))\n\n b = reshape( (/ 0, 7, 3, 4, 5, 8 /), (/ 2, 3 /))\n\n print '(3i3)', a(1,:)\n\n print '(3i3)', a(2,:)\n\n print *\n\n print '(3i3)', b(1,:)\n\n print '(3i3)', b(2,:)\n\n print *\n\n mask = a.ne.b\n\n print '(3l3)', mask(1,:)\n\n print '(3l3)', mask(2,:)\n\n print *\n\n print '(3i3)', count(mask)\n\n print *\n\n print '(3i3)', count(mask, 1)\n\n print *\n\n print '(3i3)', count(mask, 2)\n\nend program test_count\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/CO_BROADCAST.json b/doc/intrinsics/CO_BROADCAST.json
deleted file mode 100644
index 312a157a..00000000
--- a/doc/intrinsics/CO_BROADCAST.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CO_BROADCAST",
- "docstr": "`CO_BROADCAST` — Copy a value to all images the current set of images\n\n### Description\n`CO_BROADCAST` copies the value of argument `A` on the image with\nimage index `SOURCE_IMAGE` to all images in the current team. `A`\nbecomes defined as if by intrinsic assignment. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | INTENT(INOUT) argument; shall have the same\ndynamic type and type paramters on all images of the current team. If it\nis an array, it shall have the same shape on all images. \n\n | `SOURCE_IMAGE` | a scalar integer expression. \nIt shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n integer :: val(3)\n\n if (this_image() == 1) then\n\n val = [1, 5, 3]\n\n end if\n\n call co_broadcast (val, source_image=1)\n\n print *, this_image, \":\", val\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_SUM, CO_REDUCE\n"
-}
diff --git a/doc/intrinsics/CO_MAX.json b/doc/intrinsics/CO_MAX.json
deleted file mode 100644
index 1028f873..00000000
--- a/doc/intrinsics/CO_MAX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CO_MAX",
- "docstr": "`CO_MAX` — Maximal value on the current set of images\n\n### Description\n`CO_MAX` determines element-wise the maximal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the maximum\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n integer :: val\n\n val = this_image ()\n\n call co_max (val, result_image=1)\n\n if (this_image() == 1) then\n\n write(*,*) \"Maximal value\", val ! prints num_images()\n\n end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_SUM, CO_REDUCE, CO_BROADCAST\n"
-}
diff --git a/doc/intrinsics/CO_MIN.json b/doc/intrinsics/CO_MIN.json
deleted file mode 100644
index a4580767..00000000
--- a/doc/intrinsics/CO_MIN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CO_MIN",
- "docstr": "`CO_MIN` — Minimal value on the current set of images\n\n### Description\n`CO_MIN` determines element-wise the minimal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the minimal\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n integer :: val\n\n val = this_image ()\n\n call co_min (val, result_image=1)\n\n if (this_image() == 1) then\n\n write(*,*) \"Minimal value\", val ! prints 1\n\n end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_SUM, CO_REDUCE, CO_BROADCAST\n"
-}
diff --git a/doc/intrinsics/CO_REDUCE.json b/doc/intrinsics/CO_REDUCE.json
deleted file mode 100644
index 2fabb51c..00000000
--- a/doc/intrinsics/CO_REDUCE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CO_REDUCE",
- "docstr": "`CO_REDUCE` — Reduction of values on the current set of images\n\n### Description\n`CO_REDUCE` determines element-wise the reduction of the value of `A`\non all images of the current team. The pure function passed as `OPERATOR`\nis used to pairwise reduce the values of `A` by passing either the value\nof `A` of different images or the result values of such a reduction as\nargument. If `A` is an array, the deduction is done element wise. If\n`RESULT_IMAGE` is present, the result values are returned in `A` on\nthe specified image only and the value of `A` on the other images become\nundefined. If `RESULT_IMAGE` is not present, the value is returned on all\nimages. If the execution was successful and `STAT` is present, it is\nassigned the value zero. If the execution failed, `STAT` gets assigned\na nonzero value and, if present, `ERRMSG` gets assigned a value describing\nthe occurred error.\n\n\n\n### Syntax\n`CALL CO_REDUCE(A, OPERATOR, [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n argument and shall be\nnonpolymorphic. If it is allocatable, it shall be allocated; if it is a pointer,\nit shall be associated. `A` shall have the same type and type parameters on\nall images of the team; if it is an array, it shall have the same shape on all\nimages. \n\n | `OPERATOR` | pure function with two scalar nonallocatable\narguments, which shall be nonpolymorphic and have the same type and type\nparameters as `A`. The function shall return a nonallocatable scalar of\nthe same type and type parameters as `A`. The function shall be the same on\nall images and with regards to the arguments mathematically commutative and\nassociative. Note that `OPERATOR` may not be an elemental function, unless\nit is an intrisic function. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n integer :: val\n\n val = this_image ()\n\n call co_reduce (val, result_image=1, operator=myprod)\n\n if (this_image() == 1) then\n\n write(*,*) \"Product value\", val ! prints num_images() factorial\n\n end if\n\ncontains\n\n pure function myprod(a, b)\n\n integer, value :: a, b\n\n integer :: myprod\n\n myprod = a * b\n\n end function myprod\n\nend program test\n\n```\n\n\n\n### Notes\nWhile the rules permit in principle an intrinsic function, none of the\nintrinsics in the standard fulfill the criteria of having a specific\nfunction, which takes two arguments of the same type and returning that\ntype as result.\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_MAX, CO_SUM, CO_BROADCAST\n"
-}
diff --git a/doc/intrinsics/CO_SUM.json b/doc/intrinsics/CO_SUM.json
deleted file mode 100644
index 8b126fbf..00000000
--- a/doc/intrinsics/CO_SUM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CO_SUM",
- "docstr": "`CO_SUM` — Sum of values on the current set of images\n\n### Description\n`CO_SUM` sums up the values of each element of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the summed-up\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or complex variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n integer :: val\n\n val = this_image ()\n\n call co_sum (val, result_image=1)\n\n if (this_image() == 1) then\n\n write(*,*) \"The sum is \", val ! prints (n**2 + n)/2, with n = num_images()\n\n end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_REDUCE, CO_BROADCAST\n"
-}
diff --git a/doc/intrinsics/CPU_TIME.json b/doc/intrinsics/CPU_TIME.json
deleted file mode 100644
index ad81c171..00000000
--- a/doc/intrinsics/CPU_TIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CPU_TIME",
- "docstr": "`CPU_TIME` — CPU elapsed time in seconds\n\n### Description\nReturns a `REAL` value representing the elapsed CPU time in\nseconds. This is useful for testing segments of code to determine\nexecution time.\n\n \nIf a time source is available, time will be reported with microsecond\nresolution. If no time source is available, `TIME` is set to\n`-1.0`.\n\n \n\nNote that `TIME` may contain a, system dependent, arbitrary offset\nand may not start with `0.0`. For `CPU_TIME`, the absolute\nvalue is meaningless, only differences between subsequent calls to\nthis subroutine, as shown in the example below, should be used.\n\n\n\n\n### Syntax\n`CALL CPU_TIME(TIME)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_cpu_time\n\n real :: start, finish\n\n call cpu_time(start)\n\n ! put code to test here\n\n call cpu_time(finish)\n\n print '(\"Time = \",f6.3,\" seconds.\")',finish-start\n\nend program test_cpu_time\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM_CLOCK, DATE_AND_TIME\n"
-}
diff --git a/doc/intrinsics/CSHIFT.json b/doc/intrinsics/CSHIFT.json
deleted file mode 100644
index 4444426c..00000000
--- a/doc/intrinsics/CSHIFT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CSHIFT",
- "docstr": "`CSHIFT` — Circular shift elements of an array\n\n### Description\n`CSHIFT(ARRAY, SHIFT [, DIM])` performs a circular shift on elements of\n`ARRAY` along the dimension of `DIM`. If `DIM` is omitted it is\ntaken to be `1`. `DIM` is a scalar of type `INTEGER` in the\nrange of 1 \\leq DIM \\leq n) where n is the rank of `ARRAY`. \nIf the rank of `ARRAY` is one, then all elements of `ARRAY` are shifted\nby `SHIFT` places. If rank is greater than one, then all complete rank one\nsections of `ARRAY` along the given dimension are shifted. Elements\nshifted out one end of each rank one section are shifted back in the other end.\n\n\n\n### Syntax\n`RESULT = CSHIFT(ARRAY, SHIFT [, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_cshift\n\n integer, dimension(3,3) :: a\n\n a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n print '(3i3)', a(1,:)\n\n print '(3i3)', a(2,:)\n\n print '(3i3)', a(3,:)\n\n a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)\n\n print *\n\n print '(3i3)', a(1,:)\n\n print '(3i3)', a(2,:)\n\n print '(3i3)', a(3,:)\n\nend program test_cshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/CTIME.json b/doc/intrinsics/CTIME.json
deleted file mode 100644
index 5401792e..00000000
--- a/doc/intrinsics/CTIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "CTIME",
- "docstr": "`CTIME` — Convert a time into a string\n\n### Description\n`CTIME` converts a system time value, such as returned by\n`TIME8`, to a string. The output will be of the form ‘Sat\nAug 19 18:13:14 1995’.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `RESULT = CTIME(TIME)`.\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `RESULT` | The type shall be of type `CHARACTER` and\nof default kind. It is an `INTENT(OUT)` argument. If the length\nof this variable is too short for the time and date string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe converted date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_ctime\n\n integer(8) :: i\n\n character(len=30) :: date\n\n i = time8()\n\n\n ! Do something, main part of the program\n\n\n call ctime(i,date)\n\n print *, 'Program was started on ', date\n\nend program test_ctime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, GMTIME, LTIME, TIME, TIME8\n"
-}
diff --git a/doc/intrinsics/C_ASSOCIATED.json b/doc/intrinsics/C_ASSOCIATED.json
deleted file mode 100644
index 640db87e..00000000
--- a/doc/intrinsics/C_ASSOCIATED.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_ASSOCIATED",
- "docstr": "`C_ASSOCIATED` — Status of a C pointer\n\n### Description\n`C_ASSOCIATED(c_ptr_1[, c_ptr_2])` determines the status of the C pointer\n`c_ptr_1` or if `c_ptr_1` is associated with the target `c_ptr_2`.\n\n\n\n### Syntax\n`RESULT = C_ASSOCIATED(c_ptr_1[, c_ptr_2])`\n\n\n### Arguments\n\n \n. \n\n | `c_ptr_2` | (Optional) Scalar of the same type as `c_ptr_1`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`; it is `.false.` if either\n`c_ptr_1` is a C NULL pointer or if `c_ptr1` and `c_ptr_2`\npoint to different addresses.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n implicit none\n\n real, pointer :: a\n\n type(c_ptr) :: b\n\n if(c_associated(b, c_loc(a))) &\n\n stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_LOC, C_FUNLOC\n"
-}
diff --git a/doc/intrinsics/C_FUNLOC.json b/doc/intrinsics/C_FUNLOC.json
deleted file mode 100644
index c471fb71..00000000
--- a/doc/intrinsics/C_FUNLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_FUNLOC",
- "docstr": "`C_FUNLOC` — Obtain the C address of a procedure\n\n### Description\n`C_FUNLOC(x)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_FUNLOC(x)`\n\n\n### Arguments\n\n \n | `x` | Interoperable function or pointer to such function.\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_FUNPTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nmodule x\n\n use iso_c_binding\n\n implicit none\n\ncontains\n\n subroutine sub(a) bind(c)\n\n real(c_float) :: a\n\n a = sqrt(a)+5.0\n\n end subroutine sub\n\nend module x\n\nprogram main\n\n use iso_c_binding\n\n use x\n\n implicit none\n\n interface\n\n subroutine my_routine(p) bind(c,name='myC_func')\n\n import :: c_funptr\n\n type(c_funptr), intent(in) :: p\n\n end subroutine\n\n end interface\n\n call my_routine(c_funloc(sub))\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_LOC, C_F_POINTER, C_F_PROCPOINTER\n"
-}
diff --git a/doc/intrinsics/C_F_POINTER.json b/doc/intrinsics/C_F_POINTER.json
deleted file mode 100644
index 1079b4e3..00000000
--- a/doc/intrinsics/C_F_POINTER.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_F_POINTER",
- "docstr": "`C_F_POINTER` — Convert C into Fortran pointer\n\n### Description\n`C_F_POINTER(CPTR, FPTR[, SHAPE])` assigns the target of the C pointer\n`CPTR` to the Fortran pointer `FPTR` and specifies its shape.\n\n\n\n### Syntax\n`CALL C_F_POINTER(CPTR, FPTR[, SHAPE])`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | pointer interoperable with `cptr`. It is\n`INTENT(OUT)`. \n\n | `SHAPE` | (Optional) Rank-one array of type `INTEGER`with `INTENT(IN)`. It shall be present\nif and only if `fptr` is an array. The size\nmust be equal to the rank of `fptr`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n use iso_c_binding\n\n implicit none\n\n interface\n\n subroutine my_routine(p) bind(c,name='myC_func')\n\n import :: c_ptr\n\n type(c_ptr), intent(out) :: p\n\n end subroutine\n\n end interface\n\n type(c_ptr) :: cptr\n\n real,pointer :: a(:)\n\n call my_routine(cptr)\n\n call c_f_pointer(cptr, a, [12])\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_PROCPOINTER\n"
-}
diff --git a/doc/intrinsics/C_F_PROCPOINTER.json b/doc/intrinsics/C_F_PROCPOINTER.json
deleted file mode 100644
index b466c937..00000000
--- a/doc/intrinsics/C_F_PROCPOINTER.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_F_PROCPOINTER",
- "docstr": "`C_F_PROCPOINTER` — Convert C into Fortran procedure pointer\n\n### Description\n`C_F_PROCPOINTER(CPTR, FPTR)` Assign the target of the C function pointer\n`CPTR` to the Fortran procedure pointer `FPTR`.\n\n\n\n### Syntax\n`CALL C_F_PROCPOINTER(cptr, fptr)`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | procedure pointer interoperable with `cptr`. It is\n`INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n use iso_c_binding\n\n implicit none\n\n abstract interface\n\n function func(a)\n\n import :: c_float\n\n real(c_float), intent(in) :: a\n\n real(c_float) :: func\n\n end function\n\n end interface\n\n interface\n\n function getIterFunc() bind(c,name=\"getIterFunc\")\n\n import :: c_funptr\n\n type(c_funptr) :: getIterFunc\n\n end function\n\n end interface\n\n type(c_funptr) :: cfunptr\n\n procedure(func), pointer :: myFunc\n\n cfunptr = getIterFunc()\n\n call c_f_procpointer(cfunptr, myFunc)\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_POINTER\n"
-}
diff --git a/doc/intrinsics/C_LOC.json b/doc/intrinsics/C_LOC.json
deleted file mode 100644
index 41d13f79..00000000
--- a/doc/intrinsics/C_LOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_LOC",
- "docstr": "`C_LOC` — Obtain the C address of an object\n\n### Description\n`C_LOC(X)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.\n\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_PTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n implicit none\n\n real, pointer :: a\n\n type(c_ptr) :: b\n\n if(c_associated(b, c_loc(a))) &\n\n stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_FUNLOC, C_F_POINTER, C_F_PROCPOINTER\n"
-}
diff --git a/doc/intrinsics/C_SIZEOF.json b/doc/intrinsics/C_SIZEOF.json
deleted file mode 100644
index 5bff0ced..00000000
--- a/doc/intrinsics/C_SIZEOF.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "C_SIZEOF",
- "docstr": "`C_SIZEOF` — Size in bytes of an expression\n\n### Description\n`C_SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = C_SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be an interoperable data entity.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components.\n\n\n\n### Example\n```\n\n\nuse iso_c_binding\n\ninteger(c_int) :: i\n\nreal(c_float) :: r, s(5)\n\nprint *, (c_sizeof(s)/c_sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_C_BINDING`\n\n\n### See also\nSIZEOF, STORAGE_SIZE\n"
-}
diff --git a/doc/intrinsics/DATE_AND_TIME.json b/doc/intrinsics/DATE_AND_TIME.json
deleted file mode 100644
index 6300445f..00000000
--- a/doc/intrinsics/DATE_AND_TIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DATE_AND_TIME",
- "docstr": "`DATE_AND_TIME` — Date and time subroutine\n\n### Description\n`DATE_AND_TIME(DATE, TIME, ZONE, VALUES)` gets the corresponding date and\ntime information from the real-time system clock. `DATE` is\n`INTENT(OUT)` and has form ccyymmdd. `TIME` is `INTENT(OUT)` and\nhas form hhmmss.sss. `ZONE` is `INTENT(OUT)` and has form (+-)hhmm,\nrepresenting the difference with respect to Coordinated Universal Time (UTC). \nUnavailable time and date parameters return blanks.\n\n \n`VALUES` is `INTENT(OUT)` and provides the following:\n\n \n\n: | The year\n\n | | `VALUE(2)`: | The month\n\n | | `VALUE(3)`: | The day of the month\n\n | | `VALUE(4)`: | Time difference with UTC in minutes\n\n | | `VALUE(5)`: | The hour of the day\n\n | | `VALUE(6)`: | The minutes of the hour\n\n | | `VALUE(7)`: | The seconds of the minute\n\n | | `VALUE(8)`: | The milliseconds of the second\n\n\n\n\n\n\n### Syntax\n`CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])`\n\n\n### Arguments\n\n \n\nor larger, and of default kind. \n\n | `TIME` | (Optional) The type shall be `CHARACTER(LEN=10)`or larger, and of default kind. \n\n | `ZONE` | (Optional) The type shall be `CHARACTER(LEN=5)`or larger, and of default kind. \n\n | `VALUES` | (Optional) The type shall be `INTEGER(8)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_time_and_date\n\n character(8) :: date\n\n character(10) :: time\n\n character(5) :: zone\n\n integer,dimension(8) :: values\n\n ! using keyword arguments\n\n call date_and_time(date,time,zone,values)\n\n call date_and_time(DATE=date,ZONE=zone)\n\n call date_and_time(TIME=time)\n\n call date_and_time(VALUES=values)\n\n print '(a,2x,a,2x,a)', date, time, zone\n\n print '(8i5)', values\n\nend program test_time_and_date\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCPU_TIME, SYSTEM_CLOCK\n"
-}
diff --git a/doc/intrinsics/DBLE.json b/doc/intrinsics/DBLE.json
deleted file mode 100644
index eb95ac8c..00000000
--- a/doc/intrinsics/DBLE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DBLE",
- "docstr": "`DBLE` — Double conversion function\n\n### Description\n`DBLE(A)` Converts `A` to double precision real type.\n\n\n\n### Syntax\n`RESULT = DBLE(A)`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type double precision real.\n\n\n\n### Example\n```\n\n\nprogram test_dble\n\n real :: x = 2.18\n\n integer :: i = 5\n\n complex :: z = (2.3,1.14)\n\n print *, dble(x), dble(i), dble(z)\n\nend program test_dble\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nREAL\n"
-}
diff --git a/doc/intrinsics/DCMPLX.json b/doc/intrinsics/DCMPLX.json
deleted file mode 100644
index 9734b100..00000000
--- a/doc/intrinsics/DCMPLX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DCMPLX",
- "docstr": "`DCMPLX` — Double complex conversion function\n\n### Description\n`DCMPLX(X [,Y])` returns a double complex number where `X` is\nconverted to the real component. If `Y` is present it is converted to the\nimaginary component. If `Y` is not present then the imaginary component is\nset to 0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = DCMPLX(X [, Y])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional if `X` is not `COMPLEX`.) May be\n`INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX(8)`\n\n\n### Example\n```\n\n\nprogram test_dcmplx\n\n integer :: i = 42\n\n real :: x = 3.14\n\n complex :: z\n\n z = cmplx(i, x)\n\n print *, dcmplx(i)\n\n print *, dcmplx(x)\n\n print *, dcmplx(z)\n\n print *, dcmplx(x,i)\n\nend program test_dcmplx\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/DIGITS.json b/doc/intrinsics/DIGITS.json
deleted file mode 100644
index e5a6742c..00000000
--- a/doc/intrinsics/DIGITS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DIGITS",
- "docstr": "`DIGITS` — Significant binary digits function\n\n### Description\n`DIGITS(X)` returns the number of significant binary digits of the internal\nmodel representation of `X`. For example, on a system using a 32-bit\nfloating point representation, a default real number would likely return 24.\n\n\n\n### Syntax\n`RESULT = DIGITS(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_digits\n\n integer :: i = 12345\n\n real :: x = 3.143\n\n real(8) :: y = 2.33\n\n print *, digits(i)\n\n print *, digits(x)\n\n print *, digits(y)\n\nend program test_digits\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/DIM.json b/doc/intrinsics/DIM.json
deleted file mode 100644
index 3fcbfffb..00000000
--- a/doc/intrinsics/DIM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DIM",
- "docstr": "`DIM` — Positive difference\n\n### Description\n`DIM(X,Y)` returns the difference `X-Y` if the result is positive;\notherwise returns zero.\n\n\n\n### Syntax\n`RESULT = DIM(X, Y)`\n\n\n### Arguments\n\n \n\n\n | `Y` | The type shall be the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` or `REAL`.\n\n\n\n### Example\n```\n\n\nprogram test_dim\n\n integer :: i\n\n real(8) :: x\n\n i = dim(4, 15)\n\n x = dim(4.345_8, 2.111_8)\n\n print *, i\n\n print *, x\n\nend program test_dim\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DIM(X,Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `IDIM(X,Y)` | `INTEGER(4) X, Y` | `INTEGER(4)` | Fortran 77 and later\n\n | `DDIM(X,Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/DOT_PRODUCT.json b/doc/intrinsics/DOT_PRODUCT.json
deleted file mode 100644
index d41c1c76..00000000
--- a/doc/intrinsics/DOT_PRODUCT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DOT_PRODUCT",
- "docstr": "`DOT_PRODUCT` — Dot product function\n\n### Description\n`DOT_PRODUCT(VECTOR_A, VECTOR_B)` computes the dot product multiplication\nof two vectors `VECTOR_A` and `VECTOR_B`. The two vectors may be\neither numeric or logical and must be arrays of rank one and of equal size. If\nthe vectors are `INTEGER` or `REAL`, the result is\n`SUM(VECTOR_A*VECTOR_B)`. If the vectors are `COMPLEX`, the result\nis `SUM(CONJG(VECTOR_A)*VECTOR_B)`. If the vectors are `LOGICAL`,\nthe result is `ANY(VECTOR_A .AND. VECTOR_B)`.\n\n\n\n### Syntax\n`RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)`\n\n\n### Arguments\n\n \n, rank 1. \n\n | `VECTOR_B` | The type shall be numeric if `VECTOR_A` is of numeric type or `LOGICAL` if `VECTOR_A` is of type `LOGICAL`. `VECTOR_B` shall be a rank-one array.\n\n\n\n\n\n\n### Return value\nIf the arguments are numeric, the return value is a scalar of numeric type,\n`INTEGER`, `REAL`, or `COMPLEX`. If the arguments are\n`LOGICAL`, the return value is `.TRUE.` or `.FALSE.`.\n\n\n\n### Example\n```\n\n\nprogram test_dot_prod\n\n integer, dimension(3) :: a, b\n\n a = (/ 1, 2, 3 /)\n\n b = (/ 4, 5, 6 /)\n\n print '(3i3)', a\n\n print *\n\n print '(3i3)', b\n\n print *\n\n print *, dot_product(a,b)\n\nend program test_dot_prod\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/DPROD.json b/doc/intrinsics/DPROD.json
deleted file mode 100644
index c7a2d9bf..00000000
--- a/doc/intrinsics/DPROD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DPROD",
- "docstr": "`DPROD` — Double product function\n\n### Description\n`DPROD(X,Y)` returns the product `X*Y`.\n\n\n\n### Syntax\n`RESULT = DPROD(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type shall be `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dprod\n\n real :: x = 5.2\n\n real :: y = 2.3\n\n real(8) :: d\n\n d = dprod(x,y)\n\n print *, d\n\nend program test_dprod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DPROD(X,Y)` | `REAL(4) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/DREAL.json b/doc/intrinsics/DREAL.json
deleted file mode 100644
index 74f2ecec..00000000
--- a/doc/intrinsics/DREAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DREAL",
- "docstr": "`DREAL` — Double real part function\n\n### Description\n`DREAL(Z)` returns the real part of complex variable `Z`.\n\n\n\n### Syntax\n`RESULT = DREAL(A)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dreal\n\n complex(8) :: z = (1.3_8,7.2_8)\n\n print *, dreal(z)\n\nend program test_dreal\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nAIMAG\n\n "
-}
diff --git a/doc/intrinsics/DSHIFTL.json b/doc/intrinsics/DSHIFTL.json
deleted file mode 100644
index 6ea5e634..00000000
--- a/doc/intrinsics/DSHIFTL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DSHIFTL",
- "docstr": "`DSHIFTL` — Combined left shift\n\n### Description\n`DSHIFTL(I, J, SHIFT)` combines bits of `I` and `J`. The\nrightmost `SHIFT` bits of the result are the leftmost `SHIFT`\nbits of `J`, and the remaining bits are the rightmost bits of\n`I`.\n\n\n\n### Syntax\n`RESULT = DSHIFTL(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTR\n"
-}
diff --git a/doc/intrinsics/DSHIFTR.json b/doc/intrinsics/DSHIFTR.json
deleted file mode 100644
index 477f972e..00000000
--- a/doc/intrinsics/DSHIFTR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DSHIFTR",
- "docstr": "`DSHIFTR` — Combined right shift\n\n### Description\n`DSHIFTR(I, J, SHIFT)` combines bits of `I` and `J`. The\nleftmost `SHIFT` bits of the result are the rightmost `SHIFT`\nbits of `I`, and the remaining bits are the leftmost bits of\n`J`.\n\n\n\n### Syntax\n`RESULT = DSHIFTR(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTL\n"
-}
diff --git a/doc/intrinsics/DTIME.json b/doc/intrinsics/DTIME.json
deleted file mode 100644
index 4e3ef1b8..00000000
--- a/doc/intrinsics/DTIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "DTIME",
- "docstr": "`DTIME` — Execution time subroutine (or function)\n\n### Description\n`DTIME(VALUES, TIME)` initially returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to VALUES(1) +\nVALUES(2) .\n\n \nSubsequent invocations of `DTIME` return values accumulated since the\nprevious invocation.\n\n \n\nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nPlease note, that this implementation is thread safe if used within OpenMP\ndirectives, i.e., its state will be consistent while called from multiple\nthreads. However, if `DTIME` is called from multiple threads, the result\nis still the time since the last invocation. This may not give the intended\nresults. If possible, use `CPU_TIME` instead.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | | `VALUES(2)`: | System time in seconds. \n\n | | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = DTIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the last invocation or since the start of program\nexecution if not called before.\n\n\n\n### Example\n```\n\n\nprogram test_dtime\n\n integer(8) :: i, j\n\n real, dimension(2) :: tarray\n\n real :: result\n\n call dtime(tarray, result)\n\n print *, result\n\n print *, tarray(1)\n\n print *, tarray(2)\n\n do i=1,100000000 ! Just a delay\n\n j = i * i - i\n\n end do\n\n call dtime(tarray, result)\n\n print *, result\n\n print *, tarray(1)\n\n print *, tarray(2)\n\nend program test_dtime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
-}
diff --git a/doc/intrinsics/EOSHIFT.json b/doc/intrinsics/EOSHIFT.json
deleted file mode 100644
index ceb940b1..00000000
--- a/doc/intrinsics/EOSHIFT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EOSHIFT",
- "docstr": "`EOSHIFT` — End-off shift elements of an array\n\n### Description\n`EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])` performs an end-off shift on\nelements of `ARRAY` along the dimension of `DIM`. If `DIM` is\nomitted it is taken to be `1`. `DIM` is a scalar of type\n`INTEGER` in the range of 1 \\leq DIM \\leq n) where n is the\nrank of `ARRAY`. If the rank of `ARRAY` is one, then all elements of\n`ARRAY` are shifted by `SHIFT` places. If rank is greater than one,\nthen all complete rank one sections of `ARRAY` along the given dimension are\nshifted. Elements shifted out one end of each rank one section are dropped. If\n`BOUNDARY` is present then the corresponding value of from `BOUNDARY`\nis copied back in the other end. If `BOUNDARY` is not present then the\nfollowing are copied in depending on the type of `ARRAY`.\n\n \n\n\n | Numeric | 0 of the type and kind of `ARRAY`. \n\n | Logical | `.FALSE.`. \n\n | Character(`len`) | `len` blanks.\n\n\n\n\n\n\n### Syntax\n`RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | May be any type, not scalar. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `BOUNDARY` | Same type as `ARRAY`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_eoshift\n\n integer, dimension(3,3) :: a\n\n a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n print '(3i3)', a(1,:)\n\n print '(3i3)', a(2,:)\n\n print '(3i3)', a(3,:)\n\n a = EOSHIFT(a, SHIFT=(/1, 2, 1/), BOUNDARY=-5, DIM=2)\n\n print *\n\n print '(3i3)', a(1,:)\n\n print '(3i3)', a(2,:)\n\n print '(3i3)', a(3,:)\n\nend program test_eoshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/EPSILON.json b/doc/intrinsics/EPSILON.json
deleted file mode 100644
index 4218905d..00000000
--- a/doc/intrinsics/EPSILON.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EPSILON",
- "docstr": "`EPSILON` — Epsilon function\n\n### Description\n`EPSILON(X)` returns the smallest number `E` of the same kind\nas `X` such that 1 + E > 1.\n\n\n\n### Syntax\n`RESULT = EPSILON(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of same type as the argument.\n\n\n\n### Example\n```\n\n\nprogram test_epsilon\n\n real :: x = 3.143\n\n real(8) :: y = 2.33\n\n print *, EPSILON(x)\n\n print *, EPSILON(y)\n\nend program test_epsilon\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/ERF.json b/doc/intrinsics/ERF.json
deleted file mode 100644
index d26f802e..00000000
--- a/doc/intrinsics/ERF.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ERF",
- "docstr": "`ERF` — Error function\n\n### Description\n`ERF(X)` computes the error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERF(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`, of the same kind as\n`X` and lies in the range -1 \\leq erf (x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_erf\n\n real(8) :: x = 0.17_8\n\n x = erf(x)\n\nend program test_erf\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERF(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ERFC.json b/doc/intrinsics/ERFC.json
deleted file mode 100644
index bf24835e..00000000
--- a/doc/intrinsics/ERFC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ERFC",
- "docstr": "`ERFC` — Error function\n\n### Description\n`ERFC(X)` computes the complementary error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`. \nIt lies in the range 0 \\leq erfc (x) \\leq 2 .\n\n\n\n### Example\n```\n\n\nprogram test_erfc\n\n real(8) :: x = 0.17_8\n\n x = erfc(x)\n\nend program test_erfc\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERFC(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ERFC_SCALED.json b/doc/intrinsics/ERFC_SCALED.json
deleted file mode 100644
index 58884946..00000000
--- a/doc/intrinsics/ERFC_SCALED.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ERFC_SCALED",
- "docstr": "`ERFC_SCALED` — Error function\n\n### Description\n`ERFC_SCALED(X)` computes the exponentially-scaled complementary\nerror function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC_SCALED(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_erfc_scaled\n\n real(8) :: x = 0.17_8\n\n x = erfc_scaled(x)\n\nend program test_erfc_scaled\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ETIME.json b/doc/intrinsics/ETIME.json
deleted file mode 100644
index a5f64b63..00000000
--- a/doc/intrinsics/ETIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ETIME",
- "docstr": "`ETIME` — Execution time subroutine (or function)\n\n### Description\n`ETIME(VALUES, TIME)` returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to `VALUES(1) + VALUES(2)`.\n\n \nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | | `VALUES(2)`: | System time in seconds. \n\n | | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = ETIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the start of program execution.\n\n\n\n### Example\n```\n\n\nprogram test_etime\n\n integer(8) :: i, j\n\n real, dimension(2) :: tarray\n\n real :: result\n\n call ETIME(tarray, result)\n\n print *, result\n\n print *, tarray(1)\n\n print *, tarray(2)\n\n do i=1,100000000 ! Just a delay\n\n j = i * i - i\n\n end do\n\n call ETIME(tarray, result)\n\n print *, result\n\n print *, tarray(1)\n\n print *, tarray(2)\n\nend program test_etime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
-}
diff --git a/doc/intrinsics/EVENT_QUERY.json b/doc/intrinsics/EVENT_QUERY.json
deleted file mode 100644
index e83405e5..00000000
--- a/doc/intrinsics/EVENT_QUERY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EVENT_QUERY",
- "docstr": "`EVENT_QUERY` — Query whether a coarray event has occurred\n\n### Description\n`EVENT_QUERY` assignes the number of events to `COUNT` which have been\nposted to the `EVENT` variable and not yet been removed by calling\n`EVENT WAIT`. When `STAT` is present and the invokation was successful,\nit is assigned the value 0. If it is present and the invokation has failed,\nit is assigned a positive value and `COUNT` is assigned the value -1.\n\n\n\n### Syntax\n`CALL EVENT_QUERY (EVENT, COUNT [, STAT])`\n\n\n### Arguments\n\n \n,\ndefined in `ISO_FORTRAN_ENV`; shall not be coindexed. \n\n | `COUNT` | (intent(out))Scalar integer with at least the\nprecision of default integer. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n use iso_fortran_env\n\n implicit none\n\n type(event_type) :: event_value_has_been_set[*]\n\n integer :: cnt\n\n if (this_image() == 1) then\n\n call event_query (event_value_has_been_set, cnt)\n\n if (cnt > 0) write(*,*) \"Value has been set\"\n\n elseif (this_image() == 2) then\n\n event post (event_value_has_been_set[1])\n\n end if\n\nend program atomic\n\n```\n\n \n\n### Standard\nTS 18508 or later\n\n\n\n### Class\n subroutine\n\n\n"
-}
diff --git a/doc/intrinsics/EXECUTE_COMMAND_LINE.json b/doc/intrinsics/EXECUTE_COMMAND_LINE.json
deleted file mode 100644
index 164a8d98..00000000
--- a/doc/intrinsics/EXECUTE_COMMAND_LINE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EXECUTE_COMMAND_LINE",
- "docstr": "`EXECUTE_COMMAND_LINE` — Execute a shell command\n\n### Description\n`EXECUTE_COMMAND_LINE` runs a shell command, synchronously or\nasynchronously.\n\n \nThe `COMMAND` argument is passed to the shell and executed, using\nthe C library's `system` call. (The shell is `sh` on Unix\nsystems, and `cmd.exe` on Windows.) If `WAIT` is present\nand has the value false, the execution of the command is asynchronous\nif the system supports it; otherwise, the command is executed\nsynchronously.\n\n \n\nThe three last arguments allow the user to get status information. After\nsynchronous execution, `EXITSTAT` contains the integer exit code of\nthe command, as returned by `system`. `CMDSTAT` is set to zero\nif the command line was executed (whatever its exit status was). \n`CMDMSG` is assigned an error message if an error has occurred.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n`CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])`\n\n\n### Arguments\n\n \n scalar. \n\n | `WAIT` | (Optional) Shall be a default `LOGICAL` scalar. \n\n | `EXITSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDMSG` | (Optional) Shall be an `CHARACTER` scalar of the\ndefault kind.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_exec\n\n integer :: i\n\n\n call execute_command_line (\"external_prog.exe\", exitstat=i)\n\n print *, \"Exit status of external_prog.exe was \", i\n\n\n call execute_command_line (\"reindex_files.exe\", wait=.false.)\n\n print *, \"Now reindexing files in the background\"\n\n\nend program test_exec\n\n```\n\n\n\n### Notes\n\nBecause this intrinsic is implemented in terms of the `system`function call, its behavior with respect to signaling is processor\ndependent. In particular, on POSIX-compliant systems, the SIGINT and\nSIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As\nsuch, if the parent process is terminated, the child process might not be\nterminated alongside.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM\n"
-}
diff --git a/doc/intrinsics/EXIT.json b/doc/intrinsics/EXIT.json
deleted file mode 100644
index ca3711dc..00000000
--- a/doc/intrinsics/EXIT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EXIT",
- "docstr": "`EXIT` — Exit the program with status.\n\n### Description\n`EXIT` causes immediate termination of the program with status. If status\nis omitted it returns the canonical success for the system. All Fortran\nI/O units are closed.\n\n\n\n### Syntax\n`CALL EXIT([STATUS])`\n\n\n### Arguments\n\n \n of the default kind.\n\n\n\n\n\n\n### Return value\n`STATUS` is passed to the parent process on exit.\n\n\n\n### Example\n```\n\n\nprogram test_exit\n\n integer :: STATUS = 0\n\n print *, 'This program is going to exit.'\n\n call EXIT(STATUS)\n\nend program test_exit\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT, KILL\n"
-}
diff --git a/doc/intrinsics/EXP.json b/doc/intrinsics/EXP.json
deleted file mode 100644
index 3cd7506a..00000000
--- a/doc/intrinsics/EXP.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EXP",
- "docstr": "`EXP` — Exponential function\n\n### Description\n`EXP(X)` computes the base e exponential of `X`.\n\n\n\n### Syntax\n`RESULT = EXP(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_exp\n\n real :: x = 1.0\n\n x = exp(x)\n\nend program test_exp\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `EXP(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DEXP(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CEXP(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/EXPONENT.json b/doc/intrinsics/EXPONENT.json
deleted file mode 100644
index adb65340..00000000
--- a/doc/intrinsics/EXPONENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EXPONENT",
- "docstr": "`EXPONENT` — Exponent function\n\n### Description\n`EXPONENT(X)` returns the value of the exponent part of `X`. If `X`\nis zero the value returned is zero.\n\n\n\n### Syntax\n`RESULT = EXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type default `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_exponent\n\n real :: x = 1.0\n\n integer :: i\n\n i = exponent(x)\n\n print *, i\n\n print *, exponent(0.0)\n\nend program test_exponent\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/EXTENDS_TYPE_OF.json b/doc/intrinsics/EXTENDS_TYPE_OF.json
deleted file mode 100644
index 24f216ca..00000000
--- a/doc/intrinsics/EXTENDS_TYPE_OF.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "EXTENDS_TYPE_OF",
- "docstr": "`EXTENDS_TYPE_OF` — Query dynamic type for extension\n\n### Description\nQuery dynamic type for extension.\n\n\n\n### Syntax\n`RESULT = EXTENDS_TYPE_OF(A, MOLD)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `MOLD` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and only if\nthe dynamic type of A is an extension type of the dynamic type of MOLD.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSAME_TYPE_AS\n"
-}
diff --git a/doc/intrinsics/FDATE.json b/doc/intrinsics/FDATE.json
deleted file mode 100644
index 097f679a..00000000
--- a/doc/intrinsics/FDATE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FDATE",
- "docstr": "`FDATE` — Get the current time as a string\n\n### Description\n`FDATE(DATE)` returns the current date (using the same format as\n`CTIME`) in `DATE`. It is equivalent to CALL CTIME(DATE,\nTIME()) .\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `DATE = FDATE()`.\n\n\n\n\n\n\n### Arguments\n\n \n of the\ndefault kind. It is an `INTENT(OUT)` argument. If the length of\nthis variable is too short for the date and time string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe current date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_fdate\n\n integer(8) :: i, j\n\n character(len=30) :: date\n\n call fdate(date)\n\n print *, 'Program started on ', date\n\n do i = 1, 100000000 ! Just a delay\n\n j = i * i - i\n\n end do\n\n call fdate(date)\n\n print *, 'Program ended on ', date\n\nend program test_fdate\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, CTIME\n"
-}
diff --git a/doc/intrinsics/FGET.json b/doc/intrinsics/FGET.json
deleted file mode 100644
index 1fda27eb..00000000
--- a/doc/intrinsics/FGET.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FGET",
- "docstr": "`FGET` — Read a single character in stream mode from stdin\n\n### Description\nRead a single character in stream mode from stdin by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGET(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file, and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fget\n\n INTEGER, PARAMETER :: strlen = 100\n\n INTEGER :: status, i = 1\n\n CHARACTER(len=strlen) :: str = \"\"\n\n\n WRITE (*,*) 'Enter text:'\n\n DO\n\n CALL fget(str(i:i), status)\n\n if (status /= 0 .OR. i > strlen) exit\n\n i = i + 1\n\n END DO\n\n WRITE (*,*) TRIM(str)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGETC, FPUT, FPUTC\n"
-}
diff --git a/doc/intrinsics/FGETC.json b/doc/intrinsics/FGETC.json
deleted file mode 100644
index 3fd30125..00000000
--- a/doc/intrinsics/FGETC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FGETC",
- "docstr": "`FGETC` — Read a single character in stream mode\n\n### Description\nRead a single character in stream mode by bypassing normal formatted output. \nStream I/O should not be mixed with normal record-oriented (formatted or\nunformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility\nwith *g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGETC(UNIT, C)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fgetc\n\n INTEGER :: fd = 42, status\n\n CHARACTER :: c\n\n\n OPEN(UNIT=fd, FILE=\"/etc/passwd\", ACTION=\"READ\", STATUS = \"OLD\")\n\n DO\n\n CALL fgetc(fd, c, status)\n\n IF (status /= 0) EXIT\n\n call fput(c)\n\n END DO\n\n CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGET, FPUT, FPUTC\n"
-}
diff --git a/doc/intrinsics/FINDLOC.json b/doc/intrinsics/FINDLOC.json
deleted file mode 100644
index 589659e4..00000000
--- a/doc/intrinsics/FINDLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FINDLOC",
- "docstr": "`FINDLOC` — Search an array for a value\n\n### Description\nDetermines the location of the element in the array with the value given in the VALUE argument, or, if the DIM argument is supplied, determines the locations of the maximum element along each row of the array in the DIM direction. If MASK is present, only the elements for which MASK is .TRUE. are considered. If more than one element in the array has the value VALUE, the location returned is that of the first such element in array element order if the BACK is not present or if it is .FALSE.. If BACK is true, the location returned is that of the last such element. If the array has zero size, or all of the elements of MASK are .FALSE., then the result is an array of zeroes. Similarly, if DIM is supplied and all of the elements of MASK along a given row are zero, the result value for that row is zero.\n### Standard\nFortran 2008 and later.\n### Class\nTransformational function\n### Syntax\nRESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])\nRESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])\n### Arguments\n- ARRAY: Shall be an array of intrinsic type.\n- VALUE: A scalar of intrinsic type which is in type conformance with ARRAY.\n- DIM: (Optional) Shall be a scalar of type INTEGER, with a value between one and the rank of ARRAY, inclusive. It may not be an optional dummy argument.\n- KIND: (Optional) An INTEGER initialization expression indicating the kind parameter of the result.\n- BACK: (Optional) A scalar of type LOGICAL.\n### Return value\nIf DIM is absent, the result is a rank-one array with a length equal to the rank of ARRAY. If DIM is present, the result is an array with a rank one less than the rank of ARRAY, and a size corresponding to the size of ARRAY with the DIM dimension removed. If DIM is present and ARRAY has a rank of one, the result is a scalar. If the optional argument KIND is present, the result is an integer of kind KIND, otherwise it is of default kind.\n"
-}
diff --git a/doc/intrinsics/FLOOR.json b/doc/intrinsics/FLOOR.json
deleted file mode 100644
index 61fcf940..00000000
--- a/doc/intrinsics/FLOOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FLOOR",
- "docstr": "`FLOOR` — Integer floor function\n\n### Description\n`FLOOR(A)` returns the greatest integer less than or equal to `X`.\n\n\n\n### Syntax\n`RESULT = FLOOR(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand of default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_floor\n\n real :: x = 63.29\n\n real :: y = -63.59\n\n print *, floor(x) ! returns 63\n\n print *, floor(y) ! returns -64\n\nend program test_floor\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, NINT\n\n "
-}
diff --git a/doc/intrinsics/FLUSH.json b/doc/intrinsics/FLUSH.json
deleted file mode 100644
index 32ba8e5d..00000000
--- a/doc/intrinsics/FLUSH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FLUSH",
- "docstr": "`FLUSH` — Flush I/O unit(s)\n\n### Description\nFlushes Fortran unit(s) currently open for output. Without the optional\nargument, all units are flushed, otherwise just the unit specified.\n\n\n\n### Syntax\n`CALL FLUSH(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Notes\nBeginning with the Fortran 2003 standard, there is a `FLUSH`statement that should be preferred over the `FLUSH` intrinsic.\n\n \nThe `FLUSH` intrinsic and the Fortran 2003 `FLUSH` statement\nhave identical effect: they flush the runtime library's I/O buffer so\nthat the data becomes visible to other processes. This does not guarantee\nthat the data is committed to disk.\n\n \n\nOn POSIX systems, you can request that all data is transferred to the\nstorage device by calling the `fsync` function, with the POSIX file\ndescriptor of the I/O unit as argument (retrieved with GNU intrinsic\n`FNUM`). The following example shows how:\n\n \n ! Declare the interface for POSIX fsync function\n interface\n function fsync (fd) bind(c,name=\"fsync\")\n use iso_c_binding, only: c_int\n integer(c_int), value :: fd\n integer(c_int) :: fsync\n end function fsync\n end interface\n \n ! Variable declaration\n integer :: ret\n \n ! Opening unit 10\n open (10,file=\"foo\")\n \n ! ...\n ! Perform I/O on unit 10\n ! ...\n \n ! Flush and sync\n flush(10)\n ret = fsync(fnum(10))\n \n ! Handle possible error\n if (ret /= 0) stop \"Error calling FSYNC\"\n \n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/FNUM.json b/doc/intrinsics/FNUM.json
deleted file mode 100644
index ebaec3cf..00000000
--- a/doc/intrinsics/FNUM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FNUM",
- "docstr": "`FNUM` — File number function\n\n### Description\n`FNUM(UNIT)` returns the POSIX file descriptor number corresponding to the\nopen Fortran I/O unit `UNIT`.\n\n\n\n### Syntax\n`RESULT = FNUM(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_fnum\n\n integer :: i\n\n open (unit=10, status = \"scratch\")\n\n i = fnum(10)\n\n print *, i\n\n close (10)\n\nend program test_fnum\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
-}
diff --git a/doc/intrinsics/FPUT.json b/doc/intrinsics/FPUT.json
deleted file mode 100644
index 831c66a2..00000000
--- a/doc/intrinsics/FPUT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FPUT",
- "docstr": "`FPUT` — Write a single character in stream mode to stdout\n\n### Description\nWrite a single character in stream mode to stdout by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUT(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fput\n\n CHARACTER(len=10) :: str = \"gfortran\"\n\n INTEGER :: i\n\n DO i = 1, len_trim(str)\n\n CALL fput(str(i:i))\n\n END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUTC, FGET, FGETC\n"
-}
diff --git a/doc/intrinsics/FPUTC.json b/doc/intrinsics/FPUTC.json
deleted file mode 100644
index 4c0a6cf4..00000000
--- a/doc/intrinsics/FPUTC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FPUTC",
- "docstr": "`FPUTC` — Write a single character in stream mode\n\n### Description\nWrite a single character in stream mode by bypassing normal formatted\noutput. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUTC(UNIT, C)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fputc\n\n CHARACTER(len=10) :: str = \"gfortran\"\n\n INTEGER :: fd = 42, i\n\n\n OPEN(UNIT = fd, FILE = \"out\", ACTION = \"WRITE\", STATUS=\"NEW\")\n\n DO i = 1, len_trim(str)\n\n CALL fputc(fd, str(i:i))\n\n END DO\n\n CLOSE(fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUT, FGET, FGETC\n"
-}
diff --git a/doc/intrinsics/FRACTION.json b/doc/intrinsics/FRACTION.json
deleted file mode 100644
index a1e4ee65..00000000
--- a/doc/intrinsics/FRACTION.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FRACTION",
- "docstr": "`FRACTION` — Fractional part of the model representation\n\n### Description\n`FRACTION(X)` returns the fractional part of the model\nrepresentation of `X`.\n\n\n\n### Syntax\n`Y = FRACTION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as the argument. \nThe fractional part of the model representation of `X` is returned;\nit is `X * RADIX(X)**(-EXPONENT(X))`.\n\n\n\n### Example\n```\n\n\nprogram test_fraction\n\n real :: x\n\n x = 178.1387e-4\n\n print *, fraction(x), x * radix(x)**(-exponent(x))\n\nend program test_fraction\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/FREE.json b/doc/intrinsics/FREE.json
deleted file mode 100644
index c7b3a7b8..00000000
--- a/doc/intrinsics/FREE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FREE",
- "docstr": "`FREE` — Frees memory\n\n### Description\nFrees memory previously allocated by `MALLOC`. The `FREE`intrinsic is an extension intended to be used with Cray pointers, and is\nprovided in GNU Fortran to allow user to compile legacy code. For\nnew code using Fortran 95 pointers, the memory de-allocation intrinsic is\n`DEALLOCATE`.\n\n\n\n### Syntax\n`CALL FREE(PTR)`\n\n\n### Arguments\n\n \n. It represents the\nlocation of the memory that should be de-allocated.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\nSee `MALLOC` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nMALLOC\n"
-}
diff --git a/doc/intrinsics/FSEEK.json b/doc/intrinsics/FSEEK.json
deleted file mode 100644
index b062c165..00000000
--- a/doc/intrinsics/FSEEK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FSEEK",
- "docstr": "`FSEEK` — Low level file positioning subroutine\n\n### Description\nMoves `UNIT` to the specified `OFFSET`. If `WHENCE`\nis set to 0, the `OFFSET` is taken as an absolute value `SEEK_SET`,\nif set to 1, `OFFSET` is taken to be relative to the current position\n`SEEK_CUR`, and if set to 2 relative to the end of the file `SEEK_END`. \nOn error, `STATUS` is set to a nonzero value. If `STATUS` the seek\nfails silently.\n\n \nThis intrinsic routine is not fully backwards compatible with *g77*. \nIn *g77*, the `FSEEK` takes a statement label instead of a\n`STATUS` variable. If FSEEK is used in old code, change\n \n CALL FSEEK(UNIT, OFFSET, WHENCE, *label)\n \n \nto\n \n INTEGER :: status\n CALL FSEEK(UNIT, OFFSET, WHENCE, status)\n IF (status /= 0) GOTO label\n \n \nPlease note that GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n`CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])`\n\n\n### Arguments\n\n \n. \n\n | `OFFSET` | Shall be a scalar of type `INTEGER`. \n\n | `WHENCE` | Shall be a scalar of type `INTEGER`. \nIts value shall be either 0, 1 or 2. \n\n | `STATUS` | (Optional) shall be a scalar of type\n`INTEGER(4)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fseek\n\n INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2\n\n INTEGER :: fd, offset, ierr\n\n\n ierr = 0\n\n offset = 5\n\n fd = 10\n\n\n OPEN(UNIT=fd, FILE=\"fseek.test\")\n\n CALL FSEEK(fd, offset, SEEK_SET, ierr) ! move to OFFSET\n\n print *, FTELL(fd), ierr\n\n\n CALL FSEEK(fd, 0, SEEK_END, ierr) ! move to end\n\n print *, FTELL(fd), ierr\n\n\n CALL FSEEK(fd, 0, SEEK_SET, ierr) ! move to beginning\n\n print *, FTELL(fd), ierr\n\n\n CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nFTELL\n"
-}
diff --git a/doc/intrinsics/FSTAT.json b/doc/intrinsics/FSTAT.json
deleted file mode 100644
index bb1aca9e..00000000
--- a/doc/intrinsics/FSTAT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FSTAT",
- "docstr": "`FSTAT` — Get file status\n\n### Description\n`FSTAT` is identical to STAT, except that information about an\nalready opened file is obtained.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FSTAT(UNIT, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat a link: LSTAT, to stat a file: STAT\n"
-}
diff --git a/doc/intrinsics/FTELL.json b/doc/intrinsics/FTELL.json
deleted file mode 100644
index c90c5811..00000000
--- a/doc/intrinsics/FTELL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "FTELL",
- "docstr": "`FTELL` — Current stream position\n\n### Description\nRetrieves the current position within an open file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `OFFSET = FTELL(UNIT)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `UNIT` | Shall of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nIn either syntax, `OFFSET` is set to the current offset of unit\nnumber `UNIT`, or to -1 if the unit is not currently open.\n\n\n\n### Example\n```\n\n\nPROGRAM test_ftell\n\n INTEGER :: i\n\n OPEN(10, FILE=\"temp.dat\")\n\n CALL ftell(10,i)\n\n WRITE(*,*) i\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFSEEK\n"
-}
diff --git a/doc/intrinsics/GAMMA.json b/doc/intrinsics/GAMMA.json
deleted file mode 100644
index a38de730..00000000
--- a/doc/intrinsics/GAMMA.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GAMMA",
- "docstr": "`GAMMA` — Gamma function\n\n### Description\n`GAMMA(X)` computes Gamma (\\Gamma) of `X`. For positive,\ninteger values of `X` the Gamma function simplifies to the factorial\nfunction \\Gamma(x)=(x-1)!.\n\n\n\n### Syntax\n`X = GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_gamma\n\n real :: x = 1.0\n\n x = gamma(x) ! returns 1.0\n\nend program test_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `GAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DGAMMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLogarithm of the Gamma function: LOG_GAMMA\n\n "
-}
diff --git a/doc/intrinsics/GERROR.json b/doc/intrinsics/GERROR.json
deleted file mode 100644
index 9e428156..00000000
--- a/doc/intrinsics/GERROR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GERROR",
- "docstr": "`GERROR` — Get last system error message\n\n### Description\nReturns the system error message corresponding to the last system error. \nThis resembles the functionality of `strerror(3)` in C.\n\n\n\n### Syntax\n`CALL GERROR(RESULT)`\n\n\n### Arguments\n\n \n and of default\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_gerror\n\n CHARACTER(len=100) :: msg\n\n CALL gerror(msg)\n\n WRITE(*,*) msg\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO, PERROR\n"
-}
diff --git a/doc/intrinsics/GETARG.json b/doc/intrinsics/GETARG.json
deleted file mode 100644
index f608035c..00000000
--- a/doc/intrinsics/GETARG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETARG",
- "docstr": "`GETARG` — Get command line arguments\n\n### Description\nRetrieve the `POS`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_COMMAND_ARGUMENT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`CALL GETARG(POS, VALUE)`\n\n\n### Arguments\n\n \n and not wider than\nthe default integer kind; `POS` \\geq 0\n\n | `VALUE` | Shall be of type `CHARACTER` and of default\nkind. \n\n | `VALUE` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Return value\nAfter `GETARG` returns, the `VALUE` argument holds the\n`POS`th command line argument. If `VALUE` can not hold the\nargument, it is truncated to fit the length of `VALUE`. If there are\nless than `POS` arguments specified at the command line, `VALUE`\nwill be filled with blanks. If `POS` = 0, `VALUE` is set\nto the name of the program (on systems that support this feature).\n\n\n\n### Example\n```\n\n\nPROGRAM test_getarg\n\n INTEGER :: i\n\n CHARACTER(len=32) :: arg\n\n\n DO i = 1, iargc()\n\n CALL getarg(i, arg)\n\n WRITE (*,*) arg\n\n END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGNU Fortran 77 compatibility function: IARGC\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n"
-}
diff --git a/doc/intrinsics/GETCWD.json b/doc/intrinsics/GETCWD.json
deleted file mode 100644
index 1565b4b2..00000000
--- a/doc/intrinsics/GETCWD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETCWD",
- "docstr": "`GETCWD` — Get current working directory\n\n### Description\nGet current working directory.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = GETCWD(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag. Returns 0 on success,\na system specific and nonzero error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_getcwd\n\n CHARACTER(len=255) :: cwd\n\n CALL getcwd(cwd)\n\n WRITE(*,*) TRIM(cwd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCHDIR\n"
-}
diff --git a/doc/intrinsics/GETENV.json b/doc/intrinsics/GETENV.json
deleted file mode 100644
index f373bce1..00000000
--- a/doc/intrinsics/GETENV.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETENV",
- "docstr": "`GETENV` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_ENVIRONMENT_VARIABLE intrinsic defined by the Fortran\n2003 standard.\n\n \n\nNote that `GETENV` need not be thread-safe. It is the\nresponsibility of the user to ensure that the environment is not being\nupdated concurrently with a call to the `GETENV` intrinsic.\n\n\n\n\n### Syntax\n`CALL GETENV(NAME, VALUE)`\n\n\n### Arguments\n\n \n and of default kind. \n\n | `VALUE` | Shall be of type `CHARACTER` and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n CHARACTER(len=255) :: homedir\n\n CALL getenv(\"HOME\", homedir)\n\n WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_ENVIRONMENT_VARIABLE\n"
-}
diff --git a/doc/intrinsics/GETGID.json b/doc/intrinsics/GETGID.json
deleted file mode 100644
index acdd9ffa..00000000
--- a/doc/intrinsics/GETGID.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETGID",
- "docstr": "`GETGID` — Group ID function\n\n### Description\nReturns the numerical group ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETGID()`\n\n\n### Return value\nThe return value of `GETGID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETUID\n"
-}
diff --git a/doc/intrinsics/GETLOG.json b/doc/intrinsics/GETLOG.json
deleted file mode 100644
index 51843360..00000000
--- a/doc/intrinsics/GETLOG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETLOG",
- "docstr": "`GETLOG` — Get login name\n\n### Description\nGets the username under which the program is running.\n\n\n\n### Syntax\n`CALL GETLOG(C)`\n\n\n### Arguments\n\n \n and of default kind.\n\n\n\n\n\n\n### Return value\nStores the current user name in `LOGIN`. (On systems where POSIX\nfunctions `geteuid` and `getpwuid` are not available, and\nthe `getlogin` function is not implemented either, this will\nreturn a blank string.)\n\n\n\n### Example\n```\n\n\nPROGRAM TEST_GETLOG\n\n CHARACTER(32) :: login\n\n CALL GETLOG(login)\n\n WRITE(*,*) login\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGETUID\n"
-}
diff --git a/doc/intrinsics/GETPID.json b/doc/intrinsics/GETPID.json
deleted file mode 100644
index fbd0cee6..00000000
--- a/doc/intrinsics/GETPID.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETPID",
- "docstr": "`GETPID` — Process ID function\n\n### Description\nReturns the numerical process identifier of the current process.\n\n\n\n### Syntax\n`RESULT = GETPID()`\n\n\n### Return value\nThe return value of `GETPID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\n```\n\n\nprogram info\n\n print *, \"The current process ID is \", getpid()\n\n print *, \"Your numerical user ID is \", getuid()\n\n print *, \"Your numerical group ID is \", getgid()\n\nend program info\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETGID, GETUID\n"
-}
diff --git a/doc/intrinsics/GETUID.json b/doc/intrinsics/GETUID.json
deleted file mode 100644
index bf84db87..00000000
--- a/doc/intrinsics/GETUID.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GETUID",
- "docstr": "`GETUID` — User ID function\n\n### Description\nReturns the numerical user ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETUID()`\n\n\n### Return value\nThe return value of `GETUID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETLOG\n"
-}
diff --git a/doc/intrinsics/GET_COMMAND.json b/doc/intrinsics/GET_COMMAND.json
deleted file mode 100644
index 1edfcda0..00000000
--- a/doc/intrinsics/GET_COMMAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GET_COMMAND",
- "docstr": "`GET_COMMAND` — Get the entire command line\n\n### Description\nRetrieve the entire command line that was used to invoke the program.\n\n\n\n### Syntax\n`CALL GET_COMMAND([COMMAND, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and\nof default kind. \n\n | `LENGTH` | (Optional) Shall be of type `INTEGER` and of\ndefault kind. \n\n | `STATUS` | (Optional) Shall be of type `INTEGER` and of\ndefault kind.\n\n\n\n\n\n\n### Return value\nIf `COMMAND` is present, stores the entire command line that was used\nto invoke the program in `COMMAND`. If `LENGTH` is present, it is\nassigned the length of the command line. If `STATUS` is present, it\nis assigned 0 upon success of the command, -1 if `COMMAND` is too\nshort to store the command line, or a positive value in case of an error.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command\n\n CHARACTER(len=255) :: cmd\n\n CALL get_command(cmd)\n\n WRITE (*,*) TRIM(cmd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n"
-}
diff --git a/doc/intrinsics/GET_COMMAND_ARGUMENT.json b/doc/intrinsics/GET_COMMAND_ARGUMENT.json
deleted file mode 100644
index 3c33c146..00000000
--- a/doc/intrinsics/GET_COMMAND_ARGUMENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GET_COMMAND_ARGUMENT",
- "docstr": "`GET_COMMAND_ARGUMENT` — Get command line arguments\n\n### Description\nRetrieve the `NUMBER`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and of\ndefault kind, `NUMBER` \\geq 0\n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind.\n\n\n\n\n\n\n### Return value\nAfter `GET_COMMAND_ARGUMENT` returns, the `VALUE` argument holds the\n`NUMBER`-th command line argument. If `VALUE` can not hold the argument, it is\ntruncated to fit the length of `VALUE`. If there are less than `NUMBER`\narguments specified at the command line, `VALUE` will be filled with blanks. \nIf `NUMBER` = 0, `VALUE` is set to the name of the program (on\nsystems that support this feature). The `LENGTH` argument contains the\nlength of the `NUMBER`-th command line argument. If the argument retrieval\nfails, `STATUS` is a positive number; if `VALUE` contains a truncated\ncommand line argument, `STATUS` is -1; and otherwise the `STATUS` is\nzero.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command_argument\n\n INTEGER :: i\n\n CHARACTER(len=32) :: arg\n\n\n i = 0\n\n DO\n\n CALL get_command_argument(i, arg)\n\n IF (LEN_TRIM(arg) == 0) EXIT\n\n\n WRITE (*,*) TRIM(arg)\n\n i = i+1\n\n END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND, COMMAND_ARGUMENT_COUNT\n"
-}
diff --git a/doc/intrinsics/GET_ENVIRONMENT_VARIABLE.json b/doc/intrinsics/GET_ENVIRONMENT_VARIABLE.json
deleted file mode 100644
index 412e9993..00000000
--- a/doc/intrinsics/GET_ENVIRONMENT_VARIABLE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GET_ENVIRONMENT_VARIABLE",
- "docstr": "`GET_ENVIRONMENT_VARIABLE` — Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nNote that `GET_ENVIRONMENT_VARIABLE` need not be thread-safe. It\nis the responsibility of the user to ensure that the environment is\nnot being updated concurrently with a call to the\n`GET_ENVIRONMENT_VARIABLE` intrinsic.\n\n\n\n\n### Syntax\n`CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS, TRIM_NAME)`\n\n\n### Arguments\n\n \n\nand of default kind. \n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `TRIM_NAME` | (Optional) Shall be a scalar of type `LOGICAL`and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks. Argument `LENGTH`\ncontains the length needed for storing the environment variable `NAME`\nor zero if it is not present. `STATUS` is -1 if `VALUE` is present\nbut too short for the environment variable; it is 1 if the environment\nvariable does not exist and 2 if the processor does not support environment\nvariables; in all other cases `STATUS` is zero. If `TRIM_NAME` is\npresent with the value `.FALSE.`, the trailing blanks in `NAME`\nare significant; otherwise they are not part of the environment variable\nname.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n CHARACTER(len=255) :: homedir\n\n CALL get_environment_variable(\"HOME\", homedir)\n\n WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/GMTIME.json b/doc/intrinsics/GMTIME.json
deleted file mode 100644
index 8d65d5d4..00000000
--- a/doc/intrinsics/GMTIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "GMTIME",
- "docstr": "`GMTIME` — Convert time to GMT info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the UTC time zone (Universal Coordinated Time, also known in some\ncountries as GMT, Greenwich Mean Time), using `gmtime(3)`.\n\n\n\n### Syntax\n`CALL GMTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n \n- Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
- Minutes after the hour, range 0–59\n
- Hours past midnight, range 0–23\n
- Day of month, range 0–31\n
- Number of months since January, range 0–12\n
- Years since 1900\n
- Number of days since Sunday, range 0–6\n
- Days since January 1\n
- Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, LTIME, TIME, TIME8\n\n "
-}
diff --git a/doc/intrinsics/HOSTNM.json b/doc/intrinsics/HOSTNM.json
deleted file mode 100644
index a23ec7ac..00000000
--- a/doc/intrinsics/HOSTNM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "HOSTNM",
- "docstr": "`HOSTNM` — Get system host name\n\n### Description\nRetrieves the host name of the system on which the program is running.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = HOSTNM(NAME)` \n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, or a system specific error code otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `NAME` is set to the current hostname if it can\nbe obtained, or to a blank string otherwise.\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
-}
diff --git a/doc/intrinsics/HUGE.json b/doc/intrinsics/HUGE.json
deleted file mode 100644
index d493261a..00000000
--- a/doc/intrinsics/HUGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "HUGE",
- "docstr": "`HUGE` — Largest number of a kind\n\n### Description\n`HUGE(X)` returns the largest number that is not an infinity in\nthe model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = HUGE(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\n```\n\n\nprogram test_huge_tiny\n\n print *, huge(0), huge(0.0), huge(0.0d0)\n\n print *, tiny(0.0), tiny(0.0d0)\n\nend program test_huge_tiny\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/HYPOT.json b/doc/intrinsics/HYPOT.json
deleted file mode 100644
index e91e2713..00000000
--- a/doc/intrinsics/HYPOT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "HYPOT",
- "docstr": "`HYPOT` — Euclidean distance function\n\n### Description\n`HYPOT(X,Y)` is the Euclidean distance function. It is equal to\n\\sqrtX^2 + Y^2, without undue underflow or overflow.\n\n\n\n### Syntax\n`RESULT = HYPOT(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type and kind type parameter shall be the same as\n`X`.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_hypot\n\n real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n x = hypot(x,y)\n\nend program test_hypot\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/IACHAR.json b/doc/intrinsics/IACHAR.json
deleted file mode 100644
index 89210347..00000000
--- a/doc/intrinsics/IACHAR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IACHAR",
- "docstr": "`IACHAR` — Code in ASCII collating sequence\n\n### Description\n`IACHAR(C)` returns the code for the ASCII character\nin the first character position of `C`.\n\n\n\n### Syntax\n`RESULT = IACHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_iachar\n\n integer i\n\n i = iachar(' ')\n\nend program test_iachar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, ICHAR\n\n "
-}
diff --git a/doc/intrinsics/IALL.json b/doc/intrinsics/IALL.json
deleted file mode 100644
index f4fbabb7..00000000
--- a/doc/intrinsics/IALL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IALL",
- "docstr": "`IALL` — Bitwise AND of array elements\n\n### Description\nReduces with bitwise AND the elements of `ARRAY` along dimension `DIM`\nif the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IALL(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise ALL of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iall\n\n INTEGER(1) :: a(2)\n\n\n a(1) = b'00100100'\n\n a(2) = b'01101010'\n\n\n ! prints 00100000\n\n PRINT '(b8.8)', IALL(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IPARITY, IAND\n"
-}
diff --git a/doc/intrinsics/IAND.json b/doc/intrinsics/IAND.json
deleted file mode 100644
index ec1afa86..00000000
--- a/doc/intrinsics/IAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IAND",
- "docstr": "`IAND` — Bitwise logical and\n\n### Description\nBitwise logical `AND`.\n\n\n\n### Syntax\n`RESULT = IAND(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Example\n```\n\n\nPROGRAM test_iand\n\n INTEGER :: a, b\n\n DATA a / Z'F' /, b / Z'3' /\n\n WRITE (*,*) IAND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IEOR, IBITS, IBSET, IBCLR, NOT\n\n "
-}
diff --git a/doc/intrinsics/IANY.json b/doc/intrinsics/IANY.json
deleted file mode 100644
index 85268603..00000000
--- a/doc/intrinsics/IANY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IANY",
- "docstr": "`IANY` — Bitwise OR of array elements\n\n### Description\nReduces with bitwise OR (inclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IANY(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise OR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iany\n\n INTEGER(1) :: a(2)\n\n\n a(1) = b'00100100'\n\n a(2) = b'01101010'\n\n\n ! prints 01101110\n\n PRINT '(b8.8)', IANY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIPARITY, IALL, IOR\n"
-}
diff --git a/doc/intrinsics/IARGC.json b/doc/intrinsics/IARGC.json
deleted file mode 100644
index e01d7722..00000000
--- a/doc/intrinsics/IARGC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IARGC",
- "docstr": "`IARGC` — Get the number of command line arguments\n\n### Description\n`IARGC` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe COMMAND_ARGUMENT_COUNT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`RESULT = IARGC()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe number of command line arguments, type `INTEGER(4)`.\n\n\n\n### Example\nSee GETARG\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGNU Fortran 77 compatibility subroutine: GETARG\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n"
-}
diff --git a/doc/intrinsics/IBCLR.json b/doc/intrinsics/IBCLR.json
deleted file mode 100644
index 6051e573..00000000
--- a/doc/intrinsics/IBCLR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IBCLR",
- "docstr": "`IBCLR` — Clear bit\n\n### Description\n`IBCLR` returns the value of `I` with the bit at position\n`POS` set to zero.\n\n\n\n### Syntax\n`RESULT = IBCLR(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBITS, IBSET, IAND, IOR, IEOR, MVBITS\n\n "
-}
diff --git a/doc/intrinsics/IBITS.json b/doc/intrinsics/IBITS.json
deleted file mode 100644
index 6e37fe89..00000000
--- a/doc/intrinsics/IBITS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IBITS",
- "docstr": "`IBITS` — Bit extraction\n\n### Description\n`IBITS` extracts a field of length `LEN` from `I`,\nstarting from bit position `POS` and extending left for `LEN`\nbits. The result is right-justified and the remaining bits are\nzeroed. The value of `POS+LEN` must be less than or equal to the\nvalue `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = IBITS(I, POS, LEN)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, IBCLR, IBSET, IAND, IOR, IEOR\n"
-}
diff --git a/doc/intrinsics/IBSET.json b/doc/intrinsics/IBSET.json
deleted file mode 100644
index acc1f91a..00000000
--- a/doc/intrinsics/IBSET.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IBSET",
- "docstr": "`IBSET` — Set bit\n\n### Description\n`IBSET` returns the value of `I` with the bit at position\n`POS` set to one.\n\n\n\n### Syntax\n`RESULT = IBSET(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBCLR, IBITS, IAND, IOR, IEOR, MVBITS\n\n "
-}
diff --git a/doc/intrinsics/ICHAR.json b/doc/intrinsics/ICHAR.json
deleted file mode 100644
index 1589d040..00000000
--- a/doc/intrinsics/ICHAR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ICHAR",
- "docstr": "`ICHAR` — Character-to-integer conversion function\n\n### Description\n`ICHAR(C)` returns the code for the character in the first character\nposition of `C` in the system's native character set. \nThe correspondence between characters and their codes is not necessarily\nthe same across different GNU Fortran implementations.\n\n\n\n### Syntax\n`RESULT = ICHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_ichar\n\n integer i\n\n i = ichar(' ')\n\nend program test_ichar\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ICHAR(C)` | `CHARACTER C` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Notes\nNo intrinsic exists to convert between a numeric value and a formatted\ncharacter string representation – for instance, given the\n`CHARACTER` value `'154'`, obtaining an `INTEGER` or\n`REAL` value with the value 154, or vice versa. Instead, this\nfunctionality is provided by internal-file I/O, as in the following\nexample:\n program read_val\n integer value\n character(len=10) string, string2\n string = '154'\n \n ! Convert a string to a numeric value\n read (string,'(I10)') value\n print *, value\n \n ! Convert a value to a formatted string\n write (string2,'(I10)') value\n print *, string2\n end program read_val\n \n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, IACHAR\n\n "
-}
diff --git a/doc/intrinsics/IDATE.json b/doc/intrinsics/IDATE.json
deleted file mode 100644
index 34822828..00000000
--- a/doc/intrinsics/IDATE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IDATE",
- "docstr": "`IDATE` — Get current local time subroutine (day/month/year)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The day (in the range 1-31), month (in the range 1-12),\nand year appear in elements 1, 2, and 3 of `VALUES`, respectively. \nThe year has four significant digits.\n\n\n\n### Syntax\n`CALL IDATE(VALUES)`\n\n\n### Arguments\n\n \n and\nthe kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_idate\n\n integer, dimension(3) :: tarray\n\n call idate(tarray)\n\n print *, tarray(1)\n\n print *, tarray(2)\n\n print *, tarray(3)\n\nend program test_idate\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/IEOR.json b/doc/intrinsics/IEOR.json
deleted file mode 100644
index 020fa2da..00000000
--- a/doc/intrinsics/IEOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IEOR",
- "docstr": "`IEOR` — Bitwise logical exclusive or\n\n### Description\n`IEOR` returns the bitwise Boolean exclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IEOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IAND, IBITS, IBSET, IBCLR, NOT\n"
-}
diff --git a/doc/intrinsics/IERRNO.json b/doc/intrinsics/IERRNO.json
deleted file mode 100644
index e908e581..00000000
--- a/doc/intrinsics/IERRNO.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IERRNO",
- "docstr": "`IERRNO` — Get the last system error number\n\n### Description\nReturns the last system error number, as given by the C `errno`variable.\n\n\n\n### Syntax\n`RESULT = IERRNO()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nPERROR\n"
-}
diff --git a/doc/intrinsics/IMAGE_INDEX.json b/doc/intrinsics/IMAGE_INDEX.json
deleted file mode 100644
index 3985dfe8..00000000
--- a/doc/intrinsics/IMAGE_INDEX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IMAGE_INDEX",
- "docstr": "`IMAGE_INDEX` — Function that converts a cosubscript to an image index\n\n### Description\nReturns the image index belonging to a cosubscript.\n\n\n\n### Syntax\n`RESULT = IMAGE_INDEX(COARRAY, SUB)`\n\n\n### Return value\nScalar default integer with the value of the image index which corresponds\nto the cosubscripts. For invalid cosubscripts the result is zero.\n\n\n\n### Example\n```\n\n\nINTEGER :: array[2,-1:4,8,*]\n\n! Writes 28 (or 0 if there are fewer than 28 images)\n\nWRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function.\n\n\n\n### See also\nTHIS_IMAGE, NUM_IMAGES\n"
-}
diff --git a/doc/intrinsics/INDEX.json b/doc/intrinsics/INDEX.json
deleted file mode 100644
index b386874a..00000000
--- a/doc/intrinsics/INDEX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "INDEX",
- "docstr": "`INDEX` — Position of a substring within a string\n\n### Description\nReturns the position of the start of the first occurrence of string\n`SUBSTRING` as a substring in `STRING`, counting from one. If\n`SUBSTRING` is not present in `STRING`, zero is returned. If\nthe `BACK` argument is present and true, the return value is the\nstart of the last occurrence rather than the first.\n\n\n\n### Syntax\n`RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])`\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)` \n | `SUBSTRING` | Shall be a scalar `CHARACTER`, with\n`INTENT(IN)` \n | `BACK` | (Optional) Shall be a scalar `LOGICAL`, with\n`INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INDEX(STRING, SUBSTRING)` | `CHARACTER` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, VERIFY\n"
-}
diff --git a/doc/intrinsics/INT.json b/doc/intrinsics/INT.json
deleted file mode 100644
index 34562eb4..00000000
--- a/doc/intrinsics/INT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "INT",
- "docstr": "`INT` — Convert to integer type\n\n### Description\nConvert to integer type\n\n\n\n### Syntax\n`RESULT = INT(A [, KIND))`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `INTEGER` variable or array under\nthe following rules:\n\n \n**(A)** If `A` is of type `INTEGER`, `INT(A) = A`\n**(B)** If `A` is of type `REAL` and |A| < 1, `INT(A)`equals `0`. If |A| \\geq 1, then `INT(A)` is the integer\nwhose magnitude is the largest integer that does not exceed the magnitude\nof `A` and whose sign is the same as the sign of `A`. \n\n**(C)** If `A` is of type `COMPLEX`, rule B is applied to the real part of `A`. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_int\n\n integer :: i = 42\n\n complex :: z = (-3.7, 1.0)\n\n print *, int(i)\n\n print *, int(z), int(z,8)\n\nend program\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INT(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IFIX(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IDINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/INT2.json b/doc/intrinsics/INT2.json
deleted file mode 100644
index c9860103..00000000
--- a/doc/intrinsics/INT2.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "INT2",
- "docstr": "`INT2` — Convert to 16-bit integer type\n\n### Description\nConvert to a `KIND=2` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=2`, and is only included for backwards compatibility.\n\n \nThe `SHORT` intrinsic is equivalent to `INT2`.\n\n\n\n\n### Syntax\n`RESULT = INT2(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(2)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT8, LONG\n"
-}
diff --git a/doc/intrinsics/INT8.json b/doc/intrinsics/INT8.json
deleted file mode 100644
index d21e500a..00000000
--- a/doc/intrinsics/INT8.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "INT8",
- "docstr": "`INT8` — Convert to 64-bit integer type\n\n### Description\nConvert to a `KIND=8` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=8`, and is only included for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = INT8(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(8)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, LONG\n"
-}
diff --git a/doc/intrinsics/IOR.json b/doc/intrinsics/IOR.json
deleted file mode 100644
index aaf59c82..00000000
--- a/doc/intrinsics/IOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IOR",
- "docstr": "`IOR` — Bitwise logical or\n\n### Description\n`IOR` returns the bitwise Boolean inclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIEOR, IAND, IBITS, IBSET, IBCLR, NOT\n"
-}
diff --git a/doc/intrinsics/IPARITY.json b/doc/intrinsics/IPARITY.json
deleted file mode 100644
index 7b394dc9..00000000
--- a/doc/intrinsics/IPARITY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IPARITY",
- "docstr": "`IPARITY` — Bitwise XOR of array elements\n\n### Description\nReduces with bitwise XOR (exclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IPARITY(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise XOR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iparity\n\n INTEGER(1) :: a(2)\n\n\n a(1) = b'00100100'\n\n a(2) = b'01101010'\n\n\n ! prints 01001110\n\n PRINT '(b8.8)', IPARITY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IALL, IEOR, PARITY\n"
-}
diff --git a/doc/intrinsics/IRAND.json b/doc/intrinsics/IRAND.json
deleted file mode 100644
index 0b6dd7a3..00000000
--- a/doc/intrinsics/IRAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IRAND",
- "docstr": "`IRAND` — Integer pseudo-random number\n\n### Description\n`IRAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and a system-dependent limit (which is in most\ncases 2147483647). If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = IRAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Example\n```\n\n\nprogram test_irand\n\n integer,parameter :: seed = 86456\n\n\n call srand(seed)\n\n print *, irand(), irand(), irand(), irand()\n\n print *, irand(seed), irand(), irand(), irand()\n\nend program test_irand\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
-}
diff --git a/doc/intrinsics/ISATTY.json b/doc/intrinsics/ISATTY.json
deleted file mode 100644
index e8d91ec7..00000000
--- a/doc/intrinsics/ISATTY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ISATTY",
- "docstr": "`ISATTY` — Whether a unit is a terminal device.\n\n### Description\nDetermine whether a unit is connected to a terminal device.\n\n\n\n### Syntax\n`RESULT = ISATTY(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if the `UNIT` is connected to a terminal\ndevice, `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_isatty\n\n INTEGER(kind=1) :: unit\n\n DO unit = 1, 10\n\n write(*,*) isatty(unit=unit)\n\n END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nTTYNAM\n"
-}
diff --git a/doc/intrinsics/ISHFT.json b/doc/intrinsics/ISHFT.json
deleted file mode 100644
index d7561c08..00000000
--- a/doc/intrinsics/ISHFT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ISHFT",
- "docstr": "`ISHFT` — Shift bits\n\n### Description\n`ISHFT` returns a value corresponding to `I` with all of the\nbits shifted `SHIFT` places. A value of `SHIFT` greater than\nzero corresponds to a left shift, a value of zero corresponds to no\nshift, and a value less than zero corresponds to a right shift. If the\nabsolute value of `SHIFT` is greater than `BIT_SIZE(I)`, the\nvalue is undefined. Bits shifted out from the left end or right end are\nlost; zeros are shifted in from the opposite end.\n\n\n\n### Syntax\n`RESULT = ISHFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFTC\n"
-}
diff --git a/doc/intrinsics/ISHFTC.json b/doc/intrinsics/ISHFTC.json
deleted file mode 100644
index ef42a04e..00000000
--- a/doc/intrinsics/ISHFTC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ISHFTC",
- "docstr": "`ISHFTC` — Shift bits circularly\n\n### Description\n`ISHFTC` returns a value corresponding to `I` with the\nrightmost `SIZE` bits shifted circularly `SHIFT` places; that\nis, bits shifted out one end are shifted into the opposite end. A value\nof `SHIFT` greater than zero corresponds to a left shift, a value of\nzero corresponds to no shift, and a value less than zero corresponds to\na right shift. The absolute value of `SHIFT` must be less than\n`SIZE`. If the `SIZE` argument is omitted, it is taken to be\nequivalent to `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = ISHFTC(I, SHIFT [, SIZE])`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `SIZE` | (Optional) The type shall be `INTEGER`;\nthe value must be greater than zero and less than or equal to\n`BIT_SIZE(I)`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT\n"
-}
diff --git a/doc/intrinsics/ISNAN.json b/doc/intrinsics/ISNAN.json
deleted file mode 100644
index b7bcd47a..00000000
--- a/doc/intrinsics/ISNAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ISNAN",
- "docstr": "`ISNAN` — Test for a NaN\n\n### Description\n`ISNAN` tests whether a floating-point value is an IEEE\nNot-a-Number (NaN). \n\n\n### Syntax\n`ISNAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n\n### Return value\nReturns a default-kind `LOGICAL`. The returned value is `TRUE`if `X` is a NaN and `FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_nan\n\n implicit none\n\n real :: x\n\n x = -1.0\n\n x = sqrt(x)\n\n if (isnan(x)) stop '\"x\" is a NaN'\n\nend program test_nan\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/IS_CONTIGUOUS.json b/doc/intrinsics/IS_CONTIGUOUS.json
deleted file mode 100644
index 25a165ac..00000000
--- a/doc/intrinsics/IS_CONTIGUOUS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IS_CONTIGUOUS",
- "docstr": "`IS_CONTIGUOUS` — Test whether an array is contiguous\n\n### Description\nIS_CONTIGUOUS tests whether an array is contiguous.\n### Standard\nFortran 2008 and later.\n### Class\nInquiry function\n### Syntax\nRESULT = IS_CONTIGUOUS(ARRAY)\n### Arguments\n- ARRAY: Shall be an array of any type.\n### Return value\nReturns a LOGICAL of the default kind, which .TRUE. if ARRAY is contiguous and false otherwise.\n"
-}
diff --git a/doc/intrinsics/IS_IOSTAT_END.json b/doc/intrinsics/IS_IOSTAT_END.json
deleted file mode 100644
index 59e169c8..00000000
--- a/doc/intrinsics/IS_IOSTAT_END.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IS_IOSTAT_END",
- "docstr": "`IS_IOSTAT_END` — Test for end-of-file value\n\n### Description\n`IS_IOSTAT_END` tests whether an variable has the value of the I/O\nstatus “end of file”. The function is equivalent to comparing the variable\nwith the `IOSTAT_END` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_END(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n IMPLICIT NONE\n\n INTEGER :: stat, i\n\n OPEN(88, FILE='test.dat')\n\n READ(88, *, IOSTAT=stat) i\n\n IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/IS_IOSTAT_EOR.json b/doc/intrinsics/IS_IOSTAT_EOR.json
deleted file mode 100644
index 138b57af..00000000
--- a/doc/intrinsics/IS_IOSTAT_EOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "IS_IOSTAT_EOR",
- "docstr": "`IS_IOSTAT_EOR` — Test for end-of-record value\n\n### Description\n`IS_IOSTAT_EOR` tests whether an variable has the value of the I/O\nstatus “end of record”. The function is equivalent to comparing the\nvariable with the `IOSTAT_EOR` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_EOR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n IMPLICIT NONE\n\n INTEGER :: stat, i(50)\n\n OPEN(88, FILE='test.dat', FORM='UNFORMATTED')\n\n READ(88, IOSTAT=stat) i\n\n IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/ITIME.json b/doc/intrinsics/ITIME.json
deleted file mode 100644
index add060aa..00000000
--- a/doc/intrinsics/ITIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "ITIME",
- "docstr": "`ITIME` — Get current local time subroutine (hour/minutes/seconds)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The hour (in the range 1-24), minute (in the range 1-60),\nand seconds (in the range 1-60) appear in elements 1, 2, and 3 of `VALUES`,\nrespectively.\n\n\n\n### Syntax\n`CALL ITIME(VALUES)`\n\n\n### Arguments\n\n \n\nand the kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_itime\n\n integer, dimension(3) :: tarray\n\n call itime(tarray)\n\n print *, tarray(1)\n\n print *, tarray(2)\n\n print *, tarray(3)\n\nend program test_itime\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/KILL.json b/doc/intrinsics/KILL.json
deleted file mode 100644
index 03b465e0..00000000
--- a/doc/intrinsics/KILL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "KILL",
- "docstr": "`KILL` — Send a signal to a process\n\n### Description\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = KILL(C, VALUE)` \n\n\n\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)` \n | `VALUE` | Shall be a scalar `INTEGER`, with\n`INTENT(IN)` \n | `STATUS` | (Optional) status flag of type `INTEGER(4)` or\n`INTEGER(8)`. Returns 0 on success, or a system-specific error code\notherwise.\n\n\n\n\n\n\n### Standard\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nABORT, EXIT\n"
-}
diff --git a/doc/intrinsics/KIND.json b/doc/intrinsics/KIND.json
deleted file mode 100644
index 405a5166..00000000
--- a/doc/intrinsics/KIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "KIND",
- "docstr": "`KIND` — Kind of an entity\n\n### Description\n`KIND(X)` returns the kind value of the entity `X`.\n\n\n\n### Syntax\n`K = KIND(X)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX` or `CHARACTER`.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_kind\n\n integer,parameter :: kc = kind(' ')\n\n integer,parameter :: kl = kind(.true.)\n\n\n print *, \"The default character kind is \", kc\n\n print *, \"The default logical kind is \", kl\n\nend program test_kind\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/LBOUND.json b/doc/intrinsics/LBOUND.json
deleted file mode 100644
index 18b81cb5..00000000
--- a/doc/intrinsics/LBOUND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LBOUND",
- "docstr": "`LBOUND` — Lower dimension bounds of an array\n\n### Description\nReturns the lower bounds of an array, or a single lower bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = LBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the lower bound is taken to be 1.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUBOUND, LCOBOUND\n"
-}
diff --git a/doc/intrinsics/LCOBOUND.json b/doc/intrinsics/LCOBOUND.json
deleted file mode 100644
index 4ac8b183..00000000
--- a/doc/intrinsics/LCOBOUND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LCOBOUND",
- "docstr": "`LCOBOUND` — Lower codimension bounds of an array\n\n### Description\nReturns the lower bounds of a coarray, or a single lower cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUCOBOUND, LBOUND\n"
-}
diff --git a/doc/intrinsics/LEADZ.json b/doc/intrinsics/LEADZ.json
deleted file mode 100644
index 720e2799..00000000
--- a/doc/intrinsics/LEADZ.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LEADZ",
- "docstr": "`LEADZ` — Number of leading zero bits of an integer\n\n### Description\n`LEADZ` returns the number of leading zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = LEADZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_leadz\n\n WRITE (*,*) BIT_SIZE(1) ! prints 32\n\n WRITE (*,*) LEADZ(1) ! prints 31\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, TRAILZ, POPCNT, POPPAR\n"
-}
diff --git a/doc/intrinsics/LEN.json b/doc/intrinsics/LEN.json
deleted file mode 100644
index 45688fb8..00000000
--- a/doc/intrinsics/LEN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LEN",
- "docstr": "`LEN` — Length of a character entity\n\n### Description\nReturns the length of a character string. If `STRING` is an array,\nthe length of an element of `STRING` is returned. Note that\n`STRING` need not be defined when this intrinsic is invoked, since\nonly the length, not the content, of `STRING` is needed.\n\n\n\n### Syntax\n`L = LEN(STRING [, KIND])`\n\n\n### Arguments\n\n \n | `STRING` | Shall be a scalar or array of type\n`CHARACTER`, with `INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LEN(STRING)` | `CHARACTER` | `INTEGER` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLEN_TRIM, ADJUSTL, ADJUSTR\n"
-}
diff --git a/doc/intrinsics/LEN_TRIM.json b/doc/intrinsics/LEN_TRIM.json
deleted file mode 100644
index 0ba076ea..00000000
--- a/doc/intrinsics/LEN_TRIM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LEN_TRIM",
- "docstr": "`LEN_TRIM` — Length of a character entity without trailing blank characters\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks.\n\n\n\n### Syntax\n`RESULT = LEN_TRIM(STRING [, KIND])`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLEN, ADJUSTL, ADJUSTR\n"
-}
diff --git a/doc/intrinsics/LGE.json b/doc/intrinsics/LGE.json
deleted file mode 100644
index 8ee1bb38..00000000
--- a/doc/intrinsics/LGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LGE",
- "docstr": "`LGE` — Lexical greater than or equal\n\n### Description\nDetermines whether one string is lexically greater than or equal to\nanother string, where the two strings are interpreted as containing\nASCII character codes. If the String A and String B are not the same\nlength, the shorter is compared as if spaces were appended to it to form\na value that has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A >= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGT, LLE, LLT\n"
-}
diff --git a/doc/intrinsics/LGT.json b/doc/intrinsics/LGT.json
deleted file mode 100644
index 354dc05b..00000000
--- a/doc/intrinsics/LGT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LGT",
- "docstr": "`LGT` — Lexical greater than\n\n### Description\nDetermines whether one string is lexically greater than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A > STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LLE, LLT\n"
-}
diff --git a/doc/intrinsics/LINK.json b/doc/intrinsics/LINK.json
deleted file mode 100644
index a6747629..00000000
--- a/doc/intrinsics/LINK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LINK",
- "docstr": "`LINK` — Create a hard link\n\n### Description\nMakes a (hard) link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`link(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LINK(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nSYMLNK, UNLINK\n"
-}
diff --git a/doc/intrinsics/LLE.json b/doc/intrinsics/LLE.json
deleted file mode 100644
index 36e5b367..00000000
--- a/doc/intrinsics/LLE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LLE",
- "docstr": "`LLE` — Lexical less than or equal\n\n### Description\nDetermines whether one string is lexically less than or equal to another\nstring, where the two strings are interpreted as containing ASCII\ncharacter codes. If the String A and String B are not the same length,\nthe shorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A <= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLT\n"
-}
diff --git a/doc/intrinsics/LLT.json b/doc/intrinsics/LLT.json
deleted file mode 100644
index 1b2a40c4..00000000
--- a/doc/intrinsics/LLT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LLT",
- "docstr": "`LLT` — Lexical less than\n\n### Description\nDetermines whether one string is lexically less than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A < STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLE\n"
-}
diff --git a/doc/intrinsics/LNBLNK.json b/doc/intrinsics/LNBLNK.json
deleted file mode 100644
index 01a68828..00000000
--- a/doc/intrinsics/LNBLNK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LNBLNK",
- "docstr": "`LNBLNK` — Index of the last non-blank character in a string\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks. \nThis is identical to the standard `LEN_TRIM` intrinsic, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LNBLNK(STRING)`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)` \n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, LEN_TRIM\n"
-}
diff --git a/doc/intrinsics/LOC.json b/doc/intrinsics/LOC.json
deleted file mode 100644
index aee2866d..00000000
--- a/doc/intrinsics/LOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LOC",
- "docstr": "`LOC` — Returns the address of a variable\n\n### Description\n`LOC(X)` returns the address of `X` as an integer.\n\n\n\n### Syntax\n`RESULT = LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Variable of any type.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`, with a `KIND`corresponding to the size (in bytes) of a memory address on the target\nmachine.\n\n\n\n### Example\n```\n\n\nprogram test_loc\n\n integer :: i\n\n real :: r\n\n i = loc(r)\n\n print *, i\n\nend program test_loc\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/LOG.json b/doc/intrinsics/LOG.json
deleted file mode 100644
index e67fea82..00000000
--- a/doc/intrinsics/LOG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LOG",
- "docstr": "`LOG` — Natural logarithm function\n\n### Description\n`LOG(X)` computes the natural logarithm of `X`, i.e. the\nlogarithm to the base e.\n\n\n\n### Syntax\n`RESULT = LOG(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`. \nIf `X` is `COMPLEX`, the imaginary part \\omega is in the range\n-\\pi < \\omega \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_log\n\n real(8) :: x = 2.7182818284590451_8\n\n complex :: z = (1.0, 2.0)\n\n x = log(x) ! will yield (approximately) 1\n\n z = log(z)\n\nend program test_log\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG(X)` | `REAL(4) X` | `REAL(4)` | f95, gnu\n\n | `DLOG(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CLOG(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/LOG10.json b/doc/intrinsics/LOG10.json
deleted file mode 100644
index 505f774d..00000000
--- a/doc/intrinsics/LOG10.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LOG10",
- "docstr": "`LOG10` — Base 10 logarithm function\n\n### Description\n`LOG10(X)` computes the base 10 logarithm of `X`.\n\n\n\n### Syntax\n`RESULT = LOG10(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log10\n\n real(8) :: x = 10.0_8\n\n x = log10(x)\n\nend program test_log10\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG10(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DLOG10(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/LOGICAL.json b/doc/intrinsics/LOGICAL.json
deleted file mode 100644
index a62e16e4..00000000
--- a/doc/intrinsics/LOGICAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LOGICAL",
- "docstr": "`LOGICAL` — Convert to logical type\n\n### Description\nConverts one kind of `LOGICAL` variable to another.\n\n\n\n### Syntax\n`RESULT = LOGICAL(L [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is a `LOGICAL` value equal to `L`, with a\nkind corresponding to `KIND`, or of the default logical kind if\n`KIND` is not given.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, REAL, CMPLX\n"
-}
diff --git a/doc/intrinsics/LOG_GAMMA.json b/doc/intrinsics/LOG_GAMMA.json
deleted file mode 100644
index 61ca6394..00000000
--- a/doc/intrinsics/LOG_GAMMA.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LOG_GAMMA",
- "docstr": "`LOG_GAMMA` — Logarithm of the Gamma function\n\n### Description\n`LOG_GAMMA(X)` computes the natural logarithm of the absolute value\nof the Gamma (\\Gamma) function.\n\n\n\n### Syntax\n`X = LOG_GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log_gamma\n\n real :: x = 1.0\n\n x = lgamma(x) ! returns 0.0\n\nend program test_log_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `ALGAMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DLGAMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nGamma function: GAMMA\n\n "
-}
diff --git a/doc/intrinsics/LONG.json b/doc/intrinsics/LONG.json
deleted file mode 100644
index c2cebc1b..00000000
--- a/doc/intrinsics/LONG.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LONG",
- "docstr": "`LONG` — Convert to integer type\n\n### Description\nConvert to a `KIND=4` integer type, which is the same size as a C\n`long` integer. This is equivalent to the standard `INT`intrinsic with an optional argument of `KIND=4`, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LONG(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(4)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, INT8\n"
-}
diff --git a/doc/intrinsics/LSHIFT.json b/doc/intrinsics/LSHIFT.json
deleted file mode 100644
index c0f7ad62..00000000
--- a/doc/intrinsics/LSHIFT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LSHIFT",
- "docstr": "`LSHIFT` — Left shift bits\n\n### Description\n`LSHIFT` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost; zeros are shifted in from\nthe opposite end.\n\n \nThis function has been superseded by the `ISHFT` intrinsic, which\nis standard in Fortran 95 and later, and the `SHIFTL` intrinsic,\nwhich is standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = LSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, RSHIFT, SHIFTA, SHIFTL,\nSHIFTR\n\n "
-}
diff --git a/doc/intrinsics/LSTAT.json b/doc/intrinsics/LSTAT.json
deleted file mode 100644
index 85e551ca..00000000
--- a/doc/intrinsics/LSTAT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LSTAT",
- "docstr": "`LSTAT` — Get file status\n\n### Description\n`LSTAT` is identical to STAT, except that if path is a\nsymbolic link, then the link itself is statted, not the file that it\nrefers to.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LSTAT(NAME, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n of the default\nkind, a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. \nReturns 0 on success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a file: STAT\n"
-}
diff --git a/doc/intrinsics/LTIME.json b/doc/intrinsics/LTIME.json
deleted file mode 100644
index 529db386..00000000
--- a/doc/intrinsics/LTIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "LTIME",
- "docstr": "`LTIME` — Convert time to local time info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the local time zone using `localtime(3)`.\n\n\n\n### Syntax\n`CALL LTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n \n- Seconds after the minute, range 0–59 or 0–61 to allow for leap\nseconds\n
- Minutes after the hour, range 0–59\n
- Hours past midnight, range 0–23\n
- Day of month, range 0–31\n
- Number of months since January, range 0–12\n
- Years since 1900\n
- Number of days since Sunday, range 0–6\n
- Days since January 1\n
- Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, GMTIME, TIME, TIME8\n\n "
-}
diff --git a/doc/intrinsics/MALLOC.json b/doc/intrinsics/MALLOC.json
deleted file mode 100644
index d9265ef6..00000000
--- a/doc/intrinsics/MALLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MALLOC",
- "docstr": "`MALLOC` — Allocate dynamic memory\n\n### Description\n`MALLOC(SIZE)` allocates `SIZE` bytes of dynamic memory and\nreturns the address of the allocated memory. The `MALLOC` intrinsic\nis an extension intended to be used with Cray pointers, and is provided\nin GNU Fortran to allow the user to compile legacy code. For new code\nusing Fortran 95 pointers, the memory allocation intrinsic is\n`ALLOCATE`.\n\n\n\n### Syntax\n`PTR = MALLOC(SIZE)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(K)`, with `K` such that\nvariables of type `INTEGER(K)` have the same size as\nC pointers (`sizeof(void *)`).\n\n\n\n### Example\nThe following example demonstrates the use of `MALLOC` and\n`FREE` with Cray pointers.\n\n```\n\n\nprogram test_malloc\n\n implicit none\n\n integer i\n\n real*8 x(*), z\n\n pointer(ptr_x,x)\n\n\n ptr_x = malloc(20*8)\n\n do i = 1, 20\n\n x(i) = sqrt(1.0d0 / i)\n\n end do\n\n z = 0\n\n do i = 1, 20\n\n z = z + x(i)\n\n print *, z\n\n end do\n\n call free(ptr_x)\n\nend program test_malloc\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFREE\n"
-}
diff --git a/doc/intrinsics/MASKL.json b/doc/intrinsics/MASKL.json
deleted file mode 100644
index f9f13f57..00000000
--- a/doc/intrinsics/MASKL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MASKL",
- "docstr": "`MASKL` — Left justified mask\n\n### Description\n`MASKL(I[, KIND])` has its leftmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKL(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKR\n"
-}
diff --git a/doc/intrinsics/MASKR.json b/doc/intrinsics/MASKR.json
deleted file mode 100644
index 0190e419..00000000
--- a/doc/intrinsics/MASKR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MASKR",
- "docstr": "`MASKR` — Right justified mask\n\n### Description\n`MASKL(I[, KIND])` has its rightmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKR(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKL\n"
-}
diff --git a/doc/intrinsics/MATMUL.json b/doc/intrinsics/MATMUL.json
deleted file mode 100644
index fb39248e..00000000
--- a/doc/intrinsics/MATMUL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MATMUL",
- "docstr": "`MATMUL` — matrix multiplication\n\n### Description\nPerforms a matrix multiplication on numeric or logical arguments.\n\n\n\n### Syntax\n`RESULT = MATMUL(MATRIX_A, MATRIX_B)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX`, or `LOGICAL` type, with a rank of\none or two. \n\n | `MATRIX_B` | An array of `INTEGER`,\n`REAL`, or `COMPLEX` type if `MATRIX_A` is of a numeric\ntype; otherwise, an array of `LOGICAL` type. The rank shall be one\nor two, and the first (or only) dimension of `MATRIX_B` shall be\nequal to the last (or only) dimension of `MATRIX_A`.\n\n\n\n\n\n\n### Return value\nThe matrix product of `MATRIX_A` and `MATRIX_B`. The type and\nkind of the result follow the usual type and kind promotion rules, as\nfor the `*` or `.AND.` operators.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\n"
-}
diff --git a/doc/intrinsics/MAX.json b/doc/intrinsics/MAX.json
deleted file mode 100644
index bb320f58..00000000
--- a/doc/intrinsics/MAX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MAX",
- "docstr": "`MAX` — Maximum value of an argument list\n\n### Description\nReturns the argument with the largest (most positive) value.\n\n\n\n### Syntax\n`RESULT = MAX(A1, A2 [, A3 [, ...]])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MAX0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMAX0(A1)` | `INTEGER(4) A1` | `REAL(MAX(X))` | Fortran 77 and later\n\n | `MAX1(A1)` | `REAL A1` | `INT(MAX(X))` | Fortran 77 and later\n\n | `AMAX1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMAX1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAXLOC MAXVAL, MIN\n\n "
-}
diff --git a/doc/intrinsics/MAXEXPONENT.json b/doc/intrinsics/MAXEXPONENT.json
deleted file mode 100644
index 6b683d9f..00000000
--- a/doc/intrinsics/MAXEXPONENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MAXEXPONENT",
- "docstr": "`MAXEXPONENT` — Maximum exponent of a real kind\n\n### Description\n`MAXEXPONENT(X)` returns the maximum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MAXEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram exponents\n\n real(kind=4) :: x\n\n real(kind=8) :: y\n\n\n print *, minexponent(x), maxexponent(x)\n\n print *, minexponent(y), maxexponent(y)\n\nend program exponents\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/MAXLOC.json b/doc/intrinsics/MAXLOC.json
deleted file mode 100644
index 0fdd4620..00000000
--- a/doc/intrinsics/MAXLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MAXLOC",
- "docstr": "`MAXLOC` — Location of the maximum value within an array\n\n### Description\nDetermines the location of the element in the array with the maximum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the maximum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the maximum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXLOC(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXVAL\n\n "
-}
diff --git a/doc/intrinsics/MAXVAL.json b/doc/intrinsics/MAXVAL.json
deleted file mode 100644
index c2e1ff71..00000000
--- a/doc/intrinsics/MAXVAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MAXVAL",
- "docstr": "`MAXVAL` — Maximum value of an array\n\n### Description\nDetermines the maximum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the maximum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `-HUGE(ARRAY)`if `ARRAY` is numeric, or a string of nulls if `ARRAY` is of character\ntype.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXVAL(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXLOC\n"
-}
diff --git a/doc/intrinsics/MCLOCK.json b/doc/intrinsics/MCLOCK.json
deleted file mode 100644
index 017c8da7..00000000
--- a/doc/intrinsics/MCLOCK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MCLOCK",
- "docstr": "`MCLOCK` — Time function\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME\n\n "
-}
diff --git a/doc/intrinsics/MCLOCK8.json b/doc/intrinsics/MCLOCK8.json
deleted file mode 100644
index bde727a6..00000000
--- a/doc/intrinsics/MCLOCK8.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MCLOCK8",
- "docstr": "`MCLOCK8` — Time function (64-bit)\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `clock(3)`. On a system with a 32-bit\n`clock(3)`, `MCLOCK8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n "
-}
diff --git a/doc/intrinsics/MERGE.json b/doc/intrinsics/MERGE.json
deleted file mode 100644
index 325970fa..00000000
--- a/doc/intrinsics/MERGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MERGE",
- "docstr": "`MERGE` — Merge variables\n\n### Description\nSelect values from two arrays according to a logical mask. The result\nis equal to `TSOURCE` if `MASK` is `.TRUE.`, or equal to\n`FSOURCE` if it is `.FALSE.`.\n\n\n\n### Syntax\n`RESULT = MERGE(TSOURCE, FSOURCE, MASK)`\n\n\n### Arguments\n\n \n | `TSOURCE` | May be of any type. \n\n | `FSOURCE` | Shall be of the same type and type parameters\nas `TSOURCE`. \n\n | `MASK` | Shall be of type `LOGICAL`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and type parameters as `TSOURCE`.\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/MERGE_BITS.json b/doc/intrinsics/MERGE_BITS.json
deleted file mode 100644
index 9dae7f79..00000000
--- a/doc/intrinsics/MERGE_BITS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MERGE_BITS",
- "docstr": "`MERGE_BITS` — Merge of bits under mask\n\n### Description\n`MERGE_BITS(I, J, MASK)` merges the bits of `I` and `J`\nas determined by the mask. The i-th bit of the result is equal to the\ni-th bit of `I` if the i-th bit of `MASK` is 1; it is equal to\nthe i-th bit of `J` otherwise.\n\n\n\n### Syntax\n`RESULT = MERGE_BITS(I, J, MASK)`\n\n\n### Arguments\n\n \n. \n\n | `J` | Shall be of type `INTEGER` and of the same\nkind as `I`. \n\n | `MASK` | Shall be of type `INTEGER` and of the same\nkind as `I`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and kind as `I`.\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/MIN.json b/doc/intrinsics/MIN.json
deleted file mode 100644
index e8056129..00000000
--- a/doc/intrinsics/MIN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MIN",
- "docstr": "`MIN` — Minimum value of an argument list\n\n### Description\nReturns the argument with the smallest (most negative) value.\n\n\n\n### Syntax\n`RESULT = MIN(A1, A2 [, A3, ...])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MIN0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN0(A1)` | `INTEGER(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `MIN1(A1)` | `REAL A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMIN1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAX, MINLOC, MINVAL\n"
-}
diff --git a/doc/intrinsics/MINEXPONENT.json b/doc/intrinsics/MINEXPONENT.json
deleted file mode 100644
index be614611..00000000
--- a/doc/intrinsics/MINEXPONENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MINEXPONENT",
- "docstr": "`MINEXPONENT` — Minimum exponent of a real kind\n\n### Description\n`MINEXPONENT(X)` returns the minimum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MINEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `MAXEXPONENT` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/MINLOC.json b/doc/intrinsics/MINLOC.json
deleted file mode 100644
index 4941aee5..00000000
--- a/doc/intrinsics/MINLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MINLOC",
- "docstr": "`MINLOC` — Location of the minimum value within an array\n\n### Description\nDetermines the location of the element in the array with the minimum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the minimum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the minimum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINLOC(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINVAL\n\n "
-}
diff --git a/doc/intrinsics/MINVAL.json b/doc/intrinsics/MINVAL.json
deleted file mode 100644
index f7a8a82d..00000000
--- a/doc/intrinsics/MINVAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MINVAL",
- "docstr": "`MINVAL` — Minimum value of an array\n\n### Description\nDetermines the minimum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the minimum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `HUGE(ARRAY)` if\n`ARRAY` is numeric, or a string of `CHAR(255)` characters if\n`ARRAY` is of character type.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINVAL(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINLOC\n\n "
-}
diff --git a/doc/intrinsics/MOD.json b/doc/intrinsics/MOD.json
deleted file mode 100644
index 024d9ceb..00000000
--- a/doc/intrinsics/MOD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MOD",
- "docstr": "`MOD` — Remainder function\n\n### Description\n`MOD(A,P)` computes the remainder of the division of A by P.\n\n\n\n### Syntax\n`RESULT = MOD(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`\nand not equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is the result of `A - (INT(A/P) * P)`. The type\nand kind of the return value is the same as that of the arguments. The\nreturned value has the same sign as A and a magnitude less than the\nmagnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_mod\n\n print *, mod(17,3)\n\n print *, mod(17.5,5.5)\n\n print *, mod(17.5d0,5.5)\n\n print *, mod(17.5,5.5d0)\n\n\n print *, mod(-17,3)\n\n print *, mod(-17.5,5.5)\n\n print *, mod(-17.5d0,5.5)\n\n print *, mod(-17.5,5.5d0)\n\n\n print *, mod(17,-3)\n\n print *, mod(17.5,-5.5)\n\n print *, mod(17.5d0,-5.5)\n\n print *, mod(17.5,-5.5d0)\n\nend program test_mod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `MOD(A,P)` | `INTEGER A,P` | `INTEGER` | Fortran 95 and later\n\n | `AMOD(A,P)` | `REAL(4) A,P` | `REAL(4)` | Fortran 95 and later\n\n | `DMOD(A,P)` | `REAL(8) A,P` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMODULO\n\n "
-}
diff --git a/doc/intrinsics/MODULO.json b/doc/intrinsics/MODULO.json
deleted file mode 100644
index 848ab2da..00000000
--- a/doc/intrinsics/MODULO.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MODULO",
- "docstr": "`MODULO` — Modulo function\n\n### Description\n`MODULO(A,P)` computes the `A` modulo `P`.\n\n\n\n### Syntax\n`RESULT = MODULO(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`. \nIt shall not be zero.\n\n\n\n\n\n\n### Return value\nThe type and kind of the result are those of the arguments.\n \n**If `A` and `P` are of type `INTEGER`:** `MODULO(A,P)` has the value `R` such that `A=Q*P+R`, where\n`Q` is an integer and `R` is between 0 (inclusive) and `P`\n(exclusive). \n\n**If `A` and `P` are of type `REAL`:** `MODULO(A,P)` has the value of `A - FLOOR (A / P) * P`. \n\n \n The returned value has the same sign as P and a magnitude less than\nthe magnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_modulo\n\n print *, modulo(17,3)\n\n print *, modulo(17.5,5.5)\n\n\n print *, modulo(-17,3)\n\n print *, modulo(-17.5,5.5)\n\n\n print *, modulo(17,-3)\n\n print *, modulo(17.5,-5.5)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMOD\n\n "
-}
diff --git a/doc/intrinsics/MOVE_ALLOC.json b/doc/intrinsics/MOVE_ALLOC.json
deleted file mode 100644
index 9ceccf98..00000000
--- a/doc/intrinsics/MOVE_ALLOC.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MOVE_ALLOC",
- "docstr": "`MOVE_ALLOC` — Move allocation from one object to another\n\n### Description\n`MOVE_ALLOC(FROM, TO)` moves the allocation from `FROM` to\n`TO`. `FROM` will become deallocated in the process.\n\n\n\n### Syntax\n`CALL MOVE_ALLOC(FROM, TO)`\n\n\n### Arguments\n\n \n, may be\nof any type and kind. \n\n | `TO` | `ALLOCATABLE`, `INTENT(OUT)`, shall be\nof the same type, kind and rank as `FROM`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_move_alloc\n\n integer, allocatable :: a(:), b(:)\n\n\n allocate(a(3))\n\n a = [ 1, 2, 3 ]\n\n call move_alloc(a, b)\n\n print *, allocated(a), allocated(b)\n\n print *, b\n\nend program test_move_alloc\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nPure subroutine\n\n\n"
-}
diff --git a/doc/intrinsics/MVBITS.json b/doc/intrinsics/MVBITS.json
deleted file mode 100644
index 4a499b39..00000000
--- a/doc/intrinsics/MVBITS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "MVBITS",
- "docstr": "`MVBITS` — Move bits from one integer to another\n\n### Description\nMoves `LEN` bits from positions `FROMPOS` through\n`FROMPOS+LEN-1` of `FROM` to positions `TOPOS` through\n`TOPOS+LEN-1` of `TO`. The portion of argument `TO` not\naffected by the movement of bits is unchanged. The values of\n`FROMPOS+LEN-1` and `TOPOS+LEN-1` must be less than\n`BIT_SIZE(FROM)`.\n\n\n\n### Syntax\n`CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)`\n\n\n### Arguments\n\n \n. \n\n | `FROMPOS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`. \n\n | `TO` | The type shall be `INTEGER`, of the\nsame kind as `FROM`. \n\n | `TOPOS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental subroutine\n\n\n\n### See also\nIBCLR, IBSET, IBITS, IAND, IOR, IEOR\n"
-}
diff --git a/doc/intrinsics/NEAREST.json b/doc/intrinsics/NEAREST.json
deleted file mode 100644
index 6fb2b21b..00000000
--- a/doc/intrinsics/NEAREST.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NEAREST",
- "docstr": "`NEAREST` — Nearest representable number\n\n### Description\n`NEAREST(X, S)` returns the processor-representable number nearest\nto `X` in the direction indicated by the sign of `S`.\n\n\n\n### Syntax\n`RESULT = NEAREST(X, S)`\n\n\n### Arguments\n\n \n. \n\n | `S` | Shall be of type `REAL` and\nnot equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type as `X`. If `S` is\npositive, `NEAREST` returns the processor-representable number\ngreater than `X` and nearest to it. If `S` is negative,\n`NEAREST` returns the processor-representable number smaller than\n`X` and nearest to it.\n\n\n\n### Example\n```\n\n\nprogram test_nearest\n\n real :: x, y\n\n x = nearest(42.0, 1.0)\n\n y = nearest(42.0, -1.0)\n\n write (*,\"(3(G20.15))\") x, y, x - y\n\nend program test_nearest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/NEW_LINE.json b/doc/intrinsics/NEW_LINE.json
deleted file mode 100644
index 31ddfcd7..00000000
--- a/doc/intrinsics/NEW_LINE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NEW_LINE",
- "docstr": "`NEW_LINE` — New line character\n\n### Description\n`NEW_LINE(C)` returns the new-line character.\n\n\n\n### Syntax\n`RESULT = NEW_LINE(C)`\n\n\n### Arguments\n\n \n | `C` | The argument shall be a scalar or array of the\ntype `CHARACTER`.\n\n\n\n\n\n\n### Return value\nReturns a `CHARACTER` scalar of length one with the new-line character of\nthe same kind as parameter `C`.\n\n\n\n### Example\n```\n\n\nprogram newline\n\n implicit none\n\n write(*,'(A)') 'This is record 1.'//NEW_LINE('A')//'This is record 2.'\n\nend program newline\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/NINT.json b/doc/intrinsics/NINT.json
deleted file mode 100644
index 69d97bcc..00000000
--- a/doc/intrinsics/NINT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NINT",
- "docstr": "`NINT` — Nearest whole number\n\n### Description\n`NINT(A)` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = NINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nReturns `A` with the fractional portion of its magnitude eliminated by\nrounding to the nearest whole number and with its sign preserved,\nconverted to an `INTEGER` of the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_nint\n\n real(4) x4\n\n real(8) x8\n\n x4 = 1.234E0_4\n\n x8 = 4.321_8\n\n print *, nint(x4), idnint(x8)\n\nend program test_nint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return Type | Standard\n\n | `NINT(A)` | `REAL(4) A` | `INTEGER` | Fortran 95 and later\n\n | `IDNINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, FLOOR\n\n "
-}
diff --git a/doc/intrinsics/NORM2.json b/doc/intrinsics/NORM2.json
deleted file mode 100644
index 83d2a911..00000000
--- a/doc/intrinsics/NORM2.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NORM2",
- "docstr": "`NORM2` — Euclidean vector norms\n\n### Description\nCalculates the Euclidean vector norm (L_2 norm) of\nof `ARRAY` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the square root of the sum of all\nelements in `ARRAY` squared is returned. Otherwise, an array of\nrank n-1, where n equals the rank of `ARRAY`, and a\nshape similar to that of `ARRAY` with dimension `DIM` dropped\nis returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n REAL :: x(5) = [ real :: 1, 2, 3, 4, 5 ]\n\n print *, NORM2(x) ! = sqrt(55.) ~ 7.416\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/NOT.json b/doc/intrinsics/NOT.json
deleted file mode 100644
index 4abeb419..00000000
--- a/doc/intrinsics/NOT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NOT",
- "docstr": "`NOT` — Logical negation\n\n### Description\n`NOT` returns the bitwise Boolean inverse of `I`.\n\n\n\n### Syntax\n`RESULT = NOT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\nargument.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIAND, IEOR, IOR, IBITS, IBSET, IBCLR\n\n "
-}
diff --git a/doc/intrinsics/NULL.json b/doc/intrinsics/NULL.json
deleted file mode 100644
index 07f8b539..00000000
--- a/doc/intrinsics/NULL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NULL",
- "docstr": "`NULL` — Function that returns an disassociated pointer\n\n### Description\nReturns a disassociated pointer.\n\n \nIf `MOLD` is present, a disassociated pointer of the same type is\nreturned, otherwise the type is determined by context.\n\n \n\nIn Fortran 95, `MOLD` is optional. Please note that Fortran 2003\nincludes cases where it is required.\n\n\n\n\n### Syntax\n`PTR => NULL([MOLD])`\n\n\n### Arguments\n\n \n | `MOLD` | (Optional) shall be a pointer of any association\nstatus and of any type.\n\n\n\n\n\n\n### Return value\nA disassociated pointer.\n\n\n\n### Example\n```\n\n\nREAL, POINTER, DIMENSION(:) :: VEC => NULL ()\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nASSOCIATED\n"
-}
diff --git a/doc/intrinsics/NUM_IMAGES.json b/doc/intrinsics/NUM_IMAGES.json
deleted file mode 100644
index ac0a1631..00000000
--- a/doc/intrinsics/NUM_IMAGES.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "NUM_IMAGES",
- "docstr": "`NUM_IMAGES` — Function that returns the number of images\n\n### Description\nReturns the number of images.\n\n\n\n### Syntax\n`RESULT = NUM_IMAGES(DISTANCE, FAILED)`\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n\n | `FAILED` | (optional, intent(in)) Scalar logical expression\n\n\n\n\n\n\n### Return value\nScalar default-kind integer. If `DISTANCE` is not present or has value 0,\nthe number of images in the current team is returned. For values smaller or\nequal distance to the initial team, it returns the number of images index\non the ancestor team which has a distance of `DISTANCE` from the invoking\nteam. If `DISTANCE` is larger than the distance to the initial team, the\nnumber of images of the initial team is returned. If `FAILED` is not present\nthe total number of images is returned; if it has the value `.TRUE.`,\nthe number of failed images is returned, otherwise, the number of images which\ndo have not the failed status.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n DO i = 1, NUM_IMAGES()\n\n WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n END DO\n\nEND IF\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` or `FAILED` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nTHIS_IMAGE, IMAGE_INDEX\n"
-}
diff --git a/doc/intrinsics/OR.json b/doc/intrinsics/OR.json
deleted file mode 100644
index b2283e69..00000000
--- a/doc/intrinsics/OR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "OR",
- "docstr": "`OR` — Bitwise logical OR\n\n### Description\nBitwise logical `OR`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IOR intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = OR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `J`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_or\n\n LOGICAL :: T = .TRUE., F = .FALSE.\n\n INTEGER :: a, b\n\n DATA a / Z'F' /, b / Z'3' /\n\n\n WRITE (*,*) OR(T, T), OR(T, F), OR(F, T), OR(F, F)\n\n WRITE (*,*) OR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IOR\n"
-}
diff --git a/doc/intrinsics/PACK.json b/doc/intrinsics/PACK.json
deleted file mode 100644
index 08287b2d..00000000
--- a/doc/intrinsics/PACK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PACK",
- "docstr": "`PACK` — Pack an array into an array of rank one\n\n### Description\nStores the elements of `ARRAY` in an array of rank one.\n\n \nThe beginning of the resulting array is made up of elements whose `MASK`\nequals `TRUE`. Afterwards, positions are filled with elements taken from\n`VECTOR`.\n\n\n\n\n### Syntax\n`RESULT = PACK(ARRAY, MASK[,VECTOR])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `MASK` | Shall be an array of type `LOGICAL` and\nof the same size as `ARRAY`. Alternatively, it may be a `LOGICAL`scalar. \n\n | `VECTOR` | (Optional) shall be an array of the same type\nas `ARRAY` and of rank one. If present, the number of elements in\n`VECTOR` shall be equal to or greater than the number of true elements\nin `MASK`. If `MASK` is scalar, the number of elements in\n`VECTOR` shall be equal to or greater than the number of elements in\n`ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is an array of rank one and the same type as that of `ARRAY`. \nIf `VECTOR` is present, the result size is that of `VECTOR`, the\nnumber of `TRUE` values in `MASK` otherwise.\n\n\n\n### Example\nGathering nonzero elements from an array:\n```\n\n\nPROGRAM test_pack_1\n\n INTEGER :: m(6)\n\n m = (/ 1, 0, 0, 0, 5, 0 /)\n\n WRITE(*, FMT=\"(6(I0, ' '))\") pack(m, m /= 0) ! \"1 5\"\n\nEND PROGRAM\n\n```\n\n \nGathering nonzero elements from an array and appending elements from `VECTOR`:\n \n PROGRAM test_pack_2\n INTEGER :: m(4)\n m = (/ 1, 0, 0, 2 /)\n WRITE(*, FMT=\"(4(I0, ' '))\") pack(m, m /= 0, (/ 0, 0, 3, 4 /)) ! \"1 2 3 4\"\n END PROGRAM\n \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n"
-}
diff --git a/doc/intrinsics/PARITY.json b/doc/intrinsics/PARITY.json
deleted file mode 100644
index b111c9d6..00000000
--- a/doc/intrinsics/PARITY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PARITY",
- "docstr": "`PARITY` — Reduction with exclusive OR\n\n### Description\nCalculates the parity, i.e. the reduction using `.XOR.`,\nof `MASK` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `MASK`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `MASK`.\n\n \nIf `DIM` is absent, a scalar with the parity of all elements in\n`MASK` is returned, i.e. true if an odd number of elements is\n`.true.` and false otherwise. If `DIM` is present, an array\nof rank n-1, where n equals the rank of `ARRAY`,\nand a shape similar to that of `MASK` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n LOGICAL :: x(2) = [ .true., .false. ]\n\n print *, PARITY(x) ! prints \"T\" (true).\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/PERROR.json b/doc/intrinsics/PERROR.json
deleted file mode 100644
index d07f48c8..00000000
--- a/doc/intrinsics/PERROR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PERROR",
- "docstr": "`PERROR` — Print system error message\n\n### Description\nPrints (on the C `stderr` stream) a newline-terminated error\nmessage corresponding to the last system error. This is prefixed by\n`STRING`, a colon and a space. See `perror(3)`.\n\n\n\n### Syntax\n`CALL PERROR(STRING)`\n\n\n### Arguments\n\n \n and of the\ndefault kind.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO\n"
-}
diff --git a/doc/intrinsics/POPCNT.json b/doc/intrinsics/POPCNT.json
deleted file mode 100644
index cfec65c0..00000000
--- a/doc/intrinsics/POPCNT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "POPCNT",
- "docstr": "`POPCNT` — Number of bits set\n\n### Description\n`POPCNT(I)` returns the number of bits set ('1' bits) in the binary\nrepresentation of `I`.\n\n\n\n### Syntax\n`RESULT = POPCNT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n print *, popcnt(127), poppar(127)\n\n print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPPAR, LEADZ, TRAILZ\n\n\n"
-}
diff --git a/doc/intrinsics/POPPAR.json b/doc/intrinsics/POPPAR.json
deleted file mode 100644
index 048293d7..00000000
--- a/doc/intrinsics/POPPAR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "POPPAR",
- "docstr": "`POPPAR` — Parity of the number of bits set\n\n### Description\n`POPPAR(I)` returns parity of the integer `I`, i.e. the parity\nof the number of bits set ('1' bits) in the binary representation of\n`I`. It is equal to 0 if `I` has an even number of bits set,\nand 1 for an odd number of '1' bits.\n\n\n\n### Syntax\n`RESULT = POPPAR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n print *, popcnt(127), poppar(127)\n\n print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPCNT, LEADZ, TRAILZ\n\n\n"
-}
diff --git a/doc/intrinsics/PRECISION.json b/doc/intrinsics/PRECISION.json
deleted file mode 100644
index 9c872f87..00000000
--- a/doc/intrinsics/PRECISION.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PRECISION",
- "docstr": "`PRECISION` — Decimal precision of a real kind\n\n### Description\n`PRECISION(X)` returns the decimal precision in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = PRECISION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram prec_and_range\n\n real(kind=4) :: x(2)\n\n complex(kind=8) :: y\n\n\n print *, precision(x), range(x)\n\n print *, precision(y), range(y)\n\nend program prec_and_range\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, RANGE\n\n\n"
-}
diff --git a/doc/intrinsics/PRESENT.json b/doc/intrinsics/PRESENT.json
deleted file mode 100644
index 0c368914..00000000
--- a/doc/intrinsics/PRESENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PRESENT",
- "docstr": "`PRESENT` — Determine whether an optional dummy argument is specified\n\n### Description\nDetermines whether an optional dummy argument is present.\n\n\n\n### Syntax\n`RESULT = PRESENT(A)`\n\n\n### Arguments\n\n \n | `A` | May be of any type and may be a pointer, scalar or array\nvalue, or a dummy procedure. It shall be the name of an optional dummy argument\naccessible within the current subroutine or function.\n\n\n\n\n\n\n### Return value\nReturns either `TRUE` if the optional argument `A` is present, or\n`FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_present\n\n WRITE(*,*) f(), f(42) ! \"F T\"\n\nCONTAINS\n\n LOGICAL FUNCTION f(x)\n\n INTEGER, INTENT(IN), OPTIONAL :: x\n\n f = PRESENT(x)\n\n END FUNCTION\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/PRODUCT.json b/doc/intrinsics/PRODUCT.json
deleted file mode 100644
index 58d5e307..00000000
--- a/doc/intrinsics/PRODUCT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "PRODUCT",
- "docstr": "`PRODUCT` — Product of array elements\n\n### Description\nMultiplies the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = PRODUCT(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the product of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_product\n\n INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n print *, PRODUCT(x) ! all elements, product = 120\n\n print *, PRODUCT(x, MASK=MOD(x, 2)==1) ! odd elements, product = 15\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSUM\n"
-}
diff --git a/doc/intrinsics/RADIX.json b/doc/intrinsics/RADIX.json
deleted file mode 100644
index 09f357fe..00000000
--- a/doc/intrinsics/RADIX.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RADIX",
- "docstr": "`RADIX` — Base of a model number\n\n### Description\n`RADIX(X)` returns the base of the model representing the entity `X`.\n\n\n\n### Syntax\n`RESULT = RADIX(X)`\n\n\n### Arguments\n\n \n\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_radix\n\n print *, \"The radix for the default integer kind is\", radix(0)\n\n print *, \"The radix for the default real kind is\", radix(0.0)\n\nend program test_radix\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND\n\n\n"
-}
diff --git a/doc/intrinsics/RAN.json b/doc/intrinsics/RAN.json
deleted file mode 100644
index 92bb59f8..00000000
--- a/doc/intrinsics/RAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RAN",
- "docstr": "`RAN` — Real pseudo-random number\n\n### Description\nFor compatibility with HP FORTRAN 77/iX, the `RAN` intrinsic is\nprovided as an alias for `RAND`. See RAND for complete\ndocumentation.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nRAND, RANDOM_NUMBER\n"
-}
diff --git a/doc/intrinsics/RAND.json b/doc/intrinsics/RAND.json
deleted file mode 100644
index 430dd2af..00000000
--- a/doc/intrinsics/RAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RAND",
- "docstr": "`RAND` — Real pseudo-random number\n\n### Description\n`RAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and 1. If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = RAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `REAL` type and the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_rand\n\n integer,parameter :: seed = 86456\n\n\n call srand(seed)\n\n print *, rand(), rand(), rand(), rand()\n\n print *, rand(seed), rand(), rand(), rand()\n\nend program test_rand\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nSRAND, RANDOM_NUMBER\n\n "
-}
diff --git a/doc/intrinsics/RANDOM_INIT.json b/doc/intrinsics/RANDOM_INIT.json
deleted file mode 100644
index 9e4a0346..00000000
--- a/doc/intrinsics/RANDOM_INIT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RANDOM_INIT",
- "docstr": "`RANDOM_INIT` — Initialize a pseudo-random number generator\n\n### Description\nInitializes the state of the pseudorandom number generator used by RANDOM_NUMBER.\n### Standard\nFortran 2018\n### Class\nSubroutine\n### Syntax\nCALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)\n### Arguments\n- REPEATABLE: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is the same each time RANDOM_INIT is called from the same image. The term “same image” means a single instance of program execution. The sequence of random numbers is different for repeated execution of the program. If it is .false., the seed is set to a processor-dependent value.\n- IMAGE_DISTINCT: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is distinct from th seed set by a call to RANDOM_INIT in another image. If it is .false., the seed is set value that does depend which image called RANDOM_INIT.\n"
-}
diff --git a/doc/intrinsics/RANDOM_NUMBER.json b/doc/intrinsics/RANDOM_NUMBER.json
deleted file mode 100644
index bf60aba0..00000000
--- a/doc/intrinsics/RANDOM_NUMBER.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RANDOM_NUMBER",
- "docstr": "`RANDOM_NUMBER` — Pseudo-random number\n\n### Description\nReturns a single pseudorandom number or an array of pseudorandom numbers\nfrom the uniform distribution over the range 0 \\leq x < 1.\n\n \nThe runtime-library implements George Marsaglia's KISS (Keep It Simple\nStupid) random number generator (RNG). This RNG combines:\n \n\n- The congruential generator x(n) = 69069 \\cdot x(n-1) + 1327217885\nwith a period of 2^32,\n
- A 3-shift shift-register generator with a period of 2^32 - 1,\n
- Two 16-bit multiply-with-carry generators with a period of\n597273182964842497 > 2^59.\n
\nThe overall period exceeds 2^123.\n\n \nPlease note, this RNG is thread safe if used within OpenMP directives,\ni.e., its state will be consistent while called from multiple threads. \nHowever, the KISS generator does not create random numbers in parallel\nfrom multiple sources, but in sequence from a single source. If an\nOpenMP-enabled application heavily relies on random numbers, one should\nconsider employing a dedicated parallel random number generator instead.\n\n\n\n\n### Syntax\n`RANDOM_NUMBER(HARVEST)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_random_number\n\n REAL :: r(5,5)\n\n CALL init_random_seed() ! see example of RANDOM_SEED\n\n CALL RANDOM_NUMBER(r)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_SEED\n"
-}
diff --git a/doc/intrinsics/RANDOM_SEED.json b/doc/intrinsics/RANDOM_SEED.json
deleted file mode 100644
index 9f77f4a3..00000000
--- a/doc/intrinsics/RANDOM_SEED.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RANDOM_SEED",
- "docstr": "`RANDOM_SEED` — Initialize a pseudo-random number sequence\n\n### Description\nRestarts or queries the state of the pseudorandom number generator used by\n`RANDOM_NUMBER`.\n\n \nIf `RANDOM_SEED` is called without arguments, it is initialized\nto a default state. The example below shows how to initialize the\nrandom seed with a varying seed in order to ensure a different random\nnumber sequence for each invocation of the program. Note that setting\nany of the seed values to zero should be avoided as it can result in\npoor quality random numbers being generated.\n\n\n\n\n### Syntax\n`CALL RANDOM_SEED([SIZE, PUT, GET])`\n\n\n### Arguments\n\n \n | `SIZE` | (Optional) Shall be a scalar and of type default\n`INTEGER`, with `INTENT(OUT)`. It specifies the minimum size\nof the arrays used with the `PUT` and `GET` arguments. \n\n | `PUT` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(IN)` and the size of\nthe array must be larger than or equal to the number returned by the\n`SIZE` argument. \n\n | `GET` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(OUT)` and the size\nof the array must be larger than or equal to the number returned by\nthe `SIZE` argument.\n\n\n\n\n\n\n### Example\n```\n\n\nsubroutine init_random_seed()\n\n use iso_fortran_env, only: int64\n\n implicit none\n\n integer, allocatable :: seed(:)\n\n integer :: i, n, un, istat, dt(8), pid\n\n integer(int64) :: t\n\n\n call random_seed(size = n)\n\n allocate(seed(n))\n\n ! First try if the OS provides a random number generator\n\n open(newunit=un, file=\"/dev/urandom\", access=\"stream\", &\n\n form=\"unformatted\", action=\"read\", status=\"old\", iostat=istat)\n\n if (istat == 0) then\n\n read(un) seed\n\n close(un)\n\n else\n\n ! Fallback to XOR:ing the current time and pid. The PID is\n\n ! useful in case one launches multiple instances of the same\n\n ! program in parallel.\n\n call system_clock(t)\n\n if (t == 0) then\n\n call date_and_time(values=dt)\n\n t = (dt(1) - 1970) * 365_int64 * 24 * 60 * 60 * 1000 &\n\n + dt(2) * 31_int64 * 24 * 60 * 60 * 1000 &\n\n + dt(3) * 24_int64 * 60 * 60 * 1000 &\n\n + dt(5) * 60 * 60 * 1000 &\n\n + dt(6) * 60 * 1000 + dt(7) * 1000 &\n\n + dt(8)\n\n end if\n\n pid = getpid()\n\n t = ieor(t, int(pid, kind(t)))\n\n do i = 1, n\n\n seed(i) = lcg(t)\n\n end do\n\n end if\n\n call random_seed(put=seed)\n\ncontains\n\n ! This simple PRNG might not be good enough for real work, but is\n\n ! sufficient for seeding a better PRNG.\n\n function lcg(s)\n\n integer :: lcg\n\n integer(int64) :: s\n\n if (s == 0) then\n\n s = 104729\n\n else\n\n s = mod(s, 4294967296_int64)\n\n end if\n\n s = mod(s * 279470273_int64, 4294967291_int64)\n\n lcg = int(mod(s, int(huge(0), int64)), kind(0))\n\n end function lcg\n\nend subroutine init_random_seed\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_NUMBER\n"
-}
diff --git a/doc/intrinsics/RANGE.json b/doc/intrinsics/RANGE.json
deleted file mode 100644
index b966d1b1..00000000
--- a/doc/intrinsics/RANGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RANGE",
- "docstr": "`RANGE` — Decimal exponent range\n\n### Description\n`RANGE(X)` returns the decimal exponent range in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = RANGE(X)`\n\n\n### Arguments\n\n \n\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `PRECISION` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, PRECISION\n\n\n"
-}
diff --git a/doc/intrinsics/RANK.json b/doc/intrinsics/RANK.json
deleted file mode 100644
index aba19fff..00000000
--- a/doc/intrinsics/RANK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RANK",
- "docstr": "`RANK` — Rank of a data object\n\n### Description\n`RANK(A)` returns the rank of a scalar or array data object.\n\n\n\n### Syntax\n`RESULT = RANK(A)`\n\n\n### Arguments\n\n \n | `A` | can be of any type\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind. For arrays, their rank is returned; for scalars zero is returned.\n\n\n\n### Example\n```\n\n\nprogram test_rank\n\n integer :: a\n\n real, allocatable :: b(:,:)\n\n\n print *, rank(a), rank(b) ! Prints: 0 2\n\nend program test_rank\n\n```\n\n \n\n### Standard\nTechnical Specification (TS) 29113\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/REAL.json b/doc/intrinsics/REAL.json
deleted file mode 100644
index 5f67faac..00000000
--- a/doc/intrinsics/REAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "REAL",
- "docstr": "`REAL` — Convert to real type\n\n### Description\n`REAL(A [, KIND])` converts its argument `A` to a real type. The\n`REALPART` function is provided for compatibility with *g77*,\nand its use is strongly discouraged.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = REALPART(Z)` \n\n\n\n\n\n### Arguments\n\n \n, or\n`COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `REAL` variable or array under\nthe following rules:\n\n \n**(A)** `REAL(A)` is converted to a default real type if `A` is an\ninteger or real variable. \n\n**(B)** `REAL(A)` is converted to a real type with the kind type parameter\nof `A` if `A` is a complex variable. \n\n**(C)** `REAL(A, KIND)` is converted to a real type with kind type\nparameter `KIND` if `A` is a complex, integer, or real\nvariable. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_real\n\n complex :: x = (1.0, 2.0)\n\n print *, real(x), real(x,8), realpart(x)\n\nend program test_real\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `FLOAT(A)` | `INTEGER(4)` | `REAL(4)` | Fortran 77 and later\n\n | `DFLOAT(A)` | `INTEGER(4)` | `REAL(8)` | GNU extension\n\n | `SNGL(A)` | `INTEGER(8)` | `REAL(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDBLE\n\n "
-}
diff --git a/doc/intrinsics/RENAME.json b/doc/intrinsics/RENAME.json
deleted file mode 100644
index 7084f1da..00000000
--- a/doc/intrinsics/RENAME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RENAME",
- "docstr": "`RENAME` — Rename a file\n\n### Description\nRenames a file from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`rename(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = RENAME(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK\n\n "
-}
diff --git a/doc/intrinsics/REPEAT.json b/doc/intrinsics/REPEAT.json
deleted file mode 100644
index 07f6291f..00000000
--- a/doc/intrinsics/REPEAT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "REPEAT",
- "docstr": "`REPEAT` — Repeated string concatenation\n\n### Description\nConcatenates `NCOPIES` copies of a string.\n\n\n\n### Syntax\n`RESULT = REPEAT(STRING, NCOPIES)`\n\n\n### Arguments\n\n \n. \n\n | `NCOPIES` | Shall be scalar and of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nA new scalar of type `CHARACTER` built up from `NCOPIES` copies\nof `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_repeat\n\n write(*,*) repeat(\"x\", 5) ! \"xxxxx\"\n\nend program\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/RESHAPE.json b/doc/intrinsics/RESHAPE.json
deleted file mode 100644
index 6b217cd6..00000000
--- a/doc/intrinsics/RESHAPE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RESHAPE",
- "docstr": "`RESHAPE` — Function to reshape an array\n\n### Description\nReshapes `SOURCE` to correspond to `SHAPE`. If necessary,\nthe new array may be padded with elements from `PAD` or permuted\nas defined by `ORDER`.\n\n\n\n### Syntax\n`RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array of any type. \n\n | `SHAPE` | Shall be of type `INTEGER` and an\narray of rank one. Its values must be positive or zero. \n\n | `PAD` | (Optional) shall be an array of the same\ntype as `SOURCE`. \n\n | `ORDER` | (Optional) shall be of type `INTEGER`and an array of the same shape as `SHAPE`. Its values shall\nbe a permutation of the numbers from 1 to n, where n is the size of\n`SHAPE`. If `ORDER` is absent, the natural ordering shall\nbe assumed.\n\n\n\n\n\n\n### Return value\nThe result is an array of shape `SHAPE` with the same type as\n`SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_reshape\n\n INTEGER, DIMENSION(4) :: x\n\n WRITE(*,*) SHAPE(x) ! prints \"4\"\n\n WRITE(*,*) SHAPE(RESHAPE(x, (/2, 2/))) ! prints \"2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSHAPE\n"
-}
diff --git a/doc/intrinsics/RRSPACING.json b/doc/intrinsics/RRSPACING.json
deleted file mode 100644
index e90a2d90..00000000
--- a/doc/intrinsics/RRSPACING.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RRSPACING",
- "docstr": "`RRSPACING` — Reciprocal of the relative spacing\n\n### Description\n`RRSPACING(X)` returns the reciprocal of the relative spacing of\nmodel numbers near `X`.\n\n\n\n### Syntax\n`RESULT = RRSPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe value returned is equal to\n`ABS(FRACTION(X)) * FLOAT(RADIX(X))**DIGITS(X)`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSPACING\n"
-}
diff --git a/doc/intrinsics/RSHIFT.json b/doc/intrinsics/RSHIFT.json
deleted file mode 100644
index 3674d067..00000000
--- a/doc/intrinsics/RSHIFT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "RSHIFT",
- "docstr": "`RSHIFT` — Right shift bits\n\n### Description\n`RSHIFT` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n \nThis function has been superseded by the `SHIFTA` intrinsic, which\nis standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = RSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, LSHIFT, SHIFTA, SHIFTR,\nSHIFTL\n\n "
-}
diff --git a/doc/intrinsics/SAME_TYPE_AS.json b/doc/intrinsics/SAME_TYPE_AS.json
deleted file mode 100644
index 2f681dd5..00000000
--- a/doc/intrinsics/SAME_TYPE_AS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SAME_TYPE_AS",
- "docstr": "`SAME_TYPE_AS` — Query dynamic types for equality\n\n### Description\nQuery dynamic types for equality.\n\n\n\n### Syntax\n`RESULT = SAME_TYPE_AS(A, B)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `B` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and\nonly if the dynamic type of A is the same as the dynamic type of B.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nEXTENDS_TYPE_OF\n\n "
-}
diff --git a/doc/intrinsics/SCALE.json b/doc/intrinsics/SCALE.json
deleted file mode 100644
index 89893829..00000000
--- a/doc/intrinsics/SCALE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SCALE",
- "docstr": "`SCALE` — Scale a real value\n\n### Description\n`SCALE(X,I)` returns `X * RADIX(X)**I`.\n\n\n\n### Syntax\n`RESULT = SCALE(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | The type of the argument shall be a `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIts value is `X * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nprogram test_scale\n\n real :: x = 178.1387e-4\n\n integer :: i = 5\n\n print *, scale(x,i), x*radix(x)**i\n\nend program test_scale\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/SCAN.json b/doc/intrinsics/SCAN.json
deleted file mode 100644
index f3bf2ae3..00000000
--- a/doc/intrinsics/SCAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SCAN",
- "docstr": "`SCAN` — Scan a string for the presence of a set of characters\n\n### Description\nScans a `STRING` for any of the characters in a `SET`\nof characters.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nin `SET`. If `BACK` equals `TRUE`, the rightmost position\nis returned. If no character of `SET` is found in `STRING`, the\nresult is zero.\n\n\n\n\n### Syntax\n`RESULT = SCAN(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_scan\n\n WRITE(*,*) SCAN(\"FORTRAN\", \"AO\") ! 2, found 'O'\n\n WRITE(*,*) SCAN(\"FORTRAN\", \"AO\", .TRUE.) ! 6, found 'A'\n\n WRITE(*,*) SCAN(\"FORTRAN\", \"C++\") ! 0, found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, VERIFY\n"
-}
diff --git a/doc/intrinsics/SECNDS.json b/doc/intrinsics/SECNDS.json
deleted file mode 100644
index a4514e58..00000000
--- a/doc/intrinsics/SECNDS.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SECNDS",
- "docstr": "`SECNDS` — Time function\n\n### Description\n`SECNDS(X)` gets the time in seconds from the real-time system clock. \n`X` is a reference time, also in seconds. If this is zero, the time in\nseconds from midnight is returned. This function is non-standard and its\nuse is discouraged.\n\n\n\n### Syntax\n`RESULT = SECNDS (X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | Shall be of type `REAL(4)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_secnds\n\n integer :: i\n\n real(4) :: t1, t2\n\n print *, secnds (0.0) ! seconds since midnight\n\n t1 = secnds (0.0) ! reference time\n\n do i = 1, 10000000 ! do something\n\n end do\n\n t2 = secnds (t1) ! elapsed time\n\n print *, \"Something took \", t2, \" seconds.\"\n\nend program test_secnds\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
-}
diff --git a/doc/intrinsics/SECOND.json b/doc/intrinsics/SECOND.json
deleted file mode 100644
index 74009dfe..00000000
--- a/doc/intrinsics/SECOND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SECOND",
- "docstr": "`SECOND` — CPU time function\n\n### Description\nReturns a `REAL(4)` value representing the elapsed CPU time in\nseconds. This provides the same functionality as the standard\n`CPU_TIME` intrinsic, and is only included for backwards\ncompatibility.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `TIME = SECOND()` \n\n\n\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nIn either syntax, `TIME` is set to the process's current runtime in\nseconds.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
-}
diff --git a/doc/intrinsics/SELECTED_CHAR_KIND.json b/doc/intrinsics/SELECTED_CHAR_KIND.json
deleted file mode 100644
index d6e47064..00000000
--- a/doc/intrinsics/SELECTED_CHAR_KIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SELECTED_CHAR_KIND",
- "docstr": "`SELECTED_CHAR_KIND` — Choose character kind\n\n### Description\n\n`SELECTED_CHAR_KIND(NAME)` returns the kind value for the character\nset named `NAME`, if a character set with such a name is supported,\nor -1 otherwise. Currently, supported character sets include\n“ASCII” and “DEFAULT”, which are equivalent, and “ISO_10646”\n(Universal Character Set, UCS-4) which is commonly known as Unicode.\n\n\n\n### Syntax\n`RESULT = SELECTED_CHAR_KIND(NAME)`\n\n\n### Arguments\n\n \n | `NAME` | Shall be a scalar and of the default character type.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram character_kind\n\n use iso_fortran_env\n\n implicit none\n\n integer, parameter :: ascii = selected_char_kind (\"ascii\")\n\n integer, parameter :: ucs4 = selected_char_kind ('ISO_10646')\n\n\n character(kind=ascii, len=26) :: alphabet\n\n character(kind=ucs4, len=30) :: hello_world\n\n\n alphabet = ascii_\"abcdefghijklmnopqrstuvwxyz\"\n\n hello_world = ucs4_'Hello World and Ni Hao -- ' &\n\n // char (int (z'4F60'), ucs4) &\n\n // char (int (z'597D'), ucs4)\n\n\n write (*,*) alphabet\n\n\n open (output_unit, encoding='UTF-8')\n\n write (*,*) trim (hello_world)\n\nend program character_kind\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/SELECTED_INT_KIND.json b/doc/intrinsics/SELECTED_INT_KIND.json
deleted file mode 100644
index a312fbf1..00000000
--- a/doc/intrinsics/SELECTED_INT_KIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SELECTED_INT_KIND",
- "docstr": "`SELECTED_INT_KIND` — Choose integer kind\n\n### Description\n`SELECTED_INT_KIND(R)` return the kind value of the smallest integer\ntype that can represent all values ranging from -10^R (exclusive)\nto 10^R (exclusive). If there is no integer kind that accommodates\nthis range, `SELECTED_INT_KIND` returns -1.\n\n\n\n### Syntax\n`RESULT = SELECTED_INT_KIND(R)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram large_integers\n\n integer,parameter :: k5 = selected_int_kind(5)\n\n integer,parameter :: k15 = selected_int_kind(15)\n\n integer(kind=k5) :: i5\n\n integer(kind=k15) :: i15\n\n\n print *, huge(i5), huge(i15)\n\n\n ! The following inequalities are always true\n\n print *, huge(i5) >= 10_k5**5-1\n\n print *, huge(i15) >= 10_k15**15-1\n\nend program large_integers\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/SELECTED_REAL_KIND.json b/doc/intrinsics/SELECTED_REAL_KIND.json
deleted file mode 100644
index 69173613..00000000
--- a/doc/intrinsics/SELECTED_REAL_KIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SELECTED_REAL_KIND",
- "docstr": "`SELECTED_REAL_KIND` — Choose real kind\n\n### Description\n`SELECTED_REAL_KIND(P,R)` returns the kind value of a real data type\nwith decimal precision of at least `P` digits, exponent range of\nat least `R`, and with a radix of `RADIX`.\n\n\n\n### Syntax\n`RESULT = SELECTED_REAL_KIND([P, R, RADIX])`\n\n\n### Arguments\n\n \n. \n\n | `R` | (Optional) shall be a scalar and of type `INTEGER`. \n\n | `RADIX` | (Optional) shall be a scalar and of type `INTEGER`.\n\n\nBefore Fortran 2008, at least one of the arguments `R` or `P` shall\nbe present; since Fortran 2008, they are assumed to be zero if absent.\n\n\n\n\n### Return value\n\n`SELECTED_REAL_KIND` returns the value of the kind type parameter of\na real data type with decimal precision of at least `P` digits, a\ndecimal exponent range of at least `R`, and with the requested\n`RADIX`. If the `RADIX` parameter is absent, real kinds with\nany radix can be returned. If more than one real data type meet the\ncriteria, the kind of the data type with the smallest decimal precision\nis returned. If no real data type matches the criteria, the result is\n \n**-1 if the processor does not support a real data type with a** precision greater than or equal to `P`, but the `R` and\n`RADIX` requirements can be fulfilled\n\n**-2 if the processor does not support a real type with an exponent** range greater than or equal to `R`, but `P` and `RADIX`are fulfillable\n\n**-3 if `RADIX` but not `P` and `R` requirements** are fulfillable\n\n**-4 if `RADIX` and either `P` or `R` requirements** are fulfillable\n\n- -5 if there is no real type with the given `RADIX`
\n\n\n\n### Example\n```\n\n\nprogram real_kinds\n\n integer,parameter :: p6 = selected_real_kind(6)\n\n integer,parameter :: p10r100 = selected_real_kind(10,100)\n\n integer,parameter :: r400 = selected_real_kind(r=400)\n\n real(kind=p6) :: x\n\n real(kind=p10r100) :: y\n\n real(kind=r400) :: z\n\n\n print *, precision(x), range(x)\n\n print *, precision(y), range(y)\n\n print *, precision(z), range(z)\n\nend program real_kinds\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `RADIX` Fortran 2008 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRECISION, RANGE, RADIX\n\n\n"
-}
diff --git a/doc/intrinsics/SET_EXPONENT.json b/doc/intrinsics/SET_EXPONENT.json
deleted file mode 100644
index fef7bd7e..00000000
--- a/doc/intrinsics/SET_EXPONENT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SET_EXPONENT",
- "docstr": "`SET_EXPONENT` — Set the exponent of the model\n\n### Description\n`SET_EXPONENT(X, I)` returns the real number whose fractional part\nis that that of `X` and whose exponent part is `I`.\n\n\n\n### Syntax\n`RESULT = SET_EXPONENT(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | Shall be of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real number whose fractional part\nis that that of `X` and whose exponent part if `I` is returned;\nit is `FRACTION(X) * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_setexp\n\n REAL :: x = 178.1387e-4\n\n INTEGER :: i = 17\n\n PRINT *, SET_EXPONENT(x, i), FRACTION(x) * RADIX(x)**i\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/SHAPE.json b/doc/intrinsics/SHAPE.json
deleted file mode 100644
index 8be65f82..00000000
--- a/doc/intrinsics/SHAPE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SHAPE",
- "docstr": "`SHAPE` — Determine the shape of an array\n\n### Description\nDetermines the shape of an array.\n\n\n\n### Syntax\n`RESULT = SHAPE(SOURCE [, KIND])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array or scalar of any type. \nIf `SOURCE` is a pointer it must be associated and allocatable\narrays must be allocated. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nAn `INTEGER` array of rank one with as many elements as `SOURCE`\nhas dimensions. The elements of the resulting array correspond to the extend\nof `SOURCE` along the respective dimensions. If `SOURCE` is a scalar,\nthe result is the rank one array of size zero. If `KIND` is absent, the\nreturn value has the default integer kind otherwise the specified kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_shape\n\n INTEGER, DIMENSION(-1:1, -1:2) :: A\n\n WRITE(*,*) SHAPE(A) ! (/ 3, 4 /)\n\n WRITE(*,*) SIZE(SHAPE(42)) ! (/ /)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nRESHAPE, SIZE\n"
-}
diff --git a/doc/intrinsics/SHIFTA.json b/doc/intrinsics/SHIFTA.json
deleted file mode 100644
index 6a5acd1a..00000000
--- a/doc/intrinsics/SHIFTA.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SHIFTA",
- "docstr": "`SHIFTA` — Right shift with fill\n\n### Description\n`SHIFTA` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n\n\n### Syntax\n`RESULT = SHIFTA(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTL, SHIFTR\n"
-}
diff --git a/doc/intrinsics/SHIFTL.json b/doc/intrinsics/SHIFTL.json
deleted file mode 100644
index de0e042b..00000000
--- a/doc/intrinsics/SHIFTL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SHIFTL",
- "docstr": "`SHIFTL` — Left shift\n\n### Description\n`SHIFTL` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost, and bits shifted in from\nthe right end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTL(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTR\n"
-}
diff --git a/doc/intrinsics/SHIFTR.json b/doc/intrinsics/SHIFTR.json
deleted file mode 100644
index 055ada6b..00000000
--- a/doc/intrinsics/SHIFTR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SHIFTR",
- "docstr": "`SHIFTR` — Right shift\n\n### Description\n`SHIFTR` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost, and bits shifted in from\nthe left end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTR(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTL\n"
-}
diff --git a/doc/intrinsics/SIGN.json b/doc/intrinsics/SIGN.json
deleted file mode 100644
index 7bf01fd4..00000000
--- a/doc/intrinsics/SIGN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIGN",
- "docstr": "`SIGN` — Sign copying function\n\n### Description\n`SIGN(A,B)` returns the value of `A` with the sign of `B`.\n\n\n\n### Syntax\n`RESULT = SIGN(A, B)`\n\n\n### Arguments\n\n \n\n\n | `B` | Shall be of the same type and kind as `A`\n\n\n\n\n\n\n### Return value\nThe kind of the return value is that of `A` and `B`. \nIf B\\ge 0 then the result is `ABS(A)`, else\nit is `-ABS(A)`.\n\n\n\n### Example\n```\n\n\nprogram test_sign\n\n print *, sign(-12,1)\n\n print *, sign(-12,0)\n\n print *, sign(-12,-1)\n\n\n print *, sign(-12.,1.)\n\n print *, sign(-12.,0.)\n\n print *, sign(-12.,-1.)\n\nend program test_sign\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `SIGN(A,B)` | `REAL(4) A, B` | `REAL(4)` | f77, gnu\n\n | `ISIGN(A,B)` | `INTEGER(4) A, B` | `INTEGER(4)` | f77, gnu\n\n | `DSIGN(A,B)` | `REAL(8) A, B` | `REAL(8)` | f77, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/SIGNAL.json b/doc/intrinsics/SIGNAL.json
deleted file mode 100644
index ac933da9..00000000
--- a/doc/intrinsics/SIGNAL.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIGNAL",
- "docstr": "`SIGNAL` — Signal handling subroutine (or function)\n\n### Description\n`SIGNAL(NUMBER, HANDLER [, STATUS])` causes external subroutine\n`HANDLER` to be executed with a single integer argument when signal\n`NUMBER` occurs. If `HANDLER` is an integer, it can be used to\nturn off handling of signal `NUMBER` or revert to its default\naction. See `signal(2)`.\n\n \nIf `SIGNAL` is called as a subroutine and the `STATUS` argument\nis supplied, it is set to the value returned by `signal(2)`.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SIGNAL(NUMBER, HANDLER)` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. \n`INTEGER`. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\ninteger. It has `INTENT(OUT)`.\n\n\n\n\n\n\n\n### Return value\nThe `SIGNAL` function returns the value returned by `signal(2)`.\n\n\n\n### Example\n```\n\n\nprogram test_signal\n\n intrinsic signal\n\n external handler_print\n\n\n call signal (12, handler_print)\n\n call signal (10, 1)\n\n\n call sleep (30)\n\nend program test_signal\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
-}
diff --git a/doc/intrinsics/SIN.json b/doc/intrinsics/SIN.json
deleted file mode 100644
index 602e20cd..00000000
--- a/doc/intrinsics/SIN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIN",
- "docstr": "`SIN` — Sine function\n\n### Description\n`SIN(X)` computes the sine of `X`.\n\n\n\n### Syntax\n`RESULT = SIN(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sin\n\n real :: x = 0.0\n\n x = sin(x)\n\nend program test_sin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SIN(X)` | `REAL(4) X` | `REAL(4)` | f77, gnu\n\n | `DSIN(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CSIN(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASIN\n"
-}
diff --git a/doc/intrinsics/SIND.json b/doc/intrinsics/SIND.json
deleted file mode 100644
index f89745a0..00000000
--- a/doc/intrinsics/SIND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIND",
- "docstr": "`SIND` — Sine function, degrees\n\n### Description\nIND(X) computes the sine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = SIND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n ### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
-}
diff --git a/doc/intrinsics/SINH.json b/doc/intrinsics/SINH.json
deleted file mode 100644
index 277dd1ba..00000000
--- a/doc/intrinsics/SINH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SINH",
- "docstr": "`SINH` — Hyperbolic sine function\n\n### Description\n`SINH(X)` computes the hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = SINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sinh\n\n real(8) :: x = - 1.0_8\n\n x = sinh(x)\n\nend program test_sinh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SINH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSINH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 95 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASINH\n"
-}
diff --git a/doc/intrinsics/SIZE.json b/doc/intrinsics/SIZE.json
deleted file mode 100644
index 42ce4aa2..00000000
--- a/doc/intrinsics/SIZE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIZE",
- "docstr": "`SIZE` — Determine the size of an array\n\n### Description\nDetermine the extent of `ARRAY` along a specified dimension `DIM`,\nor the total number of elements in `ARRAY` if `DIM` is absent.\n\n\n\n### Syntax\n`RESULT = SIZE(ARRAY[, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. If `ARRAY` is\na pointer it must be associated and allocatable arrays must be allocated. \n\n | `DIM` | (Optional) shall be a scalar of type `INTEGER`and its value shall be in the range from 1 to n, where n equals the rank\nof `ARRAY`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_size\n\n WRITE(*,*) SIZE((/ 1, 2 /)) ! 2\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSHAPE, RESHAPE\n"
-}
diff --git a/doc/intrinsics/SIZEOF.json b/doc/intrinsics/SIZEOF.json
deleted file mode 100644
index f9557ab5..00000000
--- a/doc/intrinsics/SIZEOF.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SIZEOF",
- "docstr": "`SIZEOF` — Size in bytes of an expression\n\n### Description\n`SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be of any type, rank or shape.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components. If the argument is\npolymorphic, the size according to the dynamic type is returned. The argument\nmay not be a procedure or procedure pointer. Note that the code assumes for\narrays that those are contiguous; for contiguous arrays, it returns the\nstorage or an array element multiplied by the size of the array.\n\n\n\n### Example\n```\n\n\ninteger :: i\n\nreal :: r, s(5)\n\nprint *, (sizeof(s)/sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_SIZEOF, STORAGE_SIZE\n"
-}
diff --git a/doc/intrinsics/SLEEP.json b/doc/intrinsics/SLEEP.json
deleted file mode 100644
index 1e510692..00000000
--- a/doc/intrinsics/SLEEP.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SLEEP",
- "docstr": "`SLEEP` — Sleep for the specified number of seconds\n\n### Description\nCalling this subroutine causes the process to pause for `SECONDS` seconds.\n\n\n\n### Syntax\n`CALL SLEEP(SECONDS)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_sleep\n\n call sleep(5)\n\nend\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
-}
diff --git a/doc/intrinsics/SPACING.json b/doc/intrinsics/SPACING.json
deleted file mode 100644
index 84fbec19..00000000
--- a/doc/intrinsics/SPACING.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SPACING",
- "docstr": "`SPACING` — Smallest distance between two numbers of a given type\n\n### Description\nDetermines the distance between the argument `X` and the nearest\nadjacent number of the same type.\n\n\n\n### Syntax\n`RESULT = SPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as the input argument `X`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spacing\n\n INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)\n\n INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)\n\n\n WRITE(*,*) spacing(1.0_SGL) ! \"1.1920929E-07\" on i686\n\n WRITE(*,*) spacing(1.0_DBL) ! \"2.220446049250313E-016\" on i686\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nRRSPACING\n"
-}
diff --git a/doc/intrinsics/SPREAD.json b/doc/intrinsics/SPREAD.json
deleted file mode 100644
index eb49b232..00000000
--- a/doc/intrinsics/SPREAD.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SPREAD",
- "docstr": "`SPREAD` — Add a dimension to an array\n\n### Description\nReplicates a `SOURCE` array `NCOPIES` times along a specified\ndimension `DIM`.\n\n\n\n### Syntax\n`RESULT = SPREAD(SOURCE, DIM, NCOPIES)`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type and\na rank less than seven. \n\n | `DIM` | Shall be a scalar of type `INTEGER` with a\nvalue in the range from 1 to n+1, where n equals the rank of `SOURCE`. \n\n | `NCOPIES` | Shall be a scalar of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result is an array of the same type as `SOURCE` and has rank n+1\nwhere n equals the rank of `SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spread\n\n INTEGER :: a = 1, b(2) = (/ 1, 2 /)\n\n WRITE(*,*) SPREAD(A, 1, 2) ! \"1 1\"\n\n WRITE(*,*) SPREAD(B, 1, 2) ! \"1 1 2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n"
-}
diff --git a/doc/intrinsics/SQRT.json b/doc/intrinsics/SQRT.json
deleted file mode 100644
index a9ea3159..00000000
--- a/doc/intrinsics/SQRT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SQRT",
- "docstr": "`SQRT` — Square-root function\n\n### Description\n`SQRT(X)` computes the square root of `X`.\n\n\n\n### Syntax\n`RESULT = SQRT(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sqrt\n\n real(8) :: x = 2.0_8\n\n complex :: z = (1.0, 2.0)\n\n x = sqrt(x)\n\n z = sqrt(z)\n\nend program test_sqrt\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SQRT(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSQRT(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n | `CSQRT(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 95 and later\n\n | `ZSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
-}
diff --git a/doc/intrinsics/SRAND.json b/doc/intrinsics/SRAND.json
deleted file mode 100644
index d2c732c2..00000000
--- a/doc/intrinsics/SRAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SRAND",
- "docstr": "`SRAND` — Reinitialize the random number generator\n\n### Description\n`SRAND` reinitializes the pseudo-random number generator\ncalled by `RAND` and `IRAND`. The new seed used by the\ngenerator is specified by the required argument `SEED`.\n\n\n\n### Syntax\n`CALL SRAND(SEED)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\nSee `RAND` and `IRAND` for examples.\n\n\n\n### Notes\nThe Fortran standard specifies the intrinsic subroutines\n`RANDOM_SEED` to initialize the pseudo-random number\ngenerator and `RANDOM_NUMBER` to generate pseudo-random numbers. \nThese subroutines should be used in new codes.\n\n \nPlease note that in GNU Fortran, these two sets of intrinsics (`RAND`,\n`IRAND` and `SRAND` on the one hand, `RANDOM_NUMBER` and\n`RANDOM_SEED` on the other hand) access two independent\npseudo-random number generators.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRAND, RANDOM_SEED, RANDOM_NUMBER\n\n "
-}
diff --git a/doc/intrinsics/STAT.json b/doc/intrinsics/STAT.json
deleted file mode 100644
index c48521fd..00000000
--- a/doc/intrinsics/STAT.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "STAT",
- "docstr": "`STAT` — Get file status\n\n### Description\nThis function returns information about a file. No permissions are required on\nthe file itself, but execute (search) permission is required on all of the\ndirectories in path that lead to the file.\n\n \nThe elements that are obtained and stored in the array `VALUES`:\n \n\n | Device ID\n\n | `VALUES(2)` | Inode number\n\n | `VALUES(3)` | File mode\n\n | `VALUES(4)` | Number of links\n\n | `VALUES(5)` | Owner's uid\n\n | `VALUES(6)` | Owner's gid\n\n | `VALUES(7)` | ID of device containing directory entry for file (0 if not available)\n\n | `VALUES(8)` | File size (bytes)\n\n | `VALUES(9)` | Last access time\n\n | `VALUES(10)` | Last modification time\n\n | `VALUES(11)` | Last file status change time\n\n | `VALUES(12)` | Preferred I/O block size (-1 if not available)\n\n | `VALUES(13)` | Number of blocks allocated (-1 if not available)\n\n\n\n \n\nNot all these elements are relevant on all systems. \nIf an element is not relevant, it is returned as 0.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = STAT(NAME, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n, of the\ndefault kind and a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_stat\n\n INTEGER, DIMENSION(13) :: buff\n\n INTEGER :: status\n\n\n CALL STAT(\"/etc/passwd\", buff, status)\n\n\n IF (status == 0) THEN\n\n WRITE (*, FMT=\"('Device ID:', T30, I19)\") buff(1)\n\n WRITE (*, FMT=\"('Inode number:', T30, I19)\") buff(2)\n\n WRITE (*, FMT=\"('File mode (octal):', T30, O19)\") buff(3)\n\n WRITE (*, FMT=\"('Number of links:', T30, I19)\") buff(4)\n\n WRITE (*, FMT=\"('Owner''s uid:', T30, I19)\") buff(5)\n\n WRITE (*, FMT=\"('Owner''s gid:', T30, I19)\") buff(6)\n\n WRITE (*, FMT=\"('Device where located:', T30, I19)\") buff(7)\n\n WRITE (*, FMT=\"('File size:', T30, I19)\") buff(8)\n\n WRITE (*, FMT=\"('Last access time:', T30, A19)\") CTIME(buff(9))\n\n WRITE (*, FMT=\"('Last modification time', T30, A19)\") CTIME(buff(10))\n\n WRITE (*, FMT=\"('Last status change time:', T30, A19)\") CTIME(buff(11))\n\n WRITE (*, FMT=\"('Preferred block size:', T30, I19)\") buff(12)\n\n WRITE (*, FMT=\"('No. of blocks allocated:', T30, I19)\") buff(13)\n\n END IF\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a link: LSTAT\n"
-}
diff --git a/doc/intrinsics/STORAGE_SIZE.json b/doc/intrinsics/STORAGE_SIZE.json
deleted file mode 100644
index b64f74ae..00000000
--- a/doc/intrinsics/STORAGE_SIZE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "STORAGE_SIZE",
- "docstr": "`STORAGE_SIZE` — Storage size in bits\n\n### Description\nReturns the storage size of argument `A` in bits. \n\n\n### Syntax\n`RESULT = STORAGE_SIZE(A [, KIND])`\n\n\n### Arguments\n\n \n | `A` | Shall be a scalar or array of any type. \n\n | `KIND` | (Optional) shall be a scalar integer constant expression.\n\n\n\n\n\n\n### Return value\nThe result is a scalar integer with the kind type parameter specified by KIND\n(or default integer type if KIND is missing). The result value is the size\nexpressed in bits for an element of an array that has the dynamic type and type\nparameters of A.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n### Class\nInquiry function\n\n\n### See also\nC_SIZEOF, SIZEOF\n"
-}
diff --git a/doc/intrinsics/SUM.json b/doc/intrinsics/SUM.json
deleted file mode 100644
index 5a257ead..00000000
--- a/doc/intrinsics/SUM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SUM",
- "docstr": "`SUM` — Sum of array elements\n\n### Description\nAdds the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = SUM(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the sum of all elements in `ARRAY`\nis returned. Otherwise, an array of rank n-1, where n equals the rank of\n`ARRAY`, and a shape similar to that of `ARRAY` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n print *, SUM(x) ! all elements, sum = 15\n\n print *, SUM(x, MASK=MOD(x, 2)==1) ! odd elements, sum = 9\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRODUCT\n"
-}
diff --git a/doc/intrinsics/SYMLNK.json b/doc/intrinsics/SYMLNK.json
deleted file mode 100644
index 5f4073fb..00000000
--- a/doc/intrinsics/SYMLNK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SYMLNK",
- "docstr": "`SYMLNK` — Create a symbolic link\n\n### Description\nMakes a symbolic link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`symlink(2)`. If the system does not supply `symlink(2)`,\n`ENOSYS` is returned.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYMLNK(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, UNLINK\n\n "
-}
diff --git a/doc/intrinsics/SYSTEM.json b/doc/intrinsics/SYSTEM.json
deleted file mode 100644
index 71317240..00000000
--- a/doc/intrinsics/SYSTEM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SYSTEM",
- "docstr": "`SYSTEM` — Execute a shell command\n\n### Description\nPasses the command `COMMAND` to a shell (see `system(3)`). If\nargument `STATUS` is present, it contains the value returned by\n`system(3)`, which is presumably 0 if the shell command succeeded. \nNote that which shell is used to invoke the command is system-dependent\nand environment-dependent.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYSTEM(COMMAND)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nEXECUTE_COMMAND_LINE, which is part of the Fortran 2008 standard\nand should considered in new code for future portability. \n"
-}
diff --git a/doc/intrinsics/SYSTEM_CLOCK.json b/doc/intrinsics/SYSTEM_CLOCK.json
deleted file mode 100644
index 8e4f6325..00000000
--- a/doc/intrinsics/SYSTEM_CLOCK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "SYSTEM_CLOCK",
- "docstr": "`SYSTEM_CLOCK` — Time function\n\n### Description\nDetermines the `COUNT` of a processor clock since an unspecified\ntime in the past modulo `COUNT_MAX`, `COUNT_RATE` determines\nthe number of clock ticks per second. If the platform supports a\nmonotonic clock, that clock is used and can, depending on the platform\nclock implementation, provide up to nanosecond resolution. If a\nmonotonic clock is not available, the implementation falls back to a\nrealtime clock.\n\n \n`COUNT_RATE` is system dependent and can vary depending on the kind of\nthe arguments. For `kind=4` arguments (and smaller integer kinds),\n`COUNT` represents milliseconds, while for `kind=8` arguments (and\nlarger integer kinds), `COUNT` typically represents micro- or\nnanoseconds depending on resolution of the underlying platform clock. \n`COUNT_MAX` usually equals `HUGE(COUNT_MAX)`. Note that the\nmillisecond resolution of the `kind=4` version implies that the\n`COUNT` will wrap around in roughly 25 days. In order to avoid issues\nwith the wrap around and for more precise timing, please use the\n`kind=8` version.\n\n \n\nIf there is no clock, or querying the clock fails, `COUNT` is set\nto `-HUGE(COUNT)`, and `COUNT_RATE` and `COUNT_MAX` are\nset to zero.\n\n \n\nWhen running on a platform using the GNU C library (glibc) version\n2.16 or older, or a derivative thereof, the high resolution monotonic\nclock is available only when linking with the `rt` library. This\ncan be done explicitly by adding the `-lrt` flag when linking the\napplication, but is also done implicitly when using OpenMP.\n\n \n\nOn the Windows platform, the version with `kind=4` arguments uses\nthe `GetTickCount` function, whereas the `kind=8` version\nuses `QueryPerformanceCounter` and\n`QueryPerformanceCounterFrequency`. For more information, and\npotential caveats, please see the platform documentation.\n\n\n\n\n### Syntax\n`CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])`\n\n\n### Arguments\n\n \n | `COUNT` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`. \n\n | `COUNT_RATE` | (Optional) shall be a scalar of type\n`INTEGER` or `REAL`, with `INTENT(OUT)`. \n\n | `COUNT_MAX` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_system_clock\n\n INTEGER :: count, count_rate, count_max\n\n CALL SYSTEM_CLOCK(count, count_rate, count_max)\n\n WRITE(*,*) count, count_rate, count_max\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nDATE_AND_TIME, CPU_TIME\n"
-}
diff --git a/doc/intrinsics/TAN.json b/doc/intrinsics/TAN.json
deleted file mode 100644
index f6e3734a..00000000
--- a/doc/intrinsics/TAN.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TAN",
- "docstr": "`TAN` — Tangent function\n\n### Description\n`TAN(X)` computes the tangent of `X`.\n\n\n\n### Syntax\n`RESULT = TAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_tan\n\n real(8) :: x = 0.165_8\n\n x = tan(x)\n\nend program test_tan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATAN\n"
-}
diff --git a/doc/intrinsics/TAND.json b/doc/intrinsics/TAND.json
deleted file mode 100644
index db31ce78..00000000
--- a/doc/intrinsics/TAND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TAND",
- "docstr": "`TAND` — Tangent function, degrees\n\n### Description\nTAND(X) computes the tangent of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = TAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
-}
diff --git a/doc/intrinsics/TANH.json b/doc/intrinsics/TANH.json
deleted file mode 100644
index 5f6683d2..00000000
--- a/doc/intrinsics/TANH.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TANH",
- "docstr": "`TANH` — Hyperbolic tangent function\n\n### Description\n`TANH(X)` computes the hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`X = TANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value lies in the range\n - 1 \\leq tanh(x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_tanh\n\n real(8) :: x = 2.1_8\n\n x = tanh(x)\n\nend program test_tanh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TANH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTANH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATANH\n"
-}
diff --git a/doc/intrinsics/THIS_IMAGE.json b/doc/intrinsics/THIS_IMAGE.json
deleted file mode 100644
index a14e4d05..00000000
--- a/doc/intrinsics/THIS_IMAGE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "THIS_IMAGE",
- "docstr": "`THIS_IMAGE` — Function that returns the cosubscript index of this image\n\n### Description\nReturns the cosubscript for this image.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = THIS_IMAGE(DISTANCE)` \n | `RESULT = THIS_IMAGE(COARRAY [, DIM])` \n\n\n\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n(not permitted together with `COARRAY`). \n\n | `COARRAY` | Coarray of any type (optional; if `DIM`\npresent, required). \n\n | `DIM` | default integer scalar (optional). If present,\n`DIM` shall be between one and the corank of `COARRAY`.\n\n\n\n\n\n\n### Return value\nDefault integer. If `COARRAY` is not present, it is scalar; if\n`DISTANCE` is not present or has value 0, its value is the image index on\nthe invoking image for the current team, for values smaller or equal\ndistance to the initial team, it returns the image index on the ancestor team\nwhich has a distance of `DISTANCE` from the invoking team. If\n`DISTANCE` is larger than the distance to the initial team, the image\nindex of the initial team is returned. Otherwise when the `COARRAY` is\npresent, if `DIM` is not present, a rank-1 array with corank elements is\nreturned, containing the cosubscripts for `COARRAY` specifying the invoking\nimage. If `DIM` is present, a scalar is returned, with the value of\nthe `DIM` element of `THIS_IMAGE(COARRAY)`.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n DO i = 1, NUM_IMAGES()\n\n WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n END DO\n\nEND IF\n\n\n! Check whether the current image is the initial image\n\nIF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())\n\n error stop \"something is rotten here\"\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nNUM_IMAGES, IMAGE_INDEX\n"
-}
diff --git a/doc/intrinsics/TIME.json b/doc/intrinsics/TIME.json
deleted file mode 100644
index b4f37201..00000000
--- a/doc/intrinsics/TIME.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TIME",
- "docstr": "`TIME` — Time function\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n \n\nSee TIME8, for information on a similar intrinsic that might be\nportable to more GNU Fortran implementations, though to fewer Fortran\ncompilers.\n\n\n\n\n### Syntax\n`RESULT = TIME()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n "
-}
diff --git a/doc/intrinsics/TIME8.json b/doc/intrinsics/TIME8.json
deleted file mode 100644
index b59512ff..00000000
--- a/doc/intrinsics/TIME8.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TIME8",
- "docstr": "`TIME8` — Time function (64-bit)\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `time(3)`. On a system with a 32-bit\n`time(3)`, `TIME8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = TIME8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK8, TIME\n\n "
-}
diff --git a/doc/intrinsics/TINY.json b/doc/intrinsics/TINY.json
deleted file mode 100644
index 3b8bd997..00000000
--- a/doc/intrinsics/TINY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TINY",
- "docstr": "`TINY` — Smallest positive number of a real kind\n\n### Description\n`TINY(X)` returns the smallest positive (non zero) number\nin the model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = TINY(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\nSee `HUGE` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
-}
diff --git a/doc/intrinsics/TRAILZ.json b/doc/intrinsics/TRAILZ.json
deleted file mode 100644
index cac14d38..00000000
--- a/doc/intrinsics/TRAILZ.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TRAILZ",
- "docstr": "`TRAILZ` — Number of trailing zero bits of an integer\n\n### Description\n`TRAILZ` returns the number of trailing zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = TRAILZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trailz\n\n WRITE (*,*) TRAILZ(8) ! prints 3\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, LEADZ, POPPAR, POPCNT\n"
-}
diff --git a/doc/intrinsics/TRANSFER.json b/doc/intrinsics/TRANSFER.json
deleted file mode 100644
index 78e603d9..00000000
--- a/doc/intrinsics/TRANSFER.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TRANSFER",
- "docstr": "`TRANSFER` — Transfer bit patterns\n\n### Description\nInterprets the bitwise representation of `SOURCE` in memory as if it\nis the representation of a variable or array of the same type and type\nparameters as `MOLD`.\n\n \nThis is approximately equivalent to the C concept of casting one\ntype to another.\n\n\n\n\n### Syntax\n`RESULT = TRANSFER(SOURCE, MOLD[, SIZE])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type. \n\n | `MOLD` | Shall be a scalar or an array of any type. \n\n | `SIZE` | (Optional) shall be a scalar of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MOLD`, with the bit level\nrepresentation of `SOURCE`. If `SIZE` is present, the result is\na one-dimensional array of length `SIZE`. If `SIZE` is absent\nbut `MOLD` is an array (of any size or shape), the result is a one-\ndimensional array of the minimum length needed to contain the entirety\nof the bitwise representation of `SOURCE`. If `SIZE` is absent\nand `MOLD` is a scalar, the result is a scalar.\n\n \nIf the bitwise representation of the result is longer than that of\n`SOURCE`, then the leading bits of the result correspond to those of\n`SOURCE` and any trailing bits are filled arbitrarily.\n\n \n\nWhen the resulting bit representation does not correspond to a valid\nrepresentation of a variable of the same type as `MOLD`, the results\nare undefined, and subsequent operations on the result cannot be\nguaranteed to produce sensible behavior. For example, it is possible to\ncreate `LOGICAL` variables for which `VAR` and\n`.NOT.``VAR` both appear to be true.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_transfer\n\n integer :: x = 2143289344\n\n print *, transfer(x, 1.0) ! prints \"NaN\" on i686\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/TRANSPOSE.json b/doc/intrinsics/TRANSPOSE.json
deleted file mode 100644
index 1bcddbe1..00000000
--- a/doc/intrinsics/TRANSPOSE.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TRANSPOSE",
- "docstr": "`TRANSPOSE` — Transpose an array of rank two\n\n### Description\nTranspose an array of rank two. Element (i, j) of the result has the value\n`MATRIX(j, i)`, for all i, j.\n\n\n\n### Syntax\n`RESULT = TRANSPOSE(MATRIX)`\n\n\n### Arguments\n\n \n | `MATRIX` | Shall be an array of any type and have a rank of two.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MATRIX`, and has shape\n`(/ m, n /)` if `MATRIX` has shape `(/ n, m /)`. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
-}
diff --git a/doc/intrinsics/TRIM.json b/doc/intrinsics/TRIM.json
deleted file mode 100644
index 04d93619..00000000
--- a/doc/intrinsics/TRIM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TRIM",
- "docstr": "`TRIM` — Remove trailing blank characters of a string\n\n### Description\nRemoves trailing blank characters of a string.\n\n\n\n### Syntax\n`RESULT = TRIM(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nA scalar of type `CHARACTER` which length is that of `STRING`\nless the number of trailing blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trim\n\n CHARACTER(len=10), PARAMETER :: s = \"GFORTRAN \"\n\n WRITE(*,*) LEN(s), LEN(TRIM(s)) ! \"10 8\", with/without trailing blanks\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nADJUSTL, ADJUSTR\n"
-}
diff --git a/doc/intrinsics/TTYNAM.json b/doc/intrinsics/TTYNAM.json
deleted file mode 100644
index efb7352a..00000000
--- a/doc/intrinsics/TTYNAM.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "TTYNAM",
- "docstr": "`TTYNAM` — Get the name of a terminal device.\n\n### Description\nGet the name of a terminal device. For more information,\nsee `ttyname(3)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `NAME = TTYNAM(UNIT)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `NAME` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_ttynam\n\n INTEGER :: unit\n\n DO unit = 1, 10\n\n IF (isatty(unit=unit)) write(*,*) ttynam(unit)\n\n END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nISATTY\n"
-}
diff --git a/doc/intrinsics/UBOUND.json b/doc/intrinsics/UBOUND.json
deleted file mode 100644
index b30e6fe4..00000000
--- a/doc/intrinsics/UBOUND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "UBOUND",
- "docstr": "`UBOUND` — Upper dimension bounds of an array\n\n### Description\nReturns the upper bounds of an array, or a single upper bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = UBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the upper bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the upper bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the upper bound is taken to be the number of elements along\nthe relevant dimension.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLBOUND, LCOBOUND\n"
-}
diff --git a/doc/intrinsics/UCOBOUND.json b/doc/intrinsics/UCOBOUND.json
deleted file mode 100644
index 7ad0ea06..00000000
--- a/doc/intrinsics/UCOBOUND.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "UCOBOUND",
- "docstr": "`UCOBOUND` — Upper codimension bounds of an array\n\n### Description\nReturns the upper cobounds of a coarray, or a single upper cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLCOBOUND, LBOUND\n"
-}
diff --git a/doc/intrinsics/UMASK.json b/doc/intrinsics/UMASK.json
deleted file mode 100644
index 75adc57f..00000000
--- a/doc/intrinsics/UMASK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "UMASK",
- "docstr": "`UMASK` — Set the file creation mask\n\n### Description\nSets the file creation mask to `MASK`. If called as a function, it\nreturns the old value. If called as a subroutine and argument `OLD`\nif it is supplied, it is set to the old value. See `umask(2)`.\n\n\n\n### Syntax\n\n \n\n\n | `OLD = UMASK(MASK)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `OLD` | (Optional) Shall be a scalar of type\n`INTEGER`.\n\n\n\n \n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
-}
diff --git a/doc/intrinsics/UNLINK.json b/doc/intrinsics/UNLINK.json
deleted file mode 100644
index 7e0acda0..00000000
--- a/doc/intrinsics/UNLINK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "UNLINK",
- "docstr": "`UNLINK` — Remove a file from the file system\n\n### Description\nUnlinks the file `PATH`. A null character (`CHAR(0)`) can be\nused to mark the end of the name in `PATH`; otherwise, trailing\nblanks in the file name are ignored. If the `STATUS` argument is\nsupplied, it contains 0 on success or a nonzero error code upon return;\nsee `unlink(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = UNLINK(PATH)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, SYMLNK\n"
-}
diff --git a/doc/intrinsics/UNPACK.json b/doc/intrinsics/UNPACK.json
deleted file mode 100644
index e741c0ce..00000000
--- a/doc/intrinsics/UNPACK.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "UNPACK",
- "docstr": "`UNPACK` — Unpack an array of rank one into an array\n\n### Description\nStore the elements of `VECTOR` in an array of higher rank.\n\n\n\n### Syntax\n`RESULT = UNPACK(VECTOR, MASK, FIELD)`\n\n\n### Arguments\n\n \n | `VECTOR` | Shall be an array of any type and rank one. It\nshall have at least as many elements as `MASK` has `TRUE` values. \n\n | `MASK` | Shall be an array of type `LOGICAL`. \n\n | `FIELD` | Shall be of the same type as `VECTOR` and have\nthe same shape as `MASK`.\n\n\n\n\n\n\n### Return value\nThe resulting array corresponds to `FIELD` with `TRUE` elements\nof `MASK` replaced by values from `VECTOR` in array element order.\n\n\n\n### Example\n```\n\n\nPROGRAM test_unpack\n\n integer :: vector(2) = (/1,1/)\n\n logical :: mask(4) = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)\n\n integer :: field(2,2) = 0, unity(2,2)\n\n\n ! result: unity matrix\n\n unity = unpack(vector, reshape(mask, (/2,2/)), field)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPACK, SPREAD\n"
-}
diff --git a/doc/intrinsics/VERIFY.json b/doc/intrinsics/VERIFY.json
deleted file mode 100644
index 921e2c39..00000000
--- a/doc/intrinsics/VERIFY.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "VERIFY",
- "docstr": "`VERIFY` — Scan a string for characters not a given set\n\n### Description\nVerifies that all the characters in `STRING` belong to the set of\ncharacters in `SET`.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nnot in `SET`. If `BACK` equals `TRUE`, the rightmost\nposition is returned. If all characters of `STRING` are found in\n`SET`, the result is zero.\n\n\n\n\n### Syntax\n`RESULT = VERIFY(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_verify\n\n WRITE(*,*) VERIFY(\"FORTRAN\", \"AO\") ! 1, found 'F'\n\n WRITE(*,*) VERIFY(\"FORTRAN\", \"FOO\") ! 3, found 'R'\n\n WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\") ! 1, found 'F'\n\n WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\", .TRUE.) ! 7, found 'N'\n\n WRITE(*,*) VERIFY(\"FORTRAN\", \"FORTRAN\") ! 0' found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, INDEX intrinsic\n"
-}
diff --git a/doc/intrinsics/XOR.json b/doc/intrinsics/XOR.json
deleted file mode 100644
index f9e44920..00000000
--- a/doc/intrinsics/XOR.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "keyword": "XOR",
- "docstr": "`XOR` — Bitwise logical exclusive OR\n\n### Description\nBitwise logical exclusive or.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IEOR intrinsic and for logical arguments the\n`.NEQV.` operator, which are both defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = XOR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_xor\n\n LOGICAL :: T = .TRUE., F = .FALSE.\n\n INTEGER :: a, b\n\n DATA a / Z'F' /, b / Z'3' /\n\n\n WRITE (*,*) XOR(T, T), XOR(T, F), XOR(F, T), XOR(F, F)\n\n WRITE (*,*) XOR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IEOR\n"
-}
diff --git a/doc/lang_server_type_autocompletion.gif b/doc/lang_server_type_autocompletion.gif
deleted file mode 100644
index 7c187965..00000000
Binary files a/doc/lang_server_type_autocompletion.gif and /dev/null differ
diff --git a/doc/symbol_nav.png b/doc/symbol_nav.png
deleted file mode 100644
index 91acd96f..00000000
Binary files a/doc/symbol_nav.png and /dev/null differ
diff --git a/src/features/completion-provider.ts b/src/features/completion-provider.ts
index 2fd6507d..30ecb447 100644
--- a/src/features/completion-provider.ts
+++ b/src/features/completion-provider.ts
@@ -1,11 +1,11 @@
import { CancellationToken, TextDocument, Position, Hover } from 'vscode';
import * as fs from 'fs';
import * as vscode from 'vscode';
-import { isPositionInString, intrinsics, FORTRAN_KEYWORDS } from '../lib/helper';
+import { isPositionInString, FORTRAN_KEYWORDS } from '../lib/helper';
import { getDeclaredFunctions } from '../lib/functions';
-
import { EXTENSION_ID } from '../lib/tools';
import { LoggingService } from '../services/logging-service';
+import intrinsics from './intrinsics.json';
class CaseCoverter {
preferredCase: string;
@@ -97,7 +97,7 @@ export class FortranCompletionProvider implements vscode.CompletionItemProvider
currentWord: string,
caseConverter: CaseCoverter
): vscode.CompletionItem[] {
- return intrinsics
+ return Object.keys(intrinsics)
.filter(i => i.startsWith(currentWord.toUpperCase()))
.map((intrinsic: string) => {
return new vscode.CompletionItem(
diff --git a/src/features/hover-provider.ts b/src/features/hover-provider.ts
index 44f83ddc..6bdf93c6 100644
--- a/src/features/hover-provider.ts
+++ b/src/features/hover-provider.ts
@@ -1,7 +1,6 @@
import { CancellationToken, TextDocument, Position, Hover } from 'vscode';
-
-import { isIntrinsic, loadDocString } from '../lib/helper';
import { LoggingService } from '../services/logging-service';
+import intrinsics from './intrinsics.json';
export class FortranHoverProvider {
constructor(private loggingService: LoggingService) {}
@@ -13,8 +12,18 @@ export class FortranHoverProvider {
const wordRange = document.getWordRangeAtPosition(position);
const word = document.getText(wordRange);
- if (isIntrinsic(word)) {
- return new Hover(loadDocString(word));
+ const intrinsicDoc: string = this.isIntrinsic(word);
+ if (intrinsicDoc) return new Hover(intrinsicDoc);
+ }
+
+ /**
+ * Get if a word is a Fortran intrinsic and return the documentation if true.
+ * @param keyword word to provide hover info for
+ * @returns if `keyword` is an intrinsic return the documentation for it, otherwise return `undefined`
+ */
+ private isIntrinsic(keyword: string): string {
+ if (Object.prototype.hasOwnProperty.call(intrinsics, keyword.toUpperCase())) {
+ return intrinsics[keyword.toUpperCase()].doc;
}
}
}
diff --git a/src/features/intrinsics.json b/src/features/intrinsics.json
new file mode 100644
index 00000000..d0b605b5
--- /dev/null
+++ b/src/features/intrinsics.json
@@ -0,0 +1,851 @@
+{
+ "SIGNAL": {
+ "doc": "`SIGNAL` \u2014 Signal handling subroutine (or function)\n\n### Description\n`SIGNAL(NUMBER, HANDLER [, STATUS])` causes external subroutine\n`HANDLER` to be executed with a single integer argument when signal\n`NUMBER` occurs. If `HANDLER` is an integer, it can be used to\nturn off handling of signal `NUMBER` or revert to its default\naction. See `signal(2)`.\n\n \nIf `SIGNAL` is called as a subroutine and the `STATUS` argument\nis supplied, it is set to the value returned by `signal(2)`.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SIGNAL(NUMBER, HANDLER)` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. \n`INTEGER`. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\ninteger. It has `INTENT(OUT)`.\n\n\n\n\n\n\n\n### Return value\nThe `SIGNAL` function returns the value returned by `signal(2)`.\n\n\n\n### Example\n```\n\n\nprogram test_signal\n\n\u00a0\u00a0intrinsic signal\n\n\u00a0\u00a0external handler_print\n\n\n\u00a0\u00a0call signal (12, handler_print)\n\n\u00a0\u00a0call signal (10, 1)\n\n\n\u00a0\u00a0call sleep (30)\n\nend program test_signal\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
+ },
+ "BGT": {
+ "doc": "`BGT` \u2014 Bitwise greater than\n\n### Description\nDetermines whether an integral is a bitwise greater than another.\n\n\n\n### Syntax\n`RESULT = BGT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BLE, BLT\n"
+ },
+ "ATANH": {
+ "doc": "`ATANH` \u2014 Inverse hyperbolic tangent function\n\n### Description\n`ATANH(X)` computes the inverse hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`RESULT = ATANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\atanh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_atanh\n\n\u00a0\u00a0REAL, DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n\u00a0\u00a0WRITE (*,*) ATANH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DATANH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TANH\n"
+ },
+ "DSHIFTL": {
+ "doc": "`DSHIFTL` \u2014 Combined left shift\n\n### Description\n`DSHIFTL(I, J, SHIFT)` combines bits of `I` and `J`. The\nrightmost `SHIFT` bits of the result are the leftmost `SHIFT`\nbits of `J`, and the remaining bits are the rightmost bits of\n`I`.\n\n\n\n### Syntax\n`RESULT = DSHIFTL(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTR\n"
+ },
+ "DREAL": {
+ "doc": "`DREAL` \u2014 Double real part function\n\n### Description\n`DREAL(Z)` returns the real part of complex variable `Z`.\n\n\n\n### Syntax\n`RESULT = DREAL(A)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dreal\n\n\u00a0\u00a0\u00a0\u00a0complex(8) :: z = (1.3_8,7.2_8)\n\n\u00a0\u00a0\u00a0\u00a0print *, dreal(z)\n\nend program test_dreal\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nAIMAG\n\n "
+ },
+ "MOD": {
+ "doc": "`MOD` \u2014 Remainder function\n\n### Description\n`MOD(A,P)` computes the remainder of the division of A by P.\n\n\n\n### Syntax\n`RESULT = MOD(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`\nand not equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is the result of `A - (INT(A/P) * P)`. The type\nand kind of the return value is the same as that of the arguments. The\nreturned value has the same sign as A and a magnitude less than the\nmagnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_mod\n\n\u00a0\u00a0print *, mod(17,3)\n\n\u00a0\u00a0print *, mod(17.5,5.5)\n\n\u00a0\u00a0print *, mod(17.5d0,5.5)\n\n\u00a0\u00a0print *, mod(17.5,5.5d0)\n\n\n\u00a0\u00a0print *, mod(-17,3)\n\n\u00a0\u00a0print *, mod(-17.5,5.5)\n\n\u00a0\u00a0print *, mod(-17.5d0,5.5)\n\n\u00a0\u00a0print *, mod(-17.5,5.5d0)\n\n\n\u00a0\u00a0print *, mod(17,-3)\n\n\u00a0\u00a0print *, mod(17.5,-5.5)\n\n\u00a0\u00a0print *, mod(17.5d0,-5.5)\n\n\u00a0\u00a0print *, mod(17.5,-5.5d0)\n\nend program test_mod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `MOD(A,P)` | `INTEGER A,P` | `INTEGER` | Fortran 95 and later\n\n | `AMOD(A,P)` | `REAL(4) A,P` | `REAL(4)` | Fortran 95 and later\n\n | `DMOD(A,P)` | `REAL(8) A,P` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMODULO\n\n "
+ },
+ "NOT": {
+ "doc": "`NOT` \u2014 Logical negation\n\n### Description\n`NOT` returns the bitwise Boolean inverse of `I`.\n\n\n\n### Syntax\n`RESULT = NOT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\nargument.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIAND, IEOR, IOR, IBITS, IBSET, IBCLR\n\n "
+ },
+ "SPREAD": {
+ "doc": "`SPREAD` \u2014 Add a dimension to an array\n\n### Description\nReplicates a `SOURCE` array `NCOPIES` times along a specified\ndimension `DIM`.\n\n\n\n### Syntax\n`RESULT = SPREAD(SOURCE, DIM, NCOPIES)`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type and\na rank less than seven. \n\n | `DIM` | Shall be a scalar of type `INTEGER` with a\nvalue in the range from 1 to n+1, where n equals the rank of `SOURCE`. \n\n | `NCOPIES` | Shall be a scalar of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result is an array of the same type as `SOURCE` and has rank n+1\nwhere n equals the rank of `SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spread\n\n\u00a0\u00a0INTEGER :: a = 1, b(2) = (/ 1, 2 /)\n\n\u00a0\u00a0WRITE(*,*) SPREAD(A, 1, 2) ! \"1 1\"\n\n\u00a0\u00a0WRITE(*,*) SPREAD(B, 1, 2) ! \"1 1 2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n"
+ },
+ "MVBITS": {
+ "doc": "`MVBITS` \u2014 Move bits from one integer to another\n\n### Description\nMoves `LEN` bits from positions `FROMPOS` through\n`FROMPOS+LEN-1` of `FROM` to positions `TOPOS` through\n`TOPOS+LEN-1` of `TO`. The portion of argument `TO` not\naffected by the movement of bits is unchanged. The values of\n`FROMPOS+LEN-1` and `TOPOS+LEN-1` must be less than\n`BIT_SIZE(FROM)`.\n\n\n\n### Syntax\n`CALL MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)`\n\n\n### Arguments\n\n \n. \n\n | `FROMPOS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`. \n\n | `TO` | The type shall be `INTEGER`, of the\nsame kind as `FROM`. \n\n | `TOPOS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental subroutine\n\n\n\n### See also\nIBCLR, IBSET, IBITS, IAND, IOR, IEOR\n"
+ },
+ "ATAND": {
+ "doc": "`ATAND` \u2014 Arctangent function, degrees\n\n### Description\nATAND(X) computes the arctangent of X in degrees (inverse of TAND).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAND(X)\nRESULT = ATAND(Y, X)\n### Arguments\n- X: The type shall be REAL or COMPLEX; if Y is present, X shall be REAL.- Y: Shall be of the same type and kind as X.\n### Return value\nThe return value is of the same type and kind as X. If Y is present, the result is identical to ATAND2(Y,X). Otherwise, it is the arcus tangent of X, where the real part of the result is in degrees and lies in the range -90 \\leq \\Re \\atand(x) \\leq 90."
+ },
+ "C_FUNLOC": {
+ "doc": "`C_FUNLOC` \u2014 Obtain the C address of a procedure\n\n### Description\n`C_FUNLOC(x)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_FUNLOC(x)`\n\n\n### Arguments\n\n \n | `x` | Interoperable function or pointer to such function.\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_FUNPTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nmodule x\n\n\u00a0\u00a0use iso_c_binding\n\n\u00a0\u00a0implicit none\n\ncontains\n\n\u00a0\u00a0subroutine sub(a) bind(c)\n\n\u00a0\u00a0\u00a0\u00a0real(c_float) :: a\n\n\u00a0\u00a0\u00a0\u00a0a = sqrt(a)+5.0\n\n\u00a0\u00a0end subroutine sub\n\nend module x\n\nprogram main\n\n\u00a0\u00a0use iso_c_binding\n\n\u00a0\u00a0use x\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0interface\n\n\u00a0\u00a0\u00a0\u00a0subroutine my_routine(p) bind(c,name='myC_func')\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0import :: c_funptr\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type(c_funptr), intent(in) :: p\n\n\u00a0\u00a0\u00a0\u00a0end subroutine\n\n\u00a0\u00a0end interface\n\n\u00a0\u00a0call my_routine(c_funloc(sub))\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_LOC, C_F_POINTER, C_F_PROCPOINTER\n"
+ },
+ "KIND": {
+ "doc": "`KIND` \u2014 Kind of an entity\n\n### Description\n`KIND(X)` returns the kind value of the entity `X`.\n\n\n\n### Syntax\n`K = KIND(X)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX` or `CHARACTER`.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_kind\n\n\u00a0\u00a0integer,parameter :: kc = kind(' ')\n\n\u00a0\u00a0integer,parameter :: kl = kind(.true.)\n\n\n\u00a0\u00a0print *, \"The default character kind is \", kc\n\n\u00a0\u00a0print *, \"The default logical kind is \", kl\n\nend program test_kind\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "SECNDS": {
+ "doc": "`SECNDS` \u2014 Time function\n\n### Description\n`SECNDS(X)` gets the time in seconds from the real-time system clock. \n`X` is a reference time, also in seconds. If this is zero, the time in\nseconds from midnight is returned. This function is non-standard and its\nuse is discouraged.\n\n\n\n### Syntax\n`RESULT = SECNDS (X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | Shall be of type `REAL(4)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_secnds\n\n\u00a0\u00a0\u00a0\u00a0integer :: i\n\n\u00a0\u00a0\u00a0\u00a0real(4) :: t1, t2\n\n\u00a0\u00a0\u00a0\u00a0print *, secnds (0.0) ! seconds since midnight\n\n\u00a0\u00a0\u00a0\u00a0t1 = secnds (0.0) ! reference time\n\n\u00a0\u00a0\u00a0\u00a0do i = 1, 10000000 ! do something\n\n\u00a0\u00a0\u00a0\u00a0end do\n\n\u00a0\u00a0\u00a0\u00a0t2 = secnds (t1) ! elapsed time\n\n\u00a0\u00a0\u00a0\u00a0print *, \"Something took \", t2, \" seconds.\"\n\nend program test_secnds\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
+ },
+ "BLT": {
+ "doc": "`BLT` \u2014 Bitwise less than\n\n### Description\nDetermines whether an integral is a bitwise less than another.\n\n\n\n### Syntax\n`RESULT = BLT(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGE, BGT, BLE\n"
+ },
+ "IDATE": {
+ "doc": "`IDATE` \u2014 Get current local time subroutine (day/month/year)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The day (in the range 1-31), month (in the range 1-12),\nand year appear in elements 1, 2, and 3 of `VALUES`, respectively. \nThe year has four significant digits.\n\n\n\n### Syntax\n`CALL IDATE(VALUES)`\n\n\n### Arguments\n\n \n and\nthe kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_idate\n\n\u00a0\u00a0integer, dimension(3) :: tarray\n\n\u00a0\u00a0call idate(tarray)\n\n\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0print *, tarray(2)\n\n\u00a0\u00a0print *, tarray(3)\n\nend program test_idate\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "SYMLNK": {
+ "doc": "`SYMLNK` \u2014 Create a symbolic link\n\n### Description\nMakes a symbolic link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`symlink(2)`. If the system does not supply `symlink(2)`,\n`ENOSYS` is returned.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYMLNK(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, UNLINK\n\n "
+ },
+ "KILL": {
+ "doc": "`KILL` \u2014 Send a signal to a process\n\n### Description\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = KILL(C, VALUE)` \n\n\n\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)` \n | `VALUE` | Shall be a scalar `INTEGER`, with\n`INTENT(IN)` \n | `STATUS` | (Optional) status flag of type `INTEGER(4)` or\n`INTEGER(8)`. Returns 0 on success, or a system-specific error code\notherwise.\n\n\n\n\n\n\n### Standard\nSends the signal specified by `SIGNAL` to the process `PID`. \nSee `kill(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nABORT, EXIT\n"
+ },
+ "LLE": {
+ "doc": "`LLE` \u2014 Lexical less than or equal\n\n### Description\nDetermines whether one string is lexically less than or equal to another\nstring, where the two strings are interpreted as containing ASCII\ncharacter codes. If the String A and String B are not the same length,\nthe shorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A <= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLT\n"
+ },
+ "SET_EXPONENT": {
+ "doc": "`SET_EXPONENT` \u2014 Set the exponent of the model\n\n### Description\n`SET_EXPONENT(X, I)` returns the real number whose fractional part\nis that that of `X` and whose exponent part is `I`.\n\n\n\n### Syntax\n`RESULT = SET_EXPONENT(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | Shall be of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real number whose fractional part\nis that that of `X` and whose exponent part if `I` is returned;\nit is `FRACTION(X) * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_setexp\n\n\u00a0\u00a0REAL :: x = 178.1387e-4\n\n\u00a0\u00a0INTEGER :: i = 17\n\n\u00a0\u00a0PRINT *, SET_EXPONENT(x, i), FRACTION(x) * RADIX(x)**i\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "FDATE": {
+ "doc": "`FDATE` \u2014 Get the current time as a string\n\n### Description\n`FDATE(DATE)` returns the current date (using the same format as\n`CTIME`) in `DATE`. It is equivalent to CALL CTIME(DATE,\nTIME()) .\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `DATE = FDATE()`.\n\n\n\n\n\n\n### Arguments\n\n \n of the\ndefault kind. It is an `INTENT(OUT)` argument. If the length of\nthis variable is too short for the date and time string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe current date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_fdate\n\n\u00a0\u00a0\u00a0\u00a0integer(8) :: i, j\n\n\u00a0\u00a0\u00a0\u00a0character(len=30) :: date\n\n\u00a0\u00a0\u00a0\u00a0call fdate(date)\n\n\u00a0\u00a0\u00a0\u00a0print *, 'Program started on ', date\n\n\u00a0\u00a0\u00a0\u00a0do i = 1, 100000000 ! Just a delay\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0j = i * i - i\n\n\u00a0\u00a0\u00a0\u00a0end do\n\n\u00a0\u00a0\u00a0\u00a0call fdate(date)\n\n\u00a0\u00a0\u00a0\u00a0print *, 'Program ended on ', date\n\nend program test_fdate\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, CTIME\n"
+ },
+ "SHIFTL": {
+ "doc": "`SHIFTL` \u2014 Left shift\n\n### Description\n`SHIFTL` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost, and bits shifted in from\nthe right end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTL(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTR\n"
+ },
+ "DBLE": {
+ "doc": "`DBLE` \u2014 Double conversion function\n\n### Description\n`DBLE(A)` Converts `A` to double precision real type.\n\n\n\n### Syntax\n`RESULT = DBLE(A)`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type double precision real.\n\n\n\n### Example\n```\n\n\nprogram test_dble\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 2.18\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 5\n\n\u00a0\u00a0\u00a0\u00a0complex :: z = (2.3,1.14)\n\n\u00a0\u00a0\u00a0\u00a0print *, dble(x), dble(i), dble(z)\n\nend program test_dble\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nREAL\n"
+ },
+ "ATOMIC_XOR": {
+ "doc": "`ATOMIC_XOR` \u2014 Atomic bitwise OR operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nXOR between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_XOR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*]\n\n\u00a0\u00a0call atomic_xor (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_XOR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
+ },
+ "DPROD": {
+ "doc": "`DPROD` \u2014 Double product function\n\n### Description\n`DPROD(X,Y)` returns the product `X*Y`.\n\n\n\n### Syntax\n`RESULT = DPROD(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type shall be `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL(8)`.\n\n\n\n### Example\n```\n\n\nprogram test_dprod\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 5.2\n\n\u00a0\u00a0\u00a0\u00a0real :: y = 2.3\n\n\u00a0\u00a0\u00a0\u00a0real(8) :: d\n\n\u00a0\u00a0\u00a0\u00a0d = dprod(x,y)\n\n\u00a0\u00a0\u00a0\u00a0print *, d\n\nend program test_dprod\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DPROD(X,Y)` | `REAL(4) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "HYPOT": {
+ "doc": "`HYPOT` \u2014 Euclidean distance function\n\n### Description\n`HYPOT(X,Y)` is the Euclidean distance function. It is equal to\n\\sqrtX^2 + Y^2, without undue underflow or overflow.\n\n\n\n### Syntax\n`RESULT = HYPOT(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type and kind type parameter shall be the same as\n`X`.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_hypot\n\n\u00a0\u00a0real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n\u00a0\u00a0x = hypot(x,y)\n\nend program test_hypot\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "BESSEL_J0": {
+ "doc": "`BESSEL_J0` \u2014 Bessel function of the first kind of order 0\n\n### Description\n`BESSEL_J0(X)` computes the Bessel function of the first kind of\norder 0 of `X`. This function is available under the name\n`BESJ0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.4027... \\leq Bessel (0,x) \\leq 1. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj0\n\n\u00a0\u00a0real(8) :: x = 0.0_8\n\n\u00a0\u00a0x = bessel_j0(x)\n\nend program test_besj0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "IRAND": {
+ "doc": "`IRAND` \u2014 Integer pseudo-random number\n\n### Description\n`IRAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and a system-dependent limit (which is in most\ncases 2147483647). If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = IRAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Example\n```\n\n\nprogram test_irand\n\n\u00a0\u00a0integer,parameter :: seed = 86456\n\n\n\u00a0\u00a0call srand(seed)\n\n\u00a0\u00a0print *, irand(), irand(), irand(), irand()\n\n\u00a0\u00a0print *, irand(seed), irand(), irand(), irand()\n\nend program test_irand\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
+ },
+ "ADJUSTL": {
+ "doc": "`ADJUSTL` \u2014 Left adjust a string\n\n### Description\n`ADJUSTL(STRING)` will left adjust a string by removing leading spaces. \nSpaces are inserted at the end of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTL(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where leading spaces are removed and the same number of\nspaces are inserted on the end of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustl\n\n\u00a0\u00a0character(len=20) :: str = ' gfortran'\n\n\u00a0\u00a0str = adjustl(str)\n\n\u00a0\u00a0print *, str\n\nend program test_adjustl\n\n```\n\n\n\n### Standard\nFortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTR, TRIM\n"
+ },
+ "PARITY": {
+ "doc": "`PARITY` \u2014 Reduction with exclusive OR\n\n### Description\nCalculates the parity, i.e. the reduction using `.XOR.`,\nof `MASK` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `MASK`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `MASK`.\n\n \nIf `DIM` is absent, a scalar with the parity of all elements in\n`MASK` is returned, i.e. true if an odd number of elements is\n`.true.` and false otherwise. If `DIM` is present, an array\nof rank n-1, where n equals the rank of `ARRAY`,\nand a shape similar to that of `MASK` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n\u00a0\u00a0LOGICAL :: x(2) = [ .true., .false. ]\n\n\u00a0\u00a0print *, PARITY(x) ! prints \"T\" (true).\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "ATOMIC_FETCH_OR": {
+ "doc": "`ATOMIC_FETCH_OR` \u2014 Atomic bitwise OR operation with prior fetch\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise OR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_OR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*], old\n\n\u00a0\u00a0call atomic_fetch_or (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_OR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_XOR\n"
+ },
+ "GETARG": {
+ "doc": "`GETARG` \u2014 Get command line arguments\n\n### Description\nRetrieve the `POS`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_COMMAND_ARGUMENT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`CALL GETARG(POS, VALUE)`\n\n\n### Arguments\n\n \n and not wider than\nthe default integer kind; `POS` \\geq 0\n\n | `VALUE` | Shall be of type `CHARACTER` and of default\nkind. \n\n | `VALUE` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Return value\nAfter `GETARG` returns, the `VALUE` argument holds the\n`POS`th command line argument. If `VALUE` can not hold the\nargument, it is truncated to fit the length of `VALUE`. If there are\nless than `POS` arguments specified at the command line, `VALUE`\nwill be filled with blanks. If `POS` = 0, `VALUE` is set\nto the name of the program (on systems that support this feature).\n\n\n\n### Example\n```\n\n\nPROGRAM test_getarg\n\n\u00a0\u00a0INTEGER :: i\n\n\u00a0\u00a0CHARACTER(len=32) :: arg\n\n\n\u00a0\u00a0DO i = 1, iargc()\n\n\u00a0\u00a0\u00a0\u00a0CALL getarg(i, arg)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*,*) arg\n\n\u00a0\u00a0END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGNU Fortran 77 compatibility function: IARGC\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n"
+ },
+ "TTYNAM": {
+ "doc": "`TTYNAM` \u2014 Get the name of a terminal device.\n\n### Description\nGet the name of a terminal device. For more information,\nsee `ttyname(3)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `NAME = TTYNAM(UNIT)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `NAME` | Shall be of type `CHARACTER`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_ttynam\n\n\u00a0\u00a0INTEGER :: unit\n\n\u00a0\u00a0DO unit = 1, 10\n\n\u00a0\u00a0\u00a0\u00a0IF (isatty(unit=unit)) write(*,*) ttynam(unit)\n\n\u00a0\u00a0END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nISATTY\n"
+ },
+ "GET_COMMAND_ARGUMENT": {
+ "doc": "`GET_COMMAND_ARGUMENT` \u2014 Get command line arguments\n\n### Description\nRetrieve the `NUMBER`-th argument that was passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`CALL GET_COMMAND_ARGUMENT(NUMBER [, VALUE, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and of\ndefault kind, `NUMBER` \\geq 0\n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind.\n\n\n\n\n\n\n### Return value\nAfter `GET_COMMAND_ARGUMENT` returns, the `VALUE` argument holds the\n`NUMBER`-th command line argument. If `VALUE` can not hold the argument, it is\ntruncated to fit the length of `VALUE`. If there are less than `NUMBER`\narguments specified at the command line, `VALUE` will be filled with blanks. \nIf `NUMBER` = 0, `VALUE` is set to the name of the program (on\nsystems that support this feature). The `LENGTH` argument contains the\nlength of the `NUMBER`-th command line argument. If the argument retrieval\nfails, `STATUS` is a positive number; if `VALUE` contains a truncated\ncommand line argument, `STATUS` is -1; and otherwise the `STATUS` is\nzero.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command_argument\n\n\u00a0\u00a0INTEGER :: i\n\n\u00a0\u00a0CHARACTER(len=32) :: arg\n\n\n\u00a0\u00a0i = 0\n\n\u00a0\u00a0DO\n\n\u00a0\u00a0\u00a0\u00a0CALL get_command_argument(i, arg)\n\n\u00a0\u00a0\u00a0\u00a0IF (LEN_TRIM(arg) == 0) EXIT\n\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*,*) TRIM(arg)\n\n\u00a0\u00a0\u00a0\u00a0i = i+1\n\n\u00a0\u00a0END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND, COMMAND_ARGUMENT_COUNT\n"
+ },
+ "ETIME": {
+ "doc": "`ETIME` \u2014 Execution time subroutine (or function)\n\n### Description\n`ETIME(VALUES, TIME)` returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to `VALUES(1) + VALUES(2)`.\n\n \nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | | `VALUES(2)`: | System time in seconds. \n\n | | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = ETIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the start of program execution.\n\n\n\n### Example\n```\n\n\nprogram test_etime\n\n\u00a0\u00a0\u00a0\u00a0integer(8) :: i, j\n\n\u00a0\u00a0\u00a0\u00a0real, dimension(2) :: tarray\n\n\u00a0\u00a0\u00a0\u00a0real :: result\n\n\u00a0\u00a0\u00a0\u00a0call ETIME(tarray, result)\n\n\u00a0\u00a0\u00a0\u00a0print *, result\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(2)\n\n\u00a0\u00a0\u00a0\u00a0do i=1,100000000 ! Just a delay\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0j = i * i - i\n\n\u00a0\u00a0\u00a0\u00a0end do\n\n\u00a0\u00a0\u00a0\u00a0call ETIME(tarray, result)\n\n\u00a0\u00a0\u00a0\u00a0print *, result\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(2)\n\nend program test_etime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
+ },
+ "CO_MIN": {
+ "doc": "`CO_MIN` \u2014 Minimal value on the current set of images\n\n### Description\n`CO_MIN` determines element-wise the minimal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the minimal\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n\u00a0\u00a0integer :: val\n\n\u00a0\u00a0val = this_image ()\n\n\u00a0\u00a0call co_min (val, result_image=1)\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0write(*,*) \"Minimal value\", val ! prints 1\n\n\u00a0\u00a0end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_SUM, CO_REDUCE, CO_BROADCAST\n"
+ },
+ "EXTENDS_TYPE_OF": {
+ "doc": "`EXTENDS_TYPE_OF` \u2014 Query dynamic type for extension\n\n### Description\nQuery dynamic type for extension.\n\n\n\n### Syntax\n`RESULT = EXTENDS_TYPE_OF(A, MOLD)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `MOLD` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and only if\nthe dynamic type of A is an extension type of the dynamic type of MOLD.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSAME_TYPE_AS\n"
+ },
+ "RANDOM_NUMBER": {
+ "doc": "`RANDOM_NUMBER` \u2014 Pseudo-random number\n\n### Description\nReturns a single pseudorandom number or an array of pseudorandom numbers\nfrom the uniform distribution over the range 0 \\leq x < 1.\n\n \nThe runtime-library implements George Marsaglia's KISS (Keep It Simple\nStupid) random number generator (RNG). This RNG combines:\n \n\n- The congruential generator x(n) = 69069 \\cdot x(n-1) + 1327217885\nwith a period of 2^32,\n
- A 3-shift shift-register generator with a period of 2^32 - 1,\n
- Two 16-bit multiply-with-carry generators with a period of\n597273182964842497 > 2^59.\n
\nThe overall period exceeds 2^123.\n\n \nPlease note, this RNG is thread safe if used within OpenMP directives,\ni.e., its state will be consistent while called from multiple threads. \nHowever, the KISS generator does not create random numbers in parallel\nfrom multiple sources, but in sequence from a single source. If an\nOpenMP-enabled application heavily relies on random numbers, one should\nconsider employing a dedicated parallel random number generator instead.\n\n\n\n\n### Syntax\n`RANDOM_NUMBER(HARVEST)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_random_number\n\n\u00a0\u00a0REAL :: r(5,5)\n\n\u00a0\u00a0CALL init_random_seed() ! see example of RANDOM_SEED\n\n\u00a0\u00a0CALL RANDOM_NUMBER(r)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_SEED\n"
+ },
+ "THIS_IMAGE": {
+ "doc": "`THIS_IMAGE` \u2014 Function that returns the cosubscript index of this image\n\n### Description\nReturns the cosubscript for this image.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = THIS_IMAGE(DISTANCE)` \n | `RESULT = THIS_IMAGE(COARRAY [, DIM])` \n\n\n\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n(not permitted together with `COARRAY`). \n\n | `COARRAY` | Coarray of any type (optional; if `DIM`\npresent, required). \n\n | `DIM` | default integer scalar (optional). If present,\n`DIM` shall be between one and the corank of `COARRAY`.\n\n\n\n\n\n\n### Return value\nDefault integer. If `COARRAY` is not present, it is scalar; if\n`DISTANCE` is not present or has value 0, its value is the image index on\nthe invoking image for the current team, for values smaller or equal\ndistance to the initial team, it returns the image index on the ancestor team\nwhich has a distance of `DISTANCE` from the invoking team. If\n`DISTANCE` is larger than the distance to the initial team, the image\nindex of the initial team is returned. Otherwise when the `COARRAY` is\npresent, if `DIM` is not present, a rank-1 array with corank elements is\nreturned, containing the cosubscripts for `COARRAY` specifying the invoking\nimage. If `DIM` is present, a scalar is returned, with the value of\nthe `DIM` element of `THIS_IMAGE(COARRAY)`.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n\u00a0\u00a0DO i = 1, NUM_IMAGES()\n\n\u00a0\u00a0\u00a0\u00a0WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n\u00a0\u00a0END DO\n\nEND IF\n\n\n! Check whether the current image is the initial image\n\nIF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())\n\n\u00a0\u00a0error stop \"something is rotten here\"\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nNUM_IMAGES, IMAGE_INDEX\n"
+ },
+ "MCLOCK8": {
+ "doc": "`MCLOCK8` \u2014 Time function (64-bit)\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `clock(3)`. On a system with a 32-bit\n`clock(3)`, `MCLOCK8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n "
+ },
+ "COMPLEX": {
+ "doc": "`COMPLEX` \u2014 Complex conversion function\n\n### Description\n`COMPLEX(X, Y)` returns a complex number where `X` is converted\nto the real component and `Y` is converted to the imaginary\ncomponent.\n\n\n\n### Syntax\n`RESULT = COMPLEX(X, Y)`\n\n\n### Arguments\n\n \n. \n\n | `Y` | The type may be `INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nIf `X` and `Y` are both of `INTEGER` type, then the return\nvalue is of default `COMPLEX` type.\n\n \nIf `X` and `Y` are of `REAL` type, or one is of `REAL`type and one is of `INTEGER` type, then the return value is of\n`COMPLEX` type with a kind equal to that of the `REAL`argument with the highest precision.\n\n\n\n\n### Example\n```\n\n\nprogram test_complex\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 42\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 3.14\n\n\u00a0\u00a0\u00a0\u00a0print *, complex(i, x)\n\nend program test_complex\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCMPLX\n"
+ },
+ "OR": {
+ "doc": "`OR` \u2014 Bitwise logical OR\n\n### Description\nBitwise logical `OR`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IOR intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = OR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `J`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_or\n\n\u00a0\u00a0LOGICAL :: T = .TRUE., F = .FALSE.\n\n\u00a0\u00a0INTEGER :: a, b\n\n\u00a0\u00a0DATA a / Z'F' /, b / Z'3' /\n\n\n\u00a0\u00a0WRITE (*,*) OR(T, T), OR(T, F), OR(F, T), OR(F, F)\n\n\u00a0\u00a0WRITE (*,*) OR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IOR\n"
+ },
+ "IEOR": {
+ "doc": "`IEOR` \u2014 Bitwise logical exclusive or\n\n### Description\n`IEOR` returns the bitwise Boolean exclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IEOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IAND, IBITS, IBSET, IBCLR, NOT\n"
+ },
+ "RSHIFT": {
+ "doc": "`RSHIFT` \u2014 Right shift bits\n\n### Description\n`RSHIFT` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n \nThis function has been superseded by the `SHIFTA` intrinsic, which\nis standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = RSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, LSHIFT, SHIFTA, SHIFTR,\nSHIFTL\n\n "
+ },
+ "RANGE": {
+ "doc": "`RANGE` \u2014 Decimal exponent range\n\n### Description\n`RANGE(X)` returns the decimal exponent range in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = RANGE(X)`\n\n\n### Arguments\n\n \n\nor `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `PRECISION` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, PRECISION\n\n\n"
+ },
+ "INDEX": {
+ "doc": "`INDEX` \u2014 Position of a substring within a string\n\n### Description\nReturns the position of the start of the first occurrence of string\n`SUBSTRING` as a substring in `STRING`, counting from one. If\n`SUBSTRING` is not present in `STRING`, zero is returned. If\nthe `BACK` argument is present and true, the return value is the\nstart of the last occurrence rather than the first.\n\n\n\n### Syntax\n`RESULT = INDEX(STRING, SUBSTRING [, BACK [, KIND]])`\n\n\n### Arguments\n\n \n, with\n`INTENT(IN)` \n | `SUBSTRING` | Shall be a scalar `CHARACTER`, with\n`INTENT(IN)` \n | `BACK` | (Optional) Shall be a scalar `LOGICAL`, with\n`INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INDEX(STRING, SUBSTRING)` | `CHARACTER` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, VERIFY\n"
+ },
+ "FLOOR": {
+ "doc": "`FLOOR` \u2014 Integer floor function\n\n### Description\n`FLOOR(A)` returns the greatest integer less than or equal to `X`.\n\n\n\n### Syntax\n`RESULT = FLOOR(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand of default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_floor\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 63.29\n\n\u00a0\u00a0\u00a0\u00a0real :: y = -63.59\n\n\u00a0\u00a0\u00a0\u00a0print *, floor(x) ! returns 63\n\n\u00a0\u00a0\u00a0\u00a0print *, floor(y) ! returns -64\n\nend program test_floor\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, NINT\n\n "
+ },
+ "BESSEL_J1": {
+ "doc": "`BESSEL_J1` \u2014 Bessel function of the first kind of order 1\n\n### Description\n`BESSEL_J1(X)` computes the Bessel function of the first kind of\norder 1 of `X`. This function is available under the name\n`BESJ1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_J1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and lies in the\nrange - 0.5818... \\leq Bessel (0,x) \\leq 0.5818 . It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besj1\n\n\u00a0\u00a0real(8) :: x = 1.0_8\n\n\u00a0\u00a0x = bessel_j1(x)\n\nend program test_besj1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJ1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "CHAR": {
+ "doc": "`CHAR` \u2014 Character conversion function\n\n### Description\n`CHAR(I [, KIND])` returns the character represented by the integer `I`.\n\n\n\n### Syntax\n`RESULT = CHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER(1)`\n\n\n### Example\n```\n\n\nprogram test_char\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 74\n\n\u00a0\u00a0\u00a0\u00a0character(1) :: c\n\n\u00a0\u00a0\u00a0\u00a0c = char(i)\n\n\u00a0\u00a0\u00a0\u00a0print *, i, c ! returns 'J'\n\nend program test_char\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CHAR(I)` | `INTEGER I` | `CHARACTER(LEN=1)` | F77 and later\n\n\n\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, IACHAR, ICHAR\n\n "
+ },
+ "MASKR": {
+ "doc": "`MASKR` \u2014 Right justified mask\n\n### Description\n`MASKL(I[, KIND])` has its rightmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKR(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKL\n"
+ },
+ "ABORT": {
+ "doc": "`ABORT` \u2014 Abort the program\n\n### Description\n`ABORT` causes immediate termination of the program. On operating\nsystems that support a core dump, `ABORT` will produce a core dump. \nIt will also print a backtrace, unless `-fno-backtrace` is given.\n\n\n\n### Syntax\n`CALL ABORT`\n\n\n### Return value\nDoes not return.\n\n\n\n### Example\n```\n\n\nprogram test_abort\n\n\u00a0\u00a0integer :: i = 1, j = 2\n\n\u00a0\u00a0if (i /= j) call abort\n\nend program test_abort\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nEXIT, KILL, BACKTRACE\n\n "
+ },
+ "RRSPACING": {
+ "doc": "`RRSPACING` \u2014 Reciprocal of the relative spacing\n\n### Description\n`RRSPACING(X)` returns the reciprocal of the relative spacing of\nmodel numbers near `X`.\n\n\n\n### Syntax\n`RESULT = RRSPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe value returned is equal to\n`ABS(FRACTION(X)) * FLOAT(RADIX(X))**DIGITS(X)`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSPACING\n"
+ },
+ "LOG_GAMMA": {
+ "doc": "`LOG_GAMMA` \u2014 Logarithm of the Gamma function\n\n### Description\n`LOG_GAMMA(X)` computes the natural logarithm of the absolute value\nof the Gamma (\\Gamma) function.\n\n\n\n### Syntax\n`X = LOG_GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log_gamma\n\n\u00a0\u00a0real :: x = 1.0\n\n\u00a0\u00a0x = lgamma(x) ! returns 0.0\n\nend program test_log_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `ALGAMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DLGAMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nGamma function: GAMMA\n\n "
+ },
+ "SIZEOF": {
+ "doc": "`SIZEOF` \u2014 Size in bytes of an expression\n\n### Description\n`SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be of any type, rank or shape.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components. If the argument is\npolymorphic, the size according to the dynamic type is returned. The argument\nmay not be a procedure or procedure pointer. Note that the code assumes for\narrays that those are contiguous; for contiguous arrays, it returns the\nstorage or an array element multiplied by the size of the array.\n\n\n\n### Example\n```\n\n\ninteger :: i\n\nreal :: r, s(5)\n\nprint *, (sizeof(s)/sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_SIZEOF, STORAGE_SIZE\n"
+ },
+ "REAL": {
+ "doc": "`REAL` \u2014 Convert to real type\n\n### Description\n`REAL(A [, KIND])` converts its argument `A` to a real type. The\n`REALPART` function is provided for compatibility with *g77*,\nand its use is strongly discouraged.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = REALPART(Z)` \n\n\n\n\n\n### Arguments\n\n \n, or\n`COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `REAL` variable or array under\nthe following rules:\n\n \n**(A)** `REAL(A)` is converted to a default real type if `A` is an\ninteger or real variable. \n\n**(B)** `REAL(A)` is converted to a real type with the kind type parameter\nof `A` if `A` is a complex variable. \n\n**(C)** `REAL(A, KIND)` is converted to a real type with kind type\nparameter `KIND` if `A` is a complex, integer, or real\nvariable. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_real\n\n\u00a0\u00a0complex :: x = (1.0, 2.0)\n\n\u00a0\u00a0print *, real(x), real(x,8), realpart(x)\n\nend program test_real\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `FLOAT(A)` | `INTEGER(4)` | `REAL(4)` | Fortran 77 and later\n\n | `DFLOAT(A)` | `INTEGER(4)` | `REAL(8)` | GNU extension\n\n | `SNGL(A)` | `INTEGER(8)` | `REAL(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDBLE\n\n "
+ },
+ "LOG10": {
+ "doc": "`LOG10` \u2014 Base 10 logarithm function\n\n### Description\n`LOG10(X)` computes the base 10 logarithm of `X`.\n\n\n\n### Syntax\n`RESULT = LOG10(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_log10\n\n\u00a0\u00a0real(8) :: x = 10.0_8\n\n\u00a0\u00a0x = log10(x)\n\nend program test_log10\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG10(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DLOG10(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "SUM": {
+ "doc": "`SUM` \u2014 Sum of array elements\n\n### Description\nAdds the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = SUM(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the sum of all elements in `ARRAY`\nis returned. Otherwise, an array of rank n-1, where n equals the rank of\n`ARRAY`, and a shape similar to that of `ARRAY` with dimension `DIM`\ndropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n\u00a0\u00a0INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n\u00a0\u00a0print *, SUM(x) ! all elements, sum = 15\n\n\u00a0\u00a0print *, SUM(x, MASK=MOD(x, 2)==1) ! odd elements, sum = 9\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRODUCT\n"
+ },
+ "FNUM": {
+ "doc": "`FNUM` \u2014 File number function\n\n### Description\n`FNUM(UNIT)` returns the POSIX file descriptor number corresponding to the\nopen Fortran I/O unit `UNIT`.\n\n\n\n### Syntax\n`RESULT = FNUM(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_fnum\n\n\u00a0\u00a0integer :: i\n\n\u00a0\u00a0open (unit=10, status = \"scratch\")\n\n\u00a0\u00a0i = fnum(10)\n\n\u00a0\u00a0print *, i\n\n\u00a0\u00a0close (10)\n\nend program test_fnum\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n"
+ },
+ "GET_ENVIRONMENT_VARIABLE": {
+ "doc": "`GET_ENVIRONMENT_VARIABLE` \u2014 Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nNote that `GET_ENVIRONMENT_VARIABLE` need not be thread-safe. It\nis the responsibility of the user to ensure that the environment is\nnot being updated concurrently with a call to the\n`GET_ENVIRONMENT_VARIABLE` intrinsic.\n\n\n\n\n### Syntax\n`CALL GET_ENVIRONMENT_VARIABLE(NAME[, VALUE, LENGTH, STATUS, TRIM_NAME)`\n\n\n### Arguments\n\n \n\nand of default kind. \n\n | `VALUE` | (Optional) Shall be a scalar of type `CHARACTER`and of default kind. \n\n | `LENGTH` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `STATUS` | (Optional) Shall be a scalar of type `INTEGER`and of default kind. \n\n | `TRIM_NAME` | (Optional) Shall be a scalar of type `LOGICAL`and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks. Argument `LENGTH`\ncontains the length needed for storing the environment variable `NAME`\nor zero if it is not present. `STATUS` is -1 if `VALUE` is present\nbut too short for the environment variable; it is 1 if the environment\nvariable does not exist and 2 if the processor does not support environment\nvariables; in all other cases `STATUS` is zero. If `TRIM_NAME` is\npresent with the value `.FALSE.`, the trailing blanks in `NAME`\nare significant; otherwise they are not part of the environment variable\nname.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n\u00a0\u00a0CHARACTER(len=255) :: homedir\n\n\u00a0\u00a0CALL get_environment_variable(\"HOME\", homedir)\n\n\u00a0\u00a0WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "LSTAT": {
+ "doc": "`LSTAT` \u2014 Get file status\n\n### Description\n`LSTAT` is identical to STAT, except that if path is a\nsymbolic link, then the link itself is statted, not the file that it\nrefers to.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LSTAT(NAME, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n of the default\nkind, a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. \nReturns 0 on success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a file: STAT\n"
+ },
+ "EOSHIFT": {
+ "doc": "`EOSHIFT` \u2014 End-off shift elements of an array\n\n### Description\n`EOSHIFT(ARRAY, SHIFT[, BOUNDARY, DIM])` performs an end-off shift on\nelements of `ARRAY` along the dimension of `DIM`. If `DIM` is\nomitted it is taken to be `1`. `DIM` is a scalar of type\n`INTEGER` in the range of 1 \\leq DIM \\leq n) where n is the\nrank of `ARRAY`. If the rank of `ARRAY` is one, then all elements of\n`ARRAY` are shifted by `SHIFT` places. If rank is greater than one,\nthen all complete rank one sections of `ARRAY` along the given dimension are\nshifted. Elements shifted out one end of each rank one section are dropped. If\n`BOUNDARY` is present then the corresponding value of from `BOUNDARY`\nis copied back in the other end. If `BOUNDARY` is not present then the\nfollowing are copied in depending on the type of `ARRAY`.\n\n \n\n\n | Numeric | 0 of the type and kind of `ARRAY`. \n\n | Logical | `.FALSE.`. \n\n | Character(`len`) | `len` blanks.\n\n\n\n\n\n\n### Syntax\n`RESULT = EOSHIFT(ARRAY, SHIFT [, BOUNDARY, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | May be any type, not scalar. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `BOUNDARY` | Same type as `ARRAY`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_eoshift\n\n\u00a0\u00a0\u00a0\u00a0integer, dimension(3,3) :: a\n\n\u00a0\u00a0\u00a0\u00a0a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(3,:)\n\n\u00a0\u00a0\u00a0\u00a0a = EOSHIFT(a, SHIFT=(/1, 2, 1/), BOUNDARY=-5, DIM=2)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(3,:)\n\nend program test_eoshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "POPCNT": {
+ "doc": "`POPCNT` \u2014 Number of bits set\n\n### Description\n`POPCNT(I)` returns the number of bits set ('1' bits) in the binary\nrepresentation of `I`.\n\n\n\n### Syntax\n`RESULT = POPCNT(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n\u00a0\u00a0print *, popcnt(127), poppar(127)\n\n\u00a0\u00a0print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n\u00a0\u00a0print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPPAR, LEADZ, TRAILZ\n\n\n"
+ },
+ "COSD": {
+ "doc": "`COSD` \u2014 Cosine function, degrees\n\n### Description\nCOSD(X) computes the cosine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COSD(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees. If X is of the type REAL, the return value lies in the range -1 \\leq \\cosd (x) \\leq 1.\n"
+ },
+ "ATOMIC_FETCH_ADD": {
+ "doc": "`ATOMIC_FETCH_ADD` \u2014 Atomic ADD operation with prior fetch\n\n### Description\n`ATOMIC_FETCH_ADD(ATOM, VALUE, OLD)` atomically stores the value of\n`ATOM` in `OLD` and adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_ADD (ATOM, VALUE, old [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*], old\n\n\u00a0\u00a0call atomic_add (atom[1], this_image(), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_ADD, ISO_FORTRAN_ENV,\nATOMIC_FETCH_AND, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n"
+ },
+ "PRESENT": {
+ "doc": "`PRESENT` \u2014 Determine whether an optional dummy argument is specified\n\n### Description\nDetermines whether an optional dummy argument is present.\n\n\n\n### Syntax\n`RESULT = PRESENT(A)`\n\n\n### Arguments\n\n \n | `A` | May be of any type and may be a pointer, scalar or array\nvalue, or a dummy procedure. It shall be the name of an optional dummy argument\naccessible within the current subroutine or function.\n\n\n\n\n\n\n### Return value\nReturns either `TRUE` if the optional argument `A` is present, or\n`FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_present\n\n\u00a0\u00a0WRITE(*,*) f(), f(42) ! \"F T\"\n\nCONTAINS\n\n\u00a0\u00a0LOGICAL FUNCTION f(x)\n\n\u00a0\u00a0\u00a0\u00a0INTEGER, INTENT(IN), OPTIONAL :: x\n\n\u00a0\u00a0\u00a0\u00a0f = PRESENT(x)\n\n\u00a0\u00a0END FUNCTION\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "LLT": {
+ "doc": "`LLT` \u2014 Lexical less than\n\n### Description\nDetermines whether one string is lexically less than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LLT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A < STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LLT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LGT, LLE\n"
+ },
+ "ATOMIC_FETCH_XOR": {
+ "doc": "`ATOMIC_FETCH_XOR` \u2014 Atomic bitwise XOR operation with prior fetch\n\n### Description\n`ATOMIC_XOR(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise XOR between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_XOR (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*], old\n\n\u00a0\u00a0call atomic_fetch_xor (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_XOR, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR\n"
+ },
+ "SHIFTR": {
+ "doc": "`SHIFTR` \u2014 Right shift\n\n### Description\n`SHIFTR` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost, and bits shifted in from\nthe left end are set to 0.\n\n\n\n### Syntax\n`RESULT = SHIFTR(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTA, SHIFTL\n"
+ },
+ "COTAND": {
+ "doc": "`COTAND` \u2014 Cotangent function, degrees\n\n### Description\nCOTAND(X) computes the cotangent of X in degrees. Equivalent to COSD(x) divided by SIND(x), or 1 / TAND(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
+ },
+ "LEN": {
+ "doc": "`LEN` \u2014 Length of a character entity\n\n### Description\nReturns the length of a character string. If `STRING` is an array,\nthe length of an element of `STRING` is returned. Note that\n`STRING` need not be defined when this intrinsic is invoked, since\nonly the length, not the content, of `STRING` is needed.\n\n\n\n### Syntax\n`L = LEN(STRING [, KIND])`\n\n\n### Arguments\n\n \n | `STRING` | Shall be a scalar or array of type\n`CHARACTER`, with `INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LEN(STRING)` | `CHARACTER` | `INTEGER` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLEN_TRIM, ADJUSTL, ADJUSTR\n"
+ },
+ "GAMMA": {
+ "doc": "`GAMMA` \u2014 Gamma function\n\n### Description\n`GAMMA(X)` computes Gamma (\\Gamma) of `X`. For positive,\ninteger values of `X` the Gamma function simplifies to the factorial\nfunction \\Gamma(x)=(x-1)!.\n\n\n\n### Syntax\n`X = GAMMA(X)`\n\n\n### Arguments\n\n \n and neither zero\nnor a negative integer.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_gamma\n\n\u00a0\u00a0real :: x = 1.0\n\n\u00a0\u00a0x = gamma(x) ! returns 1.0\n\nend program test_gamma\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `GAMMA(X)` | `REAL(4) X` | `REAL(4)` | GNU Extension\n\n | `DGAMMA(X)` | `REAL(8) X` | `REAL(8)` | GNU Extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLogarithm of the Gamma function: LOG_GAMMA\n\n "
+ },
+ "CEILING": {
+ "doc": "`CEILING` \u2014 Integer ceiling function\n\n### Description\n`CEILING(A)` returns the least integer greater than or equal to `A`.\n\n\n\n### Syntax\n`RESULT = CEILING(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(KIND)` if `KIND` is present\nand a default-kind `INTEGER` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_ceiling\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 63.29\n\n\u00a0\u00a0\u00a0\u00a0real :: y = -63.59\n\n\u00a0\u00a0\u00a0\u00a0print *, ceiling(x) ! returns 64\n\n\u00a0\u00a0\u00a0\u00a0print *, ceiling(y) ! returns -63\n\nend program test_ceiling\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nFLOOR, NINT\n\n "
+ },
+ "TRAILZ": {
+ "doc": "`TRAILZ` \u2014 Number of trailing zero bits of an integer\n\n### Description\n`TRAILZ` returns the number of trailing zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = TRAILZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trailz\n\n\u00a0\u00a0WRITE (*,*) TRAILZ(8) ! prints 3\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, LEADZ, POPPAR, POPCNT\n"
+ },
+ "ASINH": {
+ "doc": "`ASINH` \u2014 Inverse hyperbolic sine function\n\n### Description\n`ASINH(X)` computes the inverse hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = ASINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n-\\pi/2 \\leq \\Im \\asinh(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nPROGRAM test_asinh\n\n\u00a0\u00a0REAL(8), DIMENSION(3) :: x = (/ -1.0, 0.0, 1.0 /)\n\n\u00a0\u00a0WRITE (*,*) ASINH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DASINH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension.\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SINH\n"
+ },
+ "SCAN": {
+ "doc": "`SCAN` \u2014 Scan a string for the presence of a set of characters\n\n### Description\nScans a `STRING` for any of the characters in a `SET`\nof characters.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nin `SET`. If `BACK` equals `TRUE`, the rightmost position\nis returned. If no character of `SET` is found in `STRING`, the\nresult is zero.\n\n\n\n\n### Syntax\n`RESULT = SCAN(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_scan\n\n\u00a0\u00a0WRITE(*,*) SCAN(\"FORTRAN\", \"AO\") ! 2, found 'O'\n\n\u00a0\u00a0WRITE(*,*) SCAN(\"FORTRAN\", \"AO\", .TRUE.) ! 6, found 'A'\n\n\u00a0\u00a0WRITE(*,*) SCAN(\"FORTRAN\", \"C++\") ! 0, found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, VERIFY\n"
+ },
+ "COTAN": {
+ "doc": "`COTAN` \u2014 Cotangent function\n\n### Description\nCOTAN(X) computes the cotangent of X. Equivalent to COS(x) divided by SIN(x), or 1 / TAN(x).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = COTAN(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in radians.\n"
+ },
+ "MINVAL": {
+ "doc": "`MINVAL` \u2014 Minimum value of an array\n\n### Description\nDetermines the minimum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the minimum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `HUGE(ARRAY)` if\n`ARRAY` is numeric, or a string of `CHAR(255)` characters if\n`ARRAY` is of character type.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINVAL(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINLOC\n\n "
+ },
+ "MINEXPONENT": {
+ "doc": "`MINEXPONENT` \u2014 Minimum exponent of a real kind\n\n### Description\n`MINEXPONENT(X)` returns the minimum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MINEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\nSee `MAXEXPONENT` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "IANY": {
+ "doc": "`IANY` \u2014 Bitwise OR of array elements\n\n### Description\nReduces with bitwise OR (inclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IANY(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise OR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iany\n\n\u00a0\u00a0INTEGER(1) :: a(2)\n\n\n\u00a0\u00a0a(1) = b'00100100'\n\n\u00a0\u00a0a(2) = b'01101010'\n\n\n\u00a0\u00a0! prints 01101110\n\n\u00a0\u00a0PRINT '(b8.8)', IANY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIPARITY, IALL, IOR\n"
+ },
+ "ADJUSTR": {
+ "doc": "`ADJUSTR` \u2014 Right adjust a string\n\n### Description\n`ADJUSTR(STRING)` will right adjust a string by removing trailing spaces. \nSpaces are inserted at the start of the string as needed.\n\n\n\n### Syntax\n`RESULT = ADJUSTR(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` and of the same kind as\n`STRING` where trailing spaces are removed and the same number of\nspaces are inserted at the start of `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_adjustr\n\n\u00a0\u00a0character(len=20) :: str = 'gfortran'\n\n\u00a0\u00a0str = adjustr(str)\n\n\u00a0\u00a0print *, str\n\nend program test_adjustr\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nADJUSTL, TRIM\n"
+ },
+ "EXECUTE_COMMAND_LINE": {
+ "doc": "`EXECUTE_COMMAND_LINE` \u2014 Execute a shell command\n\n### Description\n`EXECUTE_COMMAND_LINE` runs a shell command, synchronously or\nasynchronously.\n\n \nThe `COMMAND` argument is passed to the shell and executed, using\nthe C library's `system` call. (The shell is `sh` on Unix\nsystems, and `cmd.exe` on Windows.) If `WAIT` is present\nand has the value false, the execution of the command is asynchronous\nif the system supports it; otherwise, the command is executed\nsynchronously.\n\n \n\nThe three last arguments allow the user to get status information. After\nsynchronous execution, `EXITSTAT` contains the integer exit code of\nthe command, as returned by `system`. `CMDSTAT` is set to zero\nif the command line was executed (whatever its exit status was). \n`CMDMSG` is assigned an error message if an error has occurred.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n`CALL EXECUTE_COMMAND_LINE(COMMAND [, WAIT, EXITSTAT, CMDSTAT, CMDMSG ])`\n\n\n### Arguments\n\n \n scalar. \n\n | `WAIT` | (Optional) Shall be a default `LOGICAL` scalar. \n\n | `EXITSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDSTAT` | (Optional) Shall be an `INTEGER` of the\ndefault kind. \n\n | `CMDMSG` | (Optional) Shall be an `CHARACTER` scalar of the\ndefault kind.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_exec\n\n\u00a0\u00a0integer :: i\n\n\n\u00a0\u00a0call execute_command_line (\"external_prog.exe\", exitstat=i)\n\n\u00a0\u00a0print *, \"Exit status of external_prog.exe was \", i\n\n\n\u00a0\u00a0call execute_command_line (\"reindex_files.exe\", wait=.false.)\n\n\u00a0\u00a0print *, \"Now reindexing files in the background\"\n\n\nend program test_exec\n\n```\n\n\n\n### Notes\n\nBecause this intrinsic is implemented in terms of the `system`function call, its behavior with respect to signaling is processor\ndependent. In particular, on POSIX-compliant systems, the SIGINT and\nSIGQUIT signals will be ignored, and the SIGCHLD will be blocked. As\nsuch, if the parent process is terminated, the child process might not be\nterminated alongside.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM\n"
+ },
+ "SRAND": {
+ "doc": "`SRAND` \u2014 Reinitialize the random number generator\n\n### Description\n`SRAND` reinitializes the pseudo-random number generator\ncalled by `RAND` and `IRAND`. The new seed used by the\ngenerator is specified by the required argument `SEED`.\n\n\n\n### Syntax\n`CALL SRAND(SEED)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\nSee `RAND` and `IRAND` for examples.\n\n\n\n### Notes\nThe Fortran standard specifies the intrinsic subroutines\n`RANDOM_SEED` to initialize the pseudo-random number\ngenerator and `RANDOM_NUMBER` to generate pseudo-random numbers. \nThese subroutines should be used in new codes.\n\n \nPlease note that in GNU Fortran, these two sets of intrinsics (`RAND`,\n`IRAND` and `SRAND` on the one hand, `RANDOM_NUMBER` and\n`RANDOM_SEED` on the other hand) access two independent\npseudo-random number generators.\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRAND, RANDOM_SEED, RANDOM_NUMBER\n\n "
+ },
+ "EXPONENT": {
+ "doc": "`EXPONENT` \u2014 Exponent function\n\n### Description\n`EXPONENT(X)` returns the value of the exponent part of `X`. If `X`\nis zero the value returned is zero.\n\n\n\n### Syntax\n`RESULT = EXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type default `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_exponent\n\n\u00a0\u00a0real :: x = 1.0\n\n\u00a0\u00a0integer :: i\n\n\u00a0\u00a0i = exponent(x)\n\n\u00a0\u00a0print *, i\n\n\u00a0\u00a0print *, exponent(0.0)\n\nend program test_exponent\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "MERGE_BITS": {
+ "doc": "`MERGE_BITS` \u2014 Merge of bits under mask\n\n### Description\n`MERGE_BITS(I, J, MASK)` merges the bits of `I` and `J`\nas determined by the mask. The i-th bit of the result is equal to the\ni-th bit of `I` if the i-th bit of `MASK` is 1; it is equal to\nthe i-th bit of `J` otherwise.\n\n\n\n### Syntax\n`RESULT = MERGE_BITS(I, J, MASK)`\n\n\n### Arguments\n\n \n. \n\n | `J` | Shall be of type `INTEGER` and of the same\nkind as `I`. \n\n | `MASK` | Shall be of type `INTEGER` and of the same\nkind as `I`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and kind as `I`.\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "UMASK": {
+ "doc": "`UMASK` \u2014 Set the file creation mask\n\n### Description\nSets the file creation mask to `MASK`. If called as a function, it\nreturns the old value. If called as a subroutine and argument `OLD`\nif it is supplied, it is set to the old value. See `umask(2)`.\n\n\n\n### Syntax\n\n \n\n\n | `OLD = UMASK(MASK)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `OLD` | (Optional) Shall be a scalar of type\n`INTEGER`.\n\n\n\n \n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
+ },
+ "UCOBOUND": {
+ "doc": "`UCOBOUND` \u2014 Upper codimension bounds of an array\n\n### Description\nReturns the upper cobounds of a coarray, or a single upper cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = UCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLCOBOUND, LBOUND\n"
+ },
+ "ASIND": {
+ "doc": "`ASIND` \u2014 Arcsine function, degrees\n\n### Description\nASIND(X) computes the arcsine of its X in degrees (inverse of SIND(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ASIND(X)\n### Arguments\n- X: The type shall be either REAL and a magnitude that is less than or equal to one - or be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range -90 \\leq \\Re \\asin(x) \\leq 90.\n"
+ },
+ "HOSTNM": {
+ "doc": "`HOSTNM` \u2014 Get system host name\n\n### Description\nRetrieves the host name of the system on which the program is running.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = HOSTNM(NAME)` \n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, or a system specific error code otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `NAME` is set to the current hostname if it can\nbe obtained, or to a blank string otherwise.\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
+ },
+ "C_LOC": {
+ "doc": "`C_LOC` \u2014 Obtain the C address of an object\n\n### Description\n`C_LOC(X)` determines the C address of the argument.\n\n\n\n### Syntax\n`RESULT = C_LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Shall have either the POINTER or TARGET attribute. It shall not be a coindexed object. It shall either be a variable with interoperable type and kind type parameters, or be a scalar, nonpolymorphic variable with no length type parameters.\n\n\n\n\n\n\n\n### Return value\nThe return value is of type `C_PTR` and contains the C address\nof the argument.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n\u00a0\u00a0use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0real, pointer :: a\n\n\u00a0\u00a0type(c_ptr) :: b\n\n\u00a0\u00a0if(c_associated(b, c_loc(a))) &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_ASSOCIATED, C_FUNLOC, C_F_POINTER, C_F_PROCPOINTER\n"
+ },
+ "TANH": {
+ "doc": "`TANH` \u2014 Hyperbolic tangent function\n\n### Description\n`TANH(X)` computes the hyperbolic tangent of `X`.\n\n\n\n### Syntax\n`X = TANH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value lies in the range\n - 1 \\leq tanh(x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_tanh\n\n\u00a0\u00a0real(8) :: x = 2.1_8\n\n\u00a0\u00a0x = tanh(x)\n\nend program test_tanh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TANH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTANH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATANH\n"
+ },
+ "COMMAND_ARGUMENT_COUNT": {
+ "doc": "`COMMAND_ARGUMENT_COUNT` \u2014 Get number of command line arguments\n\n### Description\n`COMMAND_ARGUMENT_COUNT` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n\n\n### Syntax\n`RESULT = COMMAND_ARGUMENT_COUNT()`\n\n\n### Arguments\n\n \n | None\n\n\n\n\n\n\n### Return value\nThe return value is an `INTEGER` of default kind.\n\n\n\n### Example\n```\n\n\nprogram test_command_argument_count\n\n\u00a0\u00a0\u00a0\u00a0integer :: count\n\n\u00a0\u00a0\u00a0\u00a0count = command_argument_count()\n\n\u00a0\u00a0\u00a0\u00a0print *, count\n\nend program test_command_argument_count\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nGET_COMMAND, GET_COMMAND_ARGUMENT\n"
+ },
+ "INT": {
+ "doc": "`INT` \u2014 Convert to integer type\n\n### Description\nConvert to integer type\n\n\n\n### Syntax\n`RESULT = INT(A [, KIND))`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThese functions return a `INTEGER` variable or array under\nthe following rules:\n\n \n**(A)** If `A` is of type `INTEGER`, `INT(A) = A`\n**(B)** If `A` is of type `REAL` and |A| < 1, `INT(A)`equals `0`. If |A| \\geq 1, then `INT(A)` is the integer\nwhose magnitude is the largest integer that does not exceed the magnitude\nof `A` and whose sign is the same as the sign of `A`. \n\n**(C)** If `A` is of type `COMPLEX`, rule B is applied to the real part of `A`. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_int\n\n\u00a0\u00a0integer :: i = 42\n\n\u00a0\u00a0complex :: z = (-3.7, 1.0)\n\n\u00a0\u00a0print *, int(i)\n\n\u00a0\u00a0print *, int(z), int(z,8)\n\nend program\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `INT(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IFIX(A)` | `REAL(4) A` | `INTEGER` | Fortran 77 and later\n\n | `IDINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 77 and later\n\n\n\n \n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "BIT_SIZE": {
+ "doc": "`BIT_SIZE` \u2014 Bit size inquiry function\n\n### Description\n`BIT_SIZE(I)` returns the number of bits (integer precision plus sign bit)\nrepresented by the type of `I`. The result of `BIT_SIZE(I)` is\nindependent of the actual value of `I`.\n\n\n\n### Syntax\n`RESULT = BIT_SIZE(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`\n\n\n### Example\n```\n\n\nprogram test_bit_size\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 123\n\n\u00a0\u00a0\u00a0\u00a0integer :: size\n\n\u00a0\u00a0\u00a0\u00a0size = bit_size(i)\n\n\u00a0\u00a0\u00a0\u00a0print *, size\n\nend program test_bit_size\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "CO_MAX": {
+ "doc": "`CO_MAX` \u2014 Maximal value on the current set of images\n\n### Description\n`CO_MAX` determines element-wise the maximal value of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the maximum\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MAX(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or character variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n\u00a0\u00a0integer :: val\n\n\u00a0\u00a0val = this_image ()\n\n\u00a0\u00a0call co_max (val, result_image=1)\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0write(*,*) \"Maximal value\", val ! prints num_images()\n\n\u00a0\u00a0end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_SUM, CO_REDUCE, CO_BROADCAST\n"
+ },
+ "CSHIFT": {
+ "doc": "`CSHIFT` \u2014 Circular shift elements of an array\n\n### Description\n`CSHIFT(ARRAY, SHIFT [, DIM])` performs a circular shift on elements of\n`ARRAY` along the dimension of `DIM`. If `DIM` is omitted it is\ntaken to be `1`. `DIM` is a scalar of type `INTEGER` in the\nrange of 1 \\leq DIM \\leq n) where n is the rank of `ARRAY`. \nIf the rank of `ARRAY` is one, then all elements of `ARRAY` are shifted\nby `SHIFT` places. If rank is greater than one, then all complete rank one\nsections of `ARRAY` along the given dimension are shifted. Elements\nshifted out one end of each rank one section are shifted back in the other end.\n\n\n\n### Syntax\n`RESULT = CSHIFT(ARRAY, SHIFT [, DIM])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `DIM` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nReturns an array of same type and rank as the `ARRAY` argument.\n\n\n\n### Example\n```\n\n\nprogram test_cshift\n\n\u00a0\u00a0\u00a0\u00a0integer, dimension(3,3) :: a\n\n\u00a0\u00a0\u00a0\u00a0a = reshape( (/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), (/ 3, 3 /))\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(3,:)\n\n\u00a0\u00a0\u00a0\u00a0a = cshift(a, SHIFT=(/1, 2, -1/), DIM=2)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(3,:)\n\nend program test_cshift\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "COS": {
+ "doc": "`COS` \u2014 Cosine function\n\n### Description\n`COS(X)` computes the cosine of `X`.\n\n\n\n### Syntax\n`RESULT = COS(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. The real part\nof the result is in radians. If `X` is of the type `REAL`,\nthe return value lies in the range -1 \\leq \\cos (x) \\leq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cos\n\n\u00a0\u00a0real :: x = 0.0\n\n\u00a0\u00a0x = cos(x)\n\nend program test_cos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CCOS(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDCOS(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOS\n\n "
+ },
+ "RAND": {
+ "doc": "`RAND` \u2014 Real pseudo-random number\n\n### Description\n`RAND(FLAG)` returns a pseudo-random number from a uniform\ndistribution between 0 and 1. If `FLAG` is 0, the next number\nin the current sequence is returned; if `FLAG` is 1, the generator\nis restarted by `CALL SRAND(0)`; if `FLAG` has any other value,\nit is used as a new seed with `SRAND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. It implements a simple modulo generator as provided\nby *g77*. For new code, one should consider the use of\nRANDOM_NUMBER as it implements a superior algorithm.\n\n\n\n\n### Syntax\n`RESULT = RAND(I)`\n\n\n### Arguments\n\n \n of kind 4.\n\n\n\n\n\n\n### Return value\nThe return value is of `REAL` type and the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_rand\n\n\u00a0\u00a0integer,parameter :: seed = 86456\n\n\n\u00a0\u00a0call srand(seed)\n\n\u00a0\u00a0print *, rand(), rand(), rand(), rand()\n\n\u00a0\u00a0print *, rand(seed), rand(), rand(), rand()\n\nend program test_rand\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nSRAND, RANDOM_NUMBER\n\n "
+ },
+ "SYSTEM_CLOCK": {
+ "doc": "`SYSTEM_CLOCK` \u2014 Time function\n\n### Description\nDetermines the `COUNT` of a processor clock since an unspecified\ntime in the past modulo `COUNT_MAX`, `COUNT_RATE` determines\nthe number of clock ticks per second. If the platform supports a\nmonotonic clock, that clock is used and can, depending on the platform\nclock implementation, provide up to nanosecond resolution. If a\nmonotonic clock is not available, the implementation falls back to a\nrealtime clock.\n\n \n`COUNT_RATE` is system dependent and can vary depending on the kind of\nthe arguments. For `kind=4` arguments (and smaller integer kinds),\n`COUNT` represents milliseconds, while for `kind=8` arguments (and\nlarger integer kinds), `COUNT` typically represents micro- or\nnanoseconds depending on resolution of the underlying platform clock. \n`COUNT_MAX` usually equals `HUGE(COUNT_MAX)`. Note that the\nmillisecond resolution of the `kind=4` version implies that the\n`COUNT` will wrap around in roughly 25 days. In order to avoid issues\nwith the wrap around and for more precise timing, please use the\n`kind=8` version.\n\n \n\nIf there is no clock, or querying the clock fails, `COUNT` is set\nto `-HUGE(COUNT)`, and `COUNT_RATE` and `COUNT_MAX` are\nset to zero.\n\n \n\nWhen running on a platform using the GNU C library (glibc) version\n2.16 or older, or a derivative thereof, the high resolution monotonic\nclock is available only when linking with the `rt` library. This\ncan be done explicitly by adding the `-lrt` flag when linking the\napplication, but is also done implicitly when using OpenMP.\n\n \n\nOn the Windows platform, the version with `kind=4` arguments uses\nthe `GetTickCount` function, whereas the `kind=8` version\nuses `QueryPerformanceCounter` and\n`QueryPerformanceCounterFrequency`. For more information, and\npotential caveats, please see the platform documentation.\n\n\n\n\n### Syntax\n`CALL SYSTEM_CLOCK([COUNT, COUNT_RATE, COUNT_MAX])`\n\n\n### Arguments\n\n \n | `COUNT` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`. \n\n | `COUNT_RATE` | (Optional) shall be a scalar of type\n`INTEGER` or `REAL`, with `INTENT(OUT)`. \n\n | `COUNT_MAX` | (Optional) shall be a scalar of type\n`INTEGER` with `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_system_clock\n\n\u00a0\u00a0INTEGER :: count, count_rate, count_max\n\n\u00a0\u00a0CALL SYSTEM_CLOCK(count, count_rate, count_max)\n\n\u00a0\u00a0WRITE(*,*) count, count_rate, count_max\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nDATE_AND_TIME, CPU_TIME\n"
+ },
+ "VERIFY": {
+ "doc": "`VERIFY` \u2014 Scan a string for characters not a given set\n\n### Description\nVerifies that all the characters in `STRING` belong to the set of\ncharacters in `SET`.\n\n \nIf `BACK` is either absent or equals `FALSE`, this function\nreturns the position of the leftmost character of `STRING` that is\nnot in `SET`. If `BACK` equals `TRUE`, the rightmost\nposition is returned. If all characters of `STRING` are found in\n`SET`, the result is zero.\n\n\n\n\n### Syntax\n`RESULT = VERIFY(STRING, SET[, BACK [, KIND]])`\n\n\n### Arguments\n\n \n. \n\n | `SET` | Shall be of type `CHARACTER`. \n\n | `BACK` | (Optional) shall be of type `LOGICAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_verify\n\n\u00a0\u00a0WRITE(*,*) VERIFY(\"FORTRAN\", \"AO\") ! 1, found 'F'\n\n\u00a0\u00a0WRITE(*,*) VERIFY(\"FORTRAN\", \"FOO\") ! 3, found 'R'\n\n\u00a0\u00a0WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\") ! 1, found 'F'\n\n\u00a0\u00a0WRITE(*,*) VERIFY(\"FORTRAN\", \"C++\", .TRUE.) ! 7, found 'N'\n\n\u00a0\u00a0WRITE(*,*) VERIFY(\"FORTRAN\", \"FORTRAN\") ! 0' found none\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSCAN, INDEX intrinsic\n"
+ },
+ "LOC": {
+ "doc": "`LOC` \u2014 Returns the address of a variable\n\n### Description\n`LOC(X)` returns the address of `X` as an integer.\n\n\n\n### Syntax\n`RESULT = LOC(X)`\n\n\n### Arguments\n\n \n | `X` | Variable of any type.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`, with a `KIND`corresponding to the size (in bytes) of a memory address on the target\nmachine.\n\n\n\n### Example\n```\n\n\nprogram test_loc\n\n\u00a0\u00a0integer :: i\n\n\u00a0\u00a0real :: r\n\n\u00a0\u00a0i = loc(r)\n\n\u00a0\u00a0print *, i\n\nend program test_loc\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "LNBLNK": {
+ "doc": "`LNBLNK` \u2014 Index of the last non-blank character in a string\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks. \nThis is identical to the standard `LEN_TRIM` intrinsic, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LNBLNK(STRING)`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)` \n\n\n\n\n\n### Return value\nThe return value is of `INTEGER(kind=4)` type.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINDEX intrinsic, LEN_TRIM\n"
+ },
+ "EPSILON": {
+ "doc": "`EPSILON` \u2014 Epsilon function\n\n### Description\n`EPSILON(X)` returns the smallest number `E` of the same kind\nas `X` such that 1 + E > 1.\n\n\n\n### Syntax\n`RESULT = EPSILON(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of same type as the argument.\n\n\n\n### Example\n```\n\n\nprogram test_epsilon\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 3.143\n\n\u00a0\u00a0\u00a0\u00a0real(8) :: y = 2.33\n\n\u00a0\u00a0\u00a0\u00a0print *, EPSILON(x)\n\n\u00a0\u00a0\u00a0\u00a0print *, EPSILON(y)\n\nend program test_epsilon\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "FGET": {
+ "doc": "`FGET` \u2014 Read a single character in stream mode from stdin\n\n### Description\nRead a single character in stream mode from stdin by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGET(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file, and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fget\n\n\u00a0\u00a0INTEGER, PARAMETER :: strlen = 100\n\n\u00a0\u00a0INTEGER :: status, i = 1\n\n\u00a0\u00a0CHARACTER(len=strlen) :: str = \"\"\n\n\n\u00a0\u00a0WRITE (*,*) 'Enter text:'\n\n\u00a0\u00a0DO\n\n\u00a0\u00a0\u00a0\u00a0CALL fget(str(i:i), status)\n\n\u00a0\u00a0\u00a0\u00a0if (status /= 0 .OR. i > strlen) exit\n\n\u00a0\u00a0\u00a0\u00a0i = i + 1\n\n\u00a0\u00a0END DO\n\n\u00a0\u00a0WRITE (*,*) TRIM(str)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGETC, FPUT, FPUTC\n"
+ },
+ "LGT": {
+ "doc": "`LGT` \u2014 Lexical greater than\n\n### Description\nDetermines whether one string is lexically greater than another string,\nwhere the two strings are interpreted as containing ASCII character\ncodes. If the String A and String B are not the same length, the\nshorter is compared as if spaces were appended to it to form a value\nthat has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGT(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A > STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGT(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGE, LLE, LLT\n"
+ },
+ "NEAREST": {
+ "doc": "`NEAREST` \u2014 Nearest representable number\n\n### Description\n`NEAREST(X, S)` returns the processor-representable number nearest\nto `X` in the direction indicated by the sign of `S`.\n\n\n\n### Syntax\n`RESULT = NEAREST(X, S)`\n\n\n### Arguments\n\n \n. \n\n | `S` | Shall be of type `REAL` and\nnot equal to zero.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type as `X`. If `S` is\npositive, `NEAREST` returns the processor-representable number\ngreater than `X` and nearest to it. If `S` is negative,\n`NEAREST` returns the processor-representable number smaller than\n`X` and nearest to it.\n\n\n\n### Example\n```\n\n\nprogram test_nearest\n\n\u00a0\u00a0real :: x, y\n\n\u00a0\u00a0x = nearest(42.0, 1.0)\n\n\u00a0\u00a0y = nearest(42.0, -1.0)\n\n\u00a0\u00a0write (*,\"(3(G20.15))\") x, y, x - y\n\nend program test_nearest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "RAN": {
+ "doc": "`RAN` \u2014 Real pseudo-random number\n\n### Description\nFor compatibility with HP FORTRAN 77/iX, the `RAN` intrinsic is\nprovided as an alias for `RAND`. See RAND for complete\ndocumentation.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nRAND, RANDOM_NUMBER\n"
+ },
+ "ASSOCIATED": {
+ "doc": "`ASSOCIATED` \u2014 Status of a pointer or pointer/target pair\n\n### Description\n`ASSOCIATED(POINTER [, TARGET])` determines the status of the pointer\n`POINTER` or if `POINTER` is associated with the target `TARGET`.\n\n\n\n### Syntax\n`RESULT = ASSOCIATED(POINTER [, TARGET])`\n\n\n### Arguments\n\n \n attribute\nand it can be of any type. \n\n | `TARGET` | (Optional) `TARGET` shall be a pointer or\na target. It must have the same type, kind type parameter, and\narray rank as `POINTER`.\n\n\nThe association status of neither `POINTER` nor `TARGET` shall be\nundefined.\n\n\n\n\n### Return value\n`ASSOCIATED(POINTER)` returns a scalar value of type `LOGICAL(4)`. \nThere are several cases:\n \n**(A) When the optional `TARGET` is not present then** `ASSOCIATED(POINTER)` is true if `POINTER` is associated with a target; otherwise, it returns false. \n\n**(B) If `TARGET` is present and a scalar target, the result is true if** `TARGET` is not a zero-sized storage sequence and the target associated with `POINTER` occupies the same storage units. If `POINTER` is\ndisassociated, the result is false. \n\n**(C) If `TARGET` is present and an array target, the result is true if** `TARGET` and `POINTER` have the same shape, are not zero-sized arrays,\nare arrays whose elements are not zero-sized storage sequences, and\n`TARGET` and `POINTER` occupy the same storage units in array element\norder. \nAs in case(B), the result is false, if `POINTER` is disassociated. \n\n**(D) If `TARGET` is present and an scalar pointer, the result is true** if `TARGET` is associated with `POINTER`, the target associated with\n`TARGET` are not zero-sized storage sequences and occupy the same storage\nunits. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n**(E) If `TARGET` is present and an array pointer, the result is true if** target associated with `POINTER` and the target associated with `TARGET`\nhave the same shape, are not zero-sized arrays, are arrays whose elements are\nnot zero-sized storage sequences, and `TARGET` and `POINTER` occupy\nthe same storage units in array element order. \nThe result is false, if either `TARGET` or `POINTER` is disassociated. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_associated\n\n\u00a0\u00a0\u00a0implicit none\n\n\u00a0\u00a0\u00a0real, target :: tgt(2) = (/1., 2./)\n\n\u00a0\u00a0\u00a0real, pointer :: ptr(:)\n\n\u00a0\u00a0\u00a0ptr => tgt\n\n\u00a0\u00a0\u00a0if (associated(ptr) .eqv. .false.) call abort\n\n\u00a0\u00a0\u00a0if (associated(ptr,tgt) .eqv. .false.) call abort\n\nend program test_associated\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nNULL\n"
+ },
+ "ASIN": {
+ "doc": "`ASIN` \u2014 Arcsine function\n\n### Description\n`ASIN(X)` computes the arcsine of its `X` (inverse of `SIN(X)`).\n\n\n\n### Syntax\n`RESULT = ASIN(X)`\n\n\n### Arguments\n\n \n and a magnitude that is\nless than or equal to one - or be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\asin(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_asin\n\n\u00a0\u00a0real(8) :: x = 0.866_8\n\n\u00a0\u00a0x = asin(x)\n\nend program test_asin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ASIN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DASIN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: SIN\n\n "
+ },
+ "SECOND": {
+ "doc": "`SECOND` \u2014 CPU time function\n\n### Description\nReturns a `REAL(4)` value representing the elapsed CPU time in\nseconds. This provides the same functionality as the standard\n`CPU_TIME` intrinsic, and is only included for backwards\ncompatibility.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `TIME = SECOND()` \n\n\n\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nIn either syntax, `TIME` is set to the process's current runtime in\nseconds.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
+ },
+ "NORM2": {
+ "doc": "`NORM2` \u2014 Euclidean vector norms\n\n### Description\nCalculates the Euclidean vector norm (L_2 norm) of\nof `ARRAY` along dimension `DIM`.\n\n\n\n### Syntax\n\n \n\n\n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the square root of the sum of all\nelements in `ARRAY` squared is returned. Otherwise, an array of\nrank n-1, where n equals the rank of `ARRAY`, and a\nshape similar to that of `ARRAY` with dimension `DIM` dropped\nis returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_sum\n\n\u00a0\u00a0REAL :: x(5) = [ real :: 1, 2, 3, 4, 5 ]\n\n\u00a0\u00a0print *, NORM2(x) ! = sqrt(55.) ~ 7.416\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "ICHAR": {
+ "doc": "`ICHAR` \u2014 Character-to-integer conversion function\n\n### Description\n`ICHAR(C)` returns the code for the character in the first character\nposition of `C` in the system's native character set. \nThe correspondence between characters and their codes is not necessarily\nthe same across different GNU Fortran implementations.\n\n\n\n### Syntax\n`RESULT = ICHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_ichar\n\n\u00a0\u00a0integer i\n\n\u00a0\u00a0i = ichar(' ')\n\nend program test_ichar\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ICHAR(C)` | `CHARACTER C` | `INTEGER(4)` | Fortran 77 and later\n\n\n\n\n\n\n### Notes\nNo intrinsic exists to convert between a numeric value and a formatted\ncharacter string representation \u2013 for instance, given the\n`CHARACTER` value `'154'`, obtaining an `INTEGER` or\n`REAL` value with the value 154, or vice versa. Instead, this\nfunctionality is provided by internal-file I/O, as in the following\nexample:\n program read_val\n integer value\n character(len=10) string, string2\n string = '154'\n \n ! Convert a string to a numeric value\n read (string,'(I10)') value\n print *, value\n \n ! Convert a value to a formatted string\n write (string2,'(I10)') value\n print *, string2\n end program read_val\n \n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, IACHAR\n\n "
+ },
+ "ANINT": {
+ "doc": "`ANINT` \u2014 Nearest whole number\n\n### Description\n`ANINT(A [, KIND])` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = ANINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type real with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If `A` is greater than\nzero, `ANINT(A)` returns `AINT(X+0.5)`. If `A` is\nless than or equal to zero then it returns `AINT(X-0.5)`.\n\n\n\n### Example\n```\n\n\nprogram test_anint\n\n\u00a0\u00a0real(4) x4\n\n\u00a0\u00a0real(8) x8\n\n\u00a0\u00a0x4 = 1.234E0_4\n\n\u00a0\u00a0x8 = 4.321_8\n\n\u00a0\u00a0print *, anint(x4), dnint(x8)\n\n\u00a0\u00a0x8 = anint(x4,8)\n\nend program test_anint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DNINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ISNAN": {
+ "doc": "`ISNAN` \u2014 Test for a NaN\n\n### Description\n`ISNAN` tests whether a floating-point value is an IEEE\nNot-a-Number (NaN). \n\n\n### Syntax\n`ISNAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n\n### Return value\nReturns a default-kind `LOGICAL`. The returned value is `TRUE`if `X` is a NaN and `FALSE` otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_nan\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0real :: x\n\n\u00a0\u00a0x = -1.0\n\n\u00a0\u00a0x = sqrt(x)\n\n\u00a0\u00a0if (isnan(x)) stop '\"x\" is a NaN'\n\nend program test_nan\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "FSEEK": {
+ "doc": "`FSEEK` \u2014 Low level file positioning subroutine\n\n### Description\nMoves `UNIT` to the specified `OFFSET`. If `WHENCE`\nis set to 0, the `OFFSET` is taken as an absolute value `SEEK_SET`,\nif set to 1, `OFFSET` is taken to be relative to the current position\n`SEEK_CUR`, and if set to 2 relative to the end of the file `SEEK_END`. \nOn error, `STATUS` is set to a nonzero value. If `STATUS` the seek\nfails silently.\n\n \nThis intrinsic routine is not fully backwards compatible with *g77*. \nIn *g77*, the `FSEEK` takes a statement label instead of a\n`STATUS` variable. If FSEEK is used in old code, change\n \n CALL FSEEK(UNIT, OFFSET, WHENCE, *label)\n \n \nto\n \n INTEGER :: status\n CALL FSEEK(UNIT, OFFSET, WHENCE, status)\n IF (status /= 0) GOTO label\n \n \nPlease note that GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n`CALL FSEEK(UNIT, OFFSET, WHENCE[, STATUS])`\n\n\n### Arguments\n\n \n. \n\n | `OFFSET` | Shall be a scalar of type `INTEGER`. \n\n | `WHENCE` | Shall be a scalar of type `INTEGER`. \nIts value shall be either 0, 1 or 2. \n\n | `STATUS` | (Optional) shall be a scalar of type\n`INTEGER(4)`.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fseek\n\n\u00a0\u00a0INTEGER, PARAMETER :: SEEK_SET = 0, SEEK_CUR = 1, SEEK_END = 2\n\n\u00a0\u00a0INTEGER :: fd, offset, ierr\n\n\n\u00a0\u00a0ierr = 0\n\n\u00a0\u00a0offset = 5\n\n\u00a0\u00a0fd = 10\n\n\n\u00a0\u00a0OPEN(UNIT=fd, FILE=\"fseek.test\")\n\n\u00a0\u00a0CALL FSEEK(fd, offset, SEEK_SET, ierr) ! move to OFFSET\n\n\u00a0\u00a0print *, FTELL(fd), ierr\n\n\n\u00a0\u00a0CALL FSEEK(fd, 0, SEEK_END, ierr) ! move to end\n\n\u00a0\u00a0print *, FTELL(fd), ierr\n\n\n\u00a0\u00a0CALL FSEEK(fd, 0, SEEK_SET, ierr) ! move to beginning\n\n\u00a0\u00a0print *, FTELL(fd), ierr\n\n\n\u00a0\u00a0CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nFTELL\n"
+ },
+ "UNLINK": {
+ "doc": "`UNLINK` \u2014 Remove a file from the file system\n\n### Description\nUnlinks the file `PATH`. A null character (`CHAR(0)`) can be\nused to mark the end of the name in `PATH`; otherwise, trailing\nblanks in the file name are ignored. If the `STATUS` argument is\nsupplied, it contains 0 on success or a nonzero error code upon return;\nsee `unlink(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = UNLINK(PATH)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK, SYMLNK\n"
+ },
+ "LEADZ": {
+ "doc": "`LEADZ` \u2014 Number of leading zero bits of an integer\n\n### Description\n`LEADZ` returns the number of leading zero bits of an integer.\n\n\n\n### Syntax\n`RESULT = LEADZ(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe type of the return value is the default `INTEGER`. \nIf all the bits of `I` are zero, the result value is `BIT_SIZE(I)`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_leadz\n\n\u00a0\u00a0WRITE (*,*) BIT_SIZE(1) ! prints 32\n\n\u00a0\u00a0WRITE (*,*) LEADZ(1) ! prints 31\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, TRAILZ, POPCNT, POPPAR\n"
+ },
+ "ACCESS": {
+ "doc": "`ACCESS` \u2014 Checks file access modes\n\n### Description\n`ACCESS(NAME, MODE)` checks whether the file `NAME`\nexists, is readable, writable or executable. Except for the\nexecutable check, `ACCESS` can be replaced by\nFortran 95's `INQUIRE`.\n\n\n\n### Syntax\n`RESULT = ACCESS(NAME, MODE)`\n\n\n### Arguments\n\n \n of default kind with the\nfile name. Tailing blank are ignored unless the character `achar(0)`is present, then all characters up to and excluding `achar(0)` are\nused as file name. \n\n | `MODE` | Scalar `CHARACTER` of default kind with the\nfile access mode, may be any concatenation of `\"r\"` (readable),\n`\"w\"` (writable) and `\"x\"` (executable), or `\" \"` to check\nfor existence.\n\n\n\n\n\n\n### Return value\nReturns a scalar `INTEGER`, which is `0` if the file is\naccessible in the given mode; otherwise or if an invalid argument\nhas been given for `MODE` the value `1` is returned.\n\n\n\n### Example\n```\n\n\nprogram access_test\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0character(len=*), parameter :: file = 'test.dat'\n\n\u00a0\u00a0character(len=*), parameter :: file2 = 'test.dat '//achar(0)\n\n\u00a0\u00a0if(access(file,' ') == 0) print *, trim(file),' is exists'\n\n\u00a0\u00a0if(access(file,'r') == 0) print *, trim(file),' is readable'\n\n\u00a0\u00a0if(access(file,'w') == 0) print *, trim(file),' is writable'\n\n\u00a0\u00a0if(access(file,'x') == 0) print *, trim(file),' is executable'\n\n\u00a0\u00a0if(access(file2,'rwx') == 0) &\n\n\u00a0\u00a0\u00a0\u00a0print *, trim(file2),' is readable, writable and executable'\n\nend program access_test\n\n```\n\n\n\n### Specific names\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\n\n"
+ },
+ "CONJG": {
+ "doc": "`CONJG` \u2014 Complex conjugate function\n\n### Description\n`CONJG(Z)` returns the conjugate of `Z`. If `Z` is `(x, y)`then the result is `(x, -y)`\n\n\n### Syntax\n`Z = CONJG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX`.\n\n\n\n### Example\n```\n\n\nprogram test_conjg\n\n\u00a0\u00a0\u00a0\u00a0complex :: z = (2.0, 3.0)\n\n\u00a0\u00a0\u00a0\u00a0complex(8) :: dz = (2.71_8, -3.14_8)\n\n\u00a0\u00a0\u00a0\u00a0z= conjg(z)\n\n\u00a0\u00a0\u00a0\u00a0print *, z\n\n\u00a0\u00a0\u00a0\u00a0dz = dconjg(dz)\n\n\u00a0\u00a0\u00a0\u00a0print *, dz\n\nend program test_conjg\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `CONJG(Z)` | `COMPLEX Z` | `COMPLEX` | GNU extension\n\n | `DCONJG(Z)` | `COMPLEX(8) Z` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ATOMIC_REF": {
+ "doc": "`ATOMIC_REF` \u2014 Obtaining the value of a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` atomically assigns the value of the\nvariable `ATOM` to `VALUE`. When `STAT` is present and the\ninvokation was successful, it is assigned the value 0. If it is present and the\ninvokation has failed, it is assigned a positive value; in particular, for a\ncoindexed `ATOM`, if the remote image has stopped, it is assigned the value\nof `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image\nhas failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_REF(VALUE, ATOM [, STAT])`\n\n\n### Arguments\n\n \n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0logical(atomic_logical_kind) :: atom[*]\n\n\u00a0\u00a0logical :: val\n\n\u00a0\u00a0call atomic_ref (atom, .false.)\n\n\u00a0\u00a0! ...\n\n\u00a0\u00a0call atomic_ref (atom, val)\n\n\u00a0\u00a0if (val) then\n\n\u00a0\u00a0\u00a0\u00a0print *, \"Obtained\"\n\n\u00a0\u00a0end if\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR,\nATOMIC_FETCH_XOR\n"
+ },
+ "GETENV": {
+ "doc": "`GETENV` \u2014 Get an environmental variable\n\n### Description\nGet the `VALUE` of the environmental variable `NAME`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe GET_ENVIRONMENT_VARIABLE intrinsic defined by the Fortran\n2003 standard.\n\n \n\nNote that `GETENV` need not be thread-safe. It is the\nresponsibility of the user to ensure that the environment is not being\nupdated concurrently with a call to the `GETENV` intrinsic.\n\n\n\n\n### Syntax\n`CALL GETENV(NAME, VALUE)`\n\n\n### Arguments\n\n \n and of default kind. \n\n | `VALUE` | Shall be of type `CHARACTER` and of default kind.\n\n\n\n\n\n\n### Return value\nStores the value of `NAME` in `VALUE`. If `VALUE` is\nnot large enough to hold the data, it is truncated. If `NAME`\nis not set, `VALUE` will be filled with blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_getenv\n\n\u00a0\u00a0CHARACTER(len=255) :: homedir\n\n\u00a0\u00a0CALL getenv(\"HOME\", homedir)\n\n\u00a0\u00a0WRITE (*,*) TRIM(homedir)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_ENVIRONMENT_VARIABLE\n"
+ },
+ "ISHFTC": {
+ "doc": "`ISHFTC` \u2014 Shift bits circularly\n\n### Description\n`ISHFTC` returns a value corresponding to `I` with the\nrightmost `SIZE` bits shifted circularly `SHIFT` places; that\nis, bits shifted out one end are shifted into the opposite end. A value\nof `SHIFT` greater than zero corresponds to a left shift, a value of\nzero corresponds to no shift, and a value less than zero corresponds to\na right shift. The absolute value of `SHIFT` must be less than\n`SIZE`. If the `SIZE` argument is omitted, it is taken to be\nequivalent to `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = ISHFTC(I, SHIFT [, SIZE])`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`. \n\n | `SIZE` | (Optional) The type shall be `INTEGER`;\nthe value must be greater than zero and less than or equal to\n`BIT_SIZE(I)`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT\n"
+ },
+ "SPACING": {
+ "doc": "`SPACING` \u2014 Smallest distance between two numbers of a given type\n\n### Description\nDetermines the distance between the argument `X` and the nearest\nadjacent number of the same type.\n\n\n\n### Syntax\n`RESULT = SPACING(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as the input argument `X`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_spacing\n\n\u00a0\u00a0INTEGER, PARAMETER :: SGL = SELECTED_REAL_KIND(p=6, r=37)\n\n\u00a0\u00a0INTEGER, PARAMETER :: DBL = SELECTED_REAL_KIND(p=13, r=200)\n\n\n\u00a0\u00a0WRITE(*,*) spacing(1.0_SGL) ! \"1.1920929E-07\" on i686\n\n\u00a0\u00a0WRITE(*,*) spacing(1.0_DBL) ! \"2.220446049250313E-016\" on i686\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nRRSPACING\n"
+ },
+ "RANDOM_INIT": {
+ "doc": "`RANDOM_INIT` \u2014 Initialize a pseudo-random number generator\n\n### Description\nInitializes the state of the pseudorandom number generator used by RANDOM_NUMBER.\n### Standard\nFortran 2018\n### Class\nSubroutine\n### Syntax\nCALL RANDOM_INIT(REPEATABLE, IMAGE_DISTINCT)\n### Arguments\n- REPEATABLE: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is the same each time RANDOM_INIT is called from the same image. The term \u201csame image\u201d means a single instance of program execution. The sequence of random numbers is different for repeated execution of the program. If it is .false., the seed is set to a processor-dependent value.\n- IMAGE_DISTINCT: Shall be a scalar with a LOGICAL type, and it is INTENT(IN). If it is .true., the seed is set to a processor-dependent value that is distinct from th seed set by a call to RANDOM_INIT in another image. If it is .false., the seed is set value that does depend which image called RANDOM_INIT.\n"
+ },
+ "C_F_PROCPOINTER": {
+ "doc": "`C_F_PROCPOINTER` \u2014 Convert C into Fortran procedure pointer\n\n### Description\n`C_F_PROCPOINTER(CPTR, FPTR)` Assign the target of the C function pointer\n`CPTR` to the Fortran procedure pointer `FPTR`.\n\n\n\n### Syntax\n`CALL C_F_PROCPOINTER(cptr, fptr)`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | procedure pointer interoperable with `cptr`. It is\n`INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n\u00a0\u00a0use iso_c_binding\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0abstract interface\n\n\u00a0\u00a0\u00a0\u00a0function func(a)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0import :: c_float\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0real(c_float), intent(in) :: a\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0real(c_float) :: func\n\n\u00a0\u00a0\u00a0\u00a0end function\n\n\u00a0\u00a0end interface\n\n\u00a0\u00a0interface\n\n\u00a0\u00a0\u00a0\u00a0\u00a0function getIterFunc() bind(c,name=\"getIterFunc\")\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0import :: c_funptr\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type(c_funptr) :: getIterFunc\n\n\u00a0\u00a0\u00a0\u00a0\u00a0end function\n\n\u00a0\u00a0end interface\n\n\u00a0\u00a0type(c_funptr) :: cfunptr\n\n\u00a0\u00a0procedure(func), pointer :: myFunc\n\n\u00a0\u00a0cfunptr = getIterFunc()\n\n\u00a0\u00a0call c_f_procpointer(cfunptr, myFunc)\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_POINTER\n"
+ },
+ "RENAME": {
+ "doc": "`RENAME` \u2014 Rename a file\n\n### Description\nRenames a file from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`rename(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = RENAME(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nLINK\n\n "
+ },
+ "LBOUND": {
+ "doc": "`LBOUND` \u2014 Lower dimension bounds of an array\n\n### Description\nReturns the lower bounds of an array, or a single lower bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = LBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the lower bound is taken to be 1.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUBOUND, LCOBOUND\n"
+ },
+ "PRECISION": {
+ "doc": "`PRECISION` \u2014 Decimal precision of a real kind\n\n### Description\n`PRECISION(X)` returns the decimal precision in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = PRECISION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram prec_and_range\n\n\u00a0\u00a0real(kind=4) :: x(2)\n\n\u00a0\u00a0complex(kind=8) :: y\n\n\n\u00a0\u00a0print *, precision(x), range(x)\n\n\u00a0\u00a0print *, precision(y), range(y)\n\nend program prec_and_range\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND, RANGE\n\n\n"
+ },
+ "IARGC": {
+ "doc": "`IARGC` \u2014 Get the number of command line arguments\n\n### Description\n`IARGC` returns the number of arguments passed on the\ncommand line when the containing program was invoked.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. In new code, programmers should consider the use of\nthe COMMAND_ARGUMENT_COUNT intrinsic defined by the Fortran 2003\nstandard.\n\n\n\n\n### Syntax\n`RESULT = IARGC()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe number of command line arguments, type `INTEGER(4)`.\n\n\n\n### Example\nSee GETARG\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGNU Fortran 77 compatibility subroutine: GETARG\n\n \nFortran 2003 functions and subroutines: GET_COMMAND,\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n\n"
+ },
+ "EXP": {
+ "doc": "`EXP` \u2014 Exponential function\n\n### Description\n`EXP(X)` computes the base e exponential of `X`.\n\n\n\n### Syntax\n`RESULT = EXP(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_exp\n\n\u00a0\u00a0real :: x = 1.0\n\n\u00a0\u00a0x = exp(x)\n\nend program test_exp\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `EXP(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DEXP(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n | `CEXP(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 77 and later\n\n | `ZEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDEXP(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "DATE_AND_TIME": {
+ "doc": "`DATE_AND_TIME` \u2014 Date and time subroutine\n\n### Description\n`DATE_AND_TIME(DATE, TIME, ZONE, VALUES)` gets the corresponding date and\ntime information from the real-time system clock. `DATE` is\n`INTENT(OUT)` and has form ccyymmdd. `TIME` is `INTENT(OUT)` and\nhas form hhmmss.sss. `ZONE` is `INTENT(OUT)` and has form (+-)hhmm,\nrepresenting the difference with respect to Coordinated Universal Time (UTC). \nUnavailable time and date parameters return blanks.\n\n \n`VALUES` is `INTENT(OUT)` and provides the following:\n\n \n\n: | The year\n\n | | `VALUE(2)`: | The month\n\n | | `VALUE(3)`: | The day of the month\n\n | | `VALUE(4)`: | Time difference with UTC in minutes\n\n | | `VALUE(5)`: | The hour of the day\n\n | | `VALUE(6)`: | The minutes of the hour\n\n | | `VALUE(7)`: | The seconds of the minute\n\n | | `VALUE(8)`: | The milliseconds of the second\n\n\n\n\n\n\n### Syntax\n`CALL DATE_AND_TIME([DATE, TIME, ZONE, VALUES])`\n\n\n### Arguments\n\n \n\nor larger, and of default kind. \n\n | `TIME` | (Optional) The type shall be `CHARACTER(LEN=10)`or larger, and of default kind. \n\n | `ZONE` | (Optional) The type shall be `CHARACTER(LEN=5)`or larger, and of default kind. \n\n | `VALUES` | (Optional) The type shall be `INTEGER(8)`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_time_and_date\n\n\u00a0\u00a0\u00a0\u00a0character(8) :: date\n\n\u00a0\u00a0\u00a0\u00a0character(10) :: time\n\n\u00a0\u00a0\u00a0\u00a0character(5) :: zone\n\n\u00a0\u00a0\u00a0\u00a0integer,dimension(8) :: values\n\n\u00a0\u00a0\u00a0\u00a0! using keyword arguments\n\n\u00a0\u00a0\u00a0\u00a0call date_and_time(date,time,zone,values)\n\n\u00a0\u00a0\u00a0\u00a0call date_and_time(DATE=date,ZONE=zone)\n\n\u00a0\u00a0\u00a0\u00a0call date_and_time(TIME=time)\n\n\u00a0\u00a0\u00a0\u00a0call date_and_time(VALUES=values)\n\n\u00a0\u00a0\u00a0\u00a0print '(a,2x,a,2x,a)', date, time, zone\n\n\u00a0\u00a0\u00a0\u00a0print '(8i5)', values\n\nend program test_time_and_date\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCPU_TIME, SYSTEM_CLOCK\n"
+ },
+ "ATOMIC_FETCH_AND": {
+ "doc": "`ATOMIC_FETCH_AND` \u2014 Atomic bitwise AND operation with prior fetch\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically stores the value of `ATOM` in\n`OLD` and defines `ATOM` with the bitwise AND between the values of\n`ATOM` and `VALUE`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation has\nfailed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_FETCH_AND (ATOM, VALUE, OLD [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*], old\n\n\u00a0\u00a0call atomic_fetch_and (atom[1], int(b'10100011101'), old)\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_AND, ISO_FORTRAN_ENV,\nATOMIC_FETCH_ADD, ATOMIC_FETCH_OR, ATOMIC_FETCH_XOR\n"
+ },
+ "ATAN": {
+ "doc": "`ATAN` \u2014 Arctangent function\n\n### Description\n`ATAN(X)` computes the arctangent of `X`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ATAN(Y, X)` \n\n\n\n\n\n### Arguments\n\n \n;\nif `Y` is present, `X` shall be REAL. \n\n | `Y` shall be of the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIf `Y` is present, the result is identical to `ATAN2(Y,X)`. \nOtherwise, it the arcus tangent of `X`, where the real part of\nthe result is in radians and lies in the range\n-\\pi/2 \\leq \\Re \\atan(x) \\leq \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan\n\n\u00a0\u00a0real(8) :: x = 2.866_8\n\n\u00a0\u00a0x = atan(x)\n\nend program test_atan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument and for two arguments\nFortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: TAN\n\n "
+ },
+ "LEN_TRIM": {
+ "doc": "`LEN_TRIM` \u2014 Length of a character entity without trailing blank characters\n\n### Description\nReturns the length of a character string, ignoring any trailing blanks.\n\n\n\n### Syntax\n`RESULT = LEN_TRIM(STRING [, KIND])`\n\n\n### Arguments\n\n \n,\nwith `INTENT(IN)` \n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLEN, ADJUSTL, ADJUSTR\n"
+ },
+ "GETCWD": {
+ "doc": "`GETCWD` \u2014 Get current working directory\n\n### Description\nGet current working directory.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = GETCWD(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default kind. \n\n | `STATUS` | (Optional) status flag. Returns 0 on success,\na system specific and nonzero error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_getcwd\n\n\u00a0\u00a0CHARACTER(len=255) :: cwd\n\n\u00a0\u00a0CALL getcwd(cwd)\n\n\u00a0\u00a0WRITE(*,*) TRIM(cwd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCHDIR\n"
+ },
+ "GMTIME": {
+ "doc": "`GMTIME` \u2014 Convert time to GMT info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the UTC time zone (Universal Coordinated Time, also known in some\ncountries as GMT, Greenwich Mean Time), using `gmtime(3)`.\n\n\n\n### Syntax\n`CALL GMTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n \n- Seconds after the minute, range 0\u201359 or 0\u201361 to allow for leap\nseconds\n
- Minutes after the hour, range 0\u201359\n
- Hours past midnight, range 0\u201323\n
- Day of month, range 0\u201331\n
- Number of months since January, range 0\u201312\n
- Years since 1900\n
- Number of days since Sunday, range 0\u20136\n
- Days since January 1\n
- Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, LTIME, TIME, TIME8\n\n "
+ },
+ "TAN": {
+ "doc": "`TAN` \u2014 Tangent function\n\n### Description\n`TAN(X)` computes the tangent of `X`.\n\n\n\n### Syntax\n`RESULT = TAN(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_tan\n\n\u00a0\u00a0real(8) :: x = 0.165_8\n\n\u00a0\u00a0x = tan(x)\n\nend program test_tan\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `TAN(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DTAN(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nATAN\n"
+ },
+ "CO_REDUCE": {
+ "doc": "`CO_REDUCE` \u2014 Reduction of values on the current set of images\n\n### Description\n`CO_REDUCE` determines element-wise the reduction of the value of `A`\non all images of the current team. The pure function passed as `OPERATOR`\nis used to pairwise reduce the values of `A` by passing either the value\nof `A` of different images or the result values of such a reduction as\nargument. If `A` is an array, the deduction is done element wise. If\n`RESULT_IMAGE` is present, the result values are returned in `A` on\nthe specified image only and the value of `A` on the other images become\nundefined. If `RESULT_IMAGE` is not present, the value is returned on all\nimages. If the execution was successful and `STAT` is present, it is\nassigned the value zero. If the execution failed, `STAT` gets assigned\na nonzero value and, if present, `ERRMSG` gets assigned a value describing\nthe occurred error.\n\n\n\n### Syntax\n`CALL CO_REDUCE(A, OPERATOR, [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n argument and shall be\nnonpolymorphic. If it is allocatable, it shall be allocated; if it is a pointer,\nit shall be associated. `A` shall have the same type and type parameters on\nall images of the team; if it is an array, it shall have the same shape on all\nimages. \n\n | `OPERATOR` | pure function with two scalar nonallocatable\narguments, which shall be nonpolymorphic and have the same type and type\nparameters as `A`. The function shall return a nonallocatable scalar of\nthe same type and type parameters as `A`. The function shall be the same on\nall images and with regards to the arguments mathematically commutative and\nassociative. Note that `OPERATOR` may not be an elemental function, unless\nit is an intrisic function. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n\u00a0\u00a0integer :: val\n\n\u00a0\u00a0val = this_image ()\n\n\u00a0\u00a0call co_reduce (val, result_image=1, operator=myprod)\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0write(*,*) \"Product value\", val ! prints num_images() factorial\n\n\u00a0\u00a0end if\n\ncontains\n\n\u00a0\u00a0pure function myprod(a, b)\n\n\u00a0\u00a0\u00a0\u00a0integer, value :: a, b\n\n\u00a0\u00a0\u00a0\u00a0integer :: myprod\n\n\u00a0\u00a0\u00a0\u00a0myprod = a * b\n\n\u00a0\u00a0end function myprod\n\nend program test\n\n```\n\n\n\n### Notes\nWhile the rules permit in principle an intrinsic function, none of the\nintrinsics in the standard fulfill the criteria of having a specific\nfunction, which takes two arguments of the same type and returning that\ntype as result.\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MIN, CO_MAX, CO_SUM, CO_BROADCAST\n"
+ },
+ "STORAGE_SIZE": {
+ "doc": "`STORAGE_SIZE` \u2014 Storage size in bits\n\n### Description\nReturns the storage size of argument `A` in bits. \n\n\n### Syntax\n`RESULT = STORAGE_SIZE(A [, KIND])`\n\n\n### Arguments\n\n \n | `A` | Shall be a scalar or array of any type. \n\n | `KIND` | (Optional) shall be a scalar integer constant expression.\n\n\n\n\n\n\n### Return value\nThe result is a scalar integer with the kind type parameter specified by KIND\n(or default integer type if KIND is missing). The result value is the size\nexpressed in bits for an element of an array that has the dynamic type and type\nparameters of A.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n### Class\nInquiry function\n\n\n### See also\nC_SIZEOF, SIZEOF\n"
+ },
+ "IBSET": {
+ "doc": "`IBSET` \u2014 Set bit\n\n### Description\n`IBSET` returns the value of `I` with the bit at position\n`POS` set to one.\n\n\n\n### Syntax\n`RESULT = IBSET(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBCLR, IBITS, IAND, IOR, IEOR, MVBITS\n\n "
+ },
+ "ABS": {
+ "doc": "`ABS` \u2014 Absolute value\n\n### Description\n`ABS(A)` computes the absolute value of `A`.\n\n\n\n### Syntax\n`RESULT = ABS(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and\nkind as the argument except the return value is `REAL` for a\n`COMPLEX` argument.\n\n\n\n### Example\n```\n\n\nprogram test_abs\n\n\u00a0\u00a0integer :: i = -1\n\n\u00a0\u00a0real :: x = -1.e0\n\n\u00a0\u00a0complex :: z = (-1.e0,0.e0)\n\n\u00a0\u00a0i = abs(i)\n\n\u00a0\u00a0x = abs(x)\n\n\u00a0\u00a0x = abs(z)\n\nend program test_abs\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ABS(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `CABS(A)` | `COMPLEX(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DABS(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n | `IABS(A)` | `INTEGER(4) A` | `INTEGER(4)` | Fortran 77 and later\n\n | `ZABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n | `CDABS(A)` | `COMPLEX(8) A` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "NULL": {
+ "doc": "`NULL` \u2014 Function that returns an disassociated pointer\n\n### Description\nReturns a disassociated pointer.\n\n \nIf `MOLD` is present, a disassociated pointer of the same type is\nreturned, otherwise the type is determined by context.\n\n \n\nIn Fortran 95, `MOLD` is optional. Please note that Fortran 2003\nincludes cases where it is required.\n\n\n\n\n### Syntax\n`PTR => NULL([MOLD])`\n\n\n### Arguments\n\n \n | `MOLD` | (Optional) shall be a pointer of any association\nstatus and of any type.\n\n\n\n\n\n\n### Return value\nA disassociated pointer.\n\n\n\n### Example\n```\n\n\nREAL, POINTER, DIMENSION(:) :: VEC => NULL ()\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nASSOCIATED\n"
+ },
+ "ATAN2": {
+ "doc": "`ATAN2` \u2014 Arctangent function\n\n### Description\n`ATAN2(Y, X)` computes the principal value of the argument\nfunction of the complex number X + i Y. This function can\nbe used to transform from Cartesian into polar coordinates and\nallows to determine the angle in the correct quadrant.\n\n\n\n### Syntax\n`RESULT = ATAN2(Y, X)`\n\n\n### Arguments\n\n \n. \n\n | `X` | The type and kind type parameter shall be the same as `Y`. \nIf `Y` is zero, then `X` must be nonzero.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind type parameter as `Y`. It\nis the principal value of the complex number X + i Y. If `X`\nis nonzero, then it lies in the range -\\pi \\le \\atan (x) \\leq \\pi. \nThe sign is positive if `Y` is positive. If `Y` is zero, then\nthe return value is zero if `X` is strictly positive, \\pi if\n`X` is negative and `Y` is positive zero (or the processor does\nnot handle signed zeros), and -\\pi if `X` is negative and\n`Y` is negative zero. Finally, if `X` is zero, then the\nmagnitude of the result is \\pi/2.\n\n\n\n### Example\n```\n\n\nprogram test_atan2\n\n\u00a0\u00a0real(4) :: x = 1.e0_4, y = 0.5e0_4\n\n\u00a0\u00a0x = atan2(y,x)\n\nend program test_atan2\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ATAN2(X, Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `DATAN2(X, Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "BGE": {
+ "doc": "`BGE` \u2014 Bitwise greater than or equal to\n\n### Description\nDetermines whether an integral is a bitwise greater than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BGE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BLE, BLT\n"
+ },
+ "IBITS": {
+ "doc": "`IBITS` \u2014 Bit extraction\n\n### Description\n`IBITS` extracts a field of length `LEN` from `I`,\nstarting from bit position `POS` and extending left for `LEN`\nbits. The result is right-justified and the remaining bits are\nzeroed. The value of `POS+LEN` must be less than or equal to the\nvalue `BIT_SIZE(I)`.\n\n\n\n### Syntax\n`RESULT = IBITS(I, POS, LEN)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`. \n\n | `LEN` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBIT_SIZE, IBCLR, IBSET, IAND, IOR, IEOR\n"
+ },
+ "BESSEL_Y1": {
+ "doc": "`BESSEL_Y1` \u2014 Bessel function of the second kind of order 1\n\n### Description\n`BESSEL_Y1(X)` computes the Bessel function of the second kind of\norder 1 of `X`. This function is available under the name\n`BESY1` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y1(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy1\n\n\u00a0\u00a0real(8) :: x = 1.0_8\n\n\u00a0\u00a0x = bessel_y1(x)\n\nend program test_besy1\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY1(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "STAT": {
+ "doc": "`STAT` \u2014 Get file status\n\n### Description\nThis function returns information about a file. No permissions are required on\nthe file itself, but execute (search) permission is required on all of the\ndirectories in path that lead to the file.\n\n \nThe elements that are obtained and stored in the array `VALUES`:\n \n\n | Device ID\n\n | `VALUES(2)` | Inode number\n\n | `VALUES(3)` | File mode\n\n | `VALUES(4)` | Number of links\n\n | `VALUES(5)` | Owner's uid\n\n | `VALUES(6)` | Owner's gid\n\n | `VALUES(7)` | ID of device containing directory entry for file (0 if not available)\n\n | `VALUES(8)` | File size (bytes)\n\n | `VALUES(9)` | Last access time\n\n | `VALUES(10)` | Last modification time\n\n | `VALUES(11)` | Last file status change time\n\n | `VALUES(12)` | Preferred I/O block size (-1 if not available)\n\n | `VALUES(13)` | Number of blocks allocated (-1 if not available)\n\n\n\n \n\nNot all these elements are relevant on all systems. \nIf an element is not relevant, it is returned as 0.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = STAT(NAME, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n, of the\ndefault kind and a valid path within the file system. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_stat\n\n\u00a0\u00a0INTEGER, DIMENSION(13) :: buff\n\n\u00a0\u00a0INTEGER :: status\n\n\n\u00a0\u00a0CALL STAT(\"/etc/passwd\", buff, status)\n\n\n\u00a0\u00a0IF (status == 0) THEN\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Device ID:', T30, I19)\") buff(1)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Inode number:', T30, I19)\") buff(2)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('File mode (octal):', T30, O19)\") buff(3)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Number of links:', T30, I19)\") buff(4)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Owner''s uid:', T30, I19)\") buff(5)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Owner''s gid:', T30, I19)\") buff(6)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Device where located:', T30, I19)\") buff(7)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('File size:', T30, I19)\") buff(8)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Last access time:', T30, A19)\") CTIME(buff(9))\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Last modification time', T30, A19)\") CTIME(buff(10))\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Last status change time:', T30, A19)\") CTIME(buff(11))\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('Preferred block size:', T30, I19)\") buff(12)\n\n\u00a0\u00a0\u00a0\u00a0WRITE (*, FMT=\"('No. of blocks allocated:', T30, I19)\") buff(13)\n\n\u00a0\u00a0END IF\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat an open file: FSTAT, to stat a link: LSTAT\n"
+ },
+ "MOVE_ALLOC": {
+ "doc": "`MOVE_ALLOC` \u2014 Move allocation from one object to another\n\n### Description\n`MOVE_ALLOC(FROM, TO)` moves the allocation from `FROM` to\n`TO`. `FROM` will become deallocated in the process.\n\n\n\n### Syntax\n`CALL MOVE_ALLOC(FROM, TO)`\n\n\n### Arguments\n\n \n, may be\nof any type and kind. \n\n | `TO` | `ALLOCATABLE`, `INTENT(OUT)`, shall be\nof the same type, kind and rank as `FROM`.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_move_alloc\n\n\u00a0\u00a0\u00a0\u00a0integer, allocatable :: a(:), b(:)\n\n\n\u00a0\u00a0\u00a0\u00a0allocate(a(3))\n\n\u00a0\u00a0\u00a0\u00a0a = [ 1, 2, 3 ]\n\n\u00a0\u00a0\u00a0\u00a0call move_alloc(a, b)\n\n\u00a0\u00a0\u00a0\u00a0print *, allocated(a), allocated(b)\n\n\u00a0\u00a0\u00a0\u00a0print *, b\n\nend program test_move_alloc\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nPure subroutine\n\n\n"
+ },
+ "TINY": {
+ "doc": "`TINY` \u2014 Smallest positive number of a real kind\n\n### Description\n`TINY(X)` returns the smallest positive (non zero) number\nin the model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = TINY(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\nSee `HUGE` for an example. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "SIZE": {
+ "doc": "`SIZE` \u2014 Determine the size of an array\n\n### Description\nDetermine the extent of `ARRAY` along a specified dimension `DIM`,\nor the total number of elements in `ARRAY` if `DIM` is absent.\n\n\n\n### Syntax\n`RESULT = SIZE(ARRAY[, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. If `ARRAY` is\na pointer it must be associated and allocatable arrays must be allocated. \n\n | `DIM` | (Optional) shall be a scalar of type `INTEGER`and its value shall be in the range from 1 to n, where n equals the rank\nof `ARRAY`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_size\n\n\u00a0\u00a0WRITE(*,*) SIZE((/ 1, 2 /)) ! 2\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSHAPE, RESHAPE\n"
+ },
+ "ATOMIC_CAS": {
+ "doc": "`ATOMIC_CAS` \u2014 Atomic compare and swap\n\n### Description\n`ATOMIC_CAS` compares the variable `ATOM` with the value of\n`COMPARE`; if the value is the same, `ATOM` is set to the value\nof `NEW`. Additionally, `OLD` is set to the value of `ATOM`\nthat was used for the comparison. When `STAT` is present and the invokation\nwas successful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_CAS (ATOM, OLD, COMPARE, NEW [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind. \n\n | `OLD` | Scalar of the same type and kind as `ATOM`. \n\n | `COMPARE` | Scalar variable of the same type and kind as\n`ATOM`. \n\n | `NEW` | Scalar variable of the same type as `ATOM`. If kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0logical(atomic_logical_kind) :: atom[*], prev\n\n\u00a0\u00a0call atomic_cas (atom[1], prev, .false., .true.))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_REF, ISO_FORTRAN_ENV\n"
+ },
+ "DTIME": {
+ "doc": "`DTIME` \u2014 Execution time subroutine (or function)\n\n### Description\n`DTIME(VALUES, TIME)` initially returns the number of seconds of runtime\nsince the start of the process's execution in `TIME`. `VALUES`\nreturns the user and system components of this time in `VALUES(1)` and\n`VALUES(2)` respectively. `TIME` is equal to VALUES(1) +\nVALUES(2) .\n\n \nSubsequent invocations of `DTIME` return values accumulated since the\nprevious invocation.\n\n \n\nOn some systems, the underlying timings are represented using types with\nsufficiently small limits that overflows (wrap around) are possible, such as\n32-bit types. Therefore, the values returned by this intrinsic might be, or\nbecome, negative, or numerically less than previous values, during a single\nrun of the compiled program.\n\n \n\nPlease note, that this implementation is thread safe if used within OpenMP\ndirectives, i.e., its state will be consistent while called from multiple\nthreads. However, if `DTIME` is called from multiple threads, the result\nis still the time since the last invocation. This may not give the intended\nresults. If possible, use `CPU_TIME` instead.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\n`VALUES` and `TIME` are `INTENT(OUT)` and provide the following:\n\n \n\n: | User time in seconds. \n\n | | `VALUES(2)`: | System time in seconds. \n\n | | `TIME`: | Run time since start in seconds.\n\n\n\n\n\n\n### Syntax\n\n \n. \n\n | `TIME = DTIME(VALUES)`, (not recommended).\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `TIME` | The type shall be `REAL(4)`.\n\n\n\n\n\n\n### Return value\nElapsed time in seconds since the last invocation or since the start of program\nexecution if not called before.\n\n\n\n### Example\n```\n\n\nprogram test_dtime\n\n\u00a0\u00a0\u00a0\u00a0integer(8) :: i, j\n\n\u00a0\u00a0\u00a0\u00a0real, dimension(2) :: tarray\n\n\u00a0\u00a0\u00a0\u00a0real :: result\n\n\u00a0\u00a0\u00a0\u00a0call dtime(tarray, result)\n\n\u00a0\u00a0\u00a0\u00a0print *, result\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(2)\n\n\u00a0\u00a0\u00a0\u00a0do i=1,100000000 ! Just a delay\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0j = i * i - i\n\n\u00a0\u00a0\u00a0\u00a0end do\n\n\u00a0\u00a0\u00a0\u00a0call dtime(tarray, result)\n\n\u00a0\u00a0\u00a0\u00a0print *, result\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0\u00a0\u00a0print *, tarray(2)\n\nend program test_dtime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nCPU_TIME\n\n "
+ },
+ "ALARM": {
+ "doc": "`ALARM` \u2014 Execute a routine after a given delay\n\n### Description\n`ALARM(SECONDS, HANDLER [, STATUS])` causes external subroutine `HANDLER`\nto be executed after a delay of `SECONDS` by using `alarm(2)` to\nset up a signal and `signal(2)` to catch it. If `STATUS` is\nsupplied, it will be returned with the number of seconds remaining until\nany previously scheduled alarm was due to be delivered, or zero if there\nwas no previously scheduled alarm.\n\n\n\n### Syntax\n`CALL ALARM(SECONDS, HANDLER [, STATUS])`\n\n\n### Arguments\n\n \n | `SECONDS` | The type of the argument shall be a scalar\n`INTEGER`. It is `INTENT(IN)`. \n\n | `HANDLER` | Signal handler (`INTEGER FUNCTION` or\n`SUBROUTINE`) or dummy/global `INTEGER` scalar. The scalar\nvalues may be either `SIG_IGN=1` to ignore the alarm generated\nor `SIG_DFL=0` to set the default action. It is `INTENT(IN)`. \n\n | `STATUS` | (Optional) `STATUS` shall be a scalar\nvariable of the default `INTEGER` kind. It is `INTENT(OUT)`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_alarm\n\n\u00a0\u00a0external handler_print\n\n\u00a0\u00a0integer i\n\n\u00a0\u00a0call alarm (3, handler_print, i)\n\n\u00a0\u00a0print *, i\n\n\u00a0\u00a0call sleep(10)\n\nend program test_alarm\n\n```\n\n \nThis will cause the external routine `handler_print` to be called\nafter 3 seconds. \n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "BESSEL_YN": {
+ "doc": "`BESSEL_YN` \u2014 Bessel function of the second kind\n\n### Description\n`BESSEL_YN(N, X)` computes the Bessel function of the second kind of\norder `N` of `X`. This function is available under the name\n`BESYN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_YN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_YN(N1, N2, X)` \n\n\n\n\n\n### Arguments\n\n \n . \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_YN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besyn\n\n\u00a0\u00a0real(8) :: x = 1.0_8\n\n\u00a0\u00a0x = bessel_yn(5,x)\n\nend program test_besyn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESYN(N,X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | | `REAL(8) X` | | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_YN(N1, N2, X)`\n\n"
+ },
+ "AIMAG": {
+ "doc": "`AIMAG` \u2014 Imaginary part of complex number\n\n### Description\n`AIMAG(Z)` yields the imaginary part of complex argument `Z`. \nThe `IMAG(Z)` and `IMAGPART(Z)` intrinsic functions are provided\nfor compatibility with *g77*, and their use in new code is\nstrongly discouraged.\n\n\n\n### Syntax\n`RESULT = AIMAG(Z)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the\nkind type parameter of the argument.\n\n\n\n### Example\n```\n\n\nprogram test_aimag\n\n\u00a0\u00a0complex(4) z4\n\n\u00a0\u00a0complex(8) z8\n\n\u00a0\u00a0z4 = cmplx(1.e0_4, 0.e0_4)\n\n\u00a0\u00a0z8 = cmplx(0.e0_8, 1.e0_8)\n\n\u00a0\u00a0print *, aimag(z4), dimag(z8)\n\nend program test_aimag\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AIMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `DIMAG(Z)` | `COMPLEX(8) Z` | `REAL(8)` | GNU extension\n\n | `IMAG(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n | `IMAGPART(Z)` | `COMPLEX Z` | `REAL` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later, has overloads that are GNU extensions\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "UNPACK": {
+ "doc": "`UNPACK` \u2014 Unpack an array of rank one into an array\n\n### Description\nStore the elements of `VECTOR` in an array of higher rank.\n\n\n\n### Syntax\n`RESULT = UNPACK(VECTOR, MASK, FIELD)`\n\n\n### Arguments\n\n \n | `VECTOR` | Shall be an array of any type and rank one. It\nshall have at least as many elements as `MASK` has `TRUE` values. \n\n | `MASK` | Shall be an array of type `LOGICAL`. \n\n | `FIELD` | Shall be of the same type as `VECTOR` and have\nthe same shape as `MASK`.\n\n\n\n\n\n\n### Return value\nThe resulting array corresponds to `FIELD` with `TRUE` elements\nof `MASK` replaced by values from `VECTOR` in array element order.\n\n\n\n### Example\n```\n\n\nPROGRAM test_unpack\n\n\u00a0\u00a0integer :: vector(2) = (/1,1/)\n\n\u00a0\u00a0logical :: mask(4) = (/ .TRUE., .FALSE., .FALSE., .TRUE. /)\n\n\u00a0\u00a0integer :: field(2,2) = 0, unity(2,2)\n\n\n\u00a0\u00a0! result: unity matrix\n\n\u00a0\u00a0unity = unpack(vector, reshape(mask, (/2,2/)), field)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPACK, SPREAD\n"
+ },
+ "REPEAT": {
+ "doc": "`REPEAT` \u2014 Repeated string concatenation\n\n### Description\nConcatenates `NCOPIES` copies of a string.\n\n\n\n### Syntax\n`RESULT = REPEAT(STRING, NCOPIES)`\n\n\n### Arguments\n\n \n. \n\n | `NCOPIES` | Shall be scalar and of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nA new scalar of type `CHARACTER` built up from `NCOPIES` copies\nof `STRING`.\n\n\n\n### Example\n```\n\n\nprogram test_repeat\n\n\u00a0\u00a0write(*,*) repeat(\"x\", 5) ! \"xxxxx\"\n\nend program\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "FLUSH": {
+ "doc": "`FLUSH` \u2014 Flush I/O unit(s)\n\n### Description\nFlushes Fortran unit(s) currently open for output. Without the optional\nargument, all units are flushed, otherwise just the unit specified.\n\n\n\n### Syntax\n`CALL FLUSH(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Notes\nBeginning with the Fortran 2003 standard, there is a `FLUSH`statement that should be preferred over the `FLUSH` intrinsic.\n\n \nThe `FLUSH` intrinsic and the Fortran 2003 `FLUSH` statement\nhave identical effect: they flush the runtime library's I/O buffer so\nthat the data becomes visible to other processes. This does not guarantee\nthat the data is committed to disk.\n\n \n\nOn POSIX systems, you can request that all data is transferred to the\nstorage device by calling the `fsync` function, with the POSIX file\ndescriptor of the I/O unit as argument (retrieved with GNU intrinsic\n`FNUM`). The following example shows how:\n\n \n ! Declare the interface for POSIX fsync function\n interface\n function fsync (fd) bind(c,name=\"fsync\")\n use iso_c_binding, only: c_int\n integer(c_int), value :: fd\n integer(c_int) :: fsync\n end function fsync\n end interface\n \n ! Variable declaration\n integer :: ret\n \n ! Opening unit 10\n open (10,file=\"foo\")\n \n ! ...\n ! Perform I/O on unit 10\n ! ...\n \n ! Flush and sync\n flush(10)\n ret = fsync(fnum(10))\n \n ! Handle possible error\n if (ret /= 0) stop \"Error calling FSYNC\"\n \n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "GET_COMMAND": {
+ "doc": "`GET_COMMAND` \u2014 Get the entire command line\n\n### Description\nRetrieve the entire command line that was used to invoke the program.\n\n\n\n### Syntax\n`CALL GET_COMMAND([COMMAND, LENGTH, STATUS])`\n\n\n### Arguments\n\n \n and\nof default kind. \n\n | `LENGTH` | (Optional) Shall be of type `INTEGER` and of\ndefault kind. \n\n | `STATUS` | (Optional) Shall be of type `INTEGER` and of\ndefault kind.\n\n\n\n\n\n\n### Return value\nIf `COMMAND` is present, stores the entire command line that was used\nto invoke the program in `COMMAND`. If `LENGTH` is present, it is\nassigned the length of the command line. If `STATUS` is present, it\nis assigned 0 upon success of the command, -1 if `COMMAND` is too\nshort to store the command line, or a positive value in case of an error.\n\n\n\n### Example\n```\n\n\nPROGRAM test_get_command\n\n\u00a0\u00a0CHARACTER(len=255) :: cmd\n\n\u00a0\u00a0CALL get_command(cmd)\n\n\u00a0\u00a0WRITE (*,*) TRIM(cmd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGET_COMMAND_ARGUMENT, COMMAND_ARGUMENT_COUNT\n"
+ },
+ "CO_BROADCAST": {
+ "doc": "`CO_BROADCAST` \u2014 Copy a value to all images the current set of images\n\n### Description\n`CO_BROADCAST` copies the value of argument `A` on the image with\nimage index `SOURCE_IMAGE` to all images in the current team. `A`\nbecomes defined as if by intrinsic assignment. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_BROADCAST(A, SOURCE_IMAGE [, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | INTENT(INOUT) argument; shall have the same\ndynamic type and type paramters on all images of the current team. If it\nis an array, it shall have the same shape on all images. \n\n | `SOURCE_IMAGE` | a scalar integer expression. \nIt shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n\u00a0\u00a0integer :: val(3)\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0val = [1, 5, 3]\n\n\u00a0\u00a0end if\n\n\u00a0\u00a0call co_broadcast (val, source_image=1)\n\n\u00a0\u00a0print *, this_image, \":\", val\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_SUM, CO_REDUCE\n"
+ },
+ "ATOMIC_DEFINE": {
+ "doc": "`ATOMIC_DEFINE` \u2014 Setting a variable atomically\n\n### Description\n`ATOMIC_DEFINE(ATOM, VALUE)` defines the variable `ATOM` with the value\n`VALUE` atomically. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_DEFINE (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of either integer\ntype with `ATOMIC_INT_KIND` kind or logical type with\n`ATOMIC_LOGICAL_KIND` kind.\n\n \n\n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*]\n\n\u00a0\u00a0call atomic_define (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nFortran 2008 and later; with `STAT`, TS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_REF, ATOMIC_CAS, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n"
+ },
+ "RANDOM_SEED": {
+ "doc": "`RANDOM_SEED` \u2014 Initialize a pseudo-random number sequence\n\n### Description\nRestarts or queries the state of the pseudorandom number generator used by\n`RANDOM_NUMBER`.\n\n \nIf `RANDOM_SEED` is called without arguments, it is initialized\nto a default state. The example below shows how to initialize the\nrandom seed with a varying seed in order to ensure a different random\nnumber sequence for each invocation of the program. Note that setting\nany of the seed values to zero should be avoided as it can result in\npoor quality random numbers being generated.\n\n\n\n\n### Syntax\n`CALL RANDOM_SEED([SIZE, PUT, GET])`\n\n\n### Arguments\n\n \n | `SIZE` | (Optional) Shall be a scalar and of type default\n`INTEGER`, with `INTENT(OUT)`. It specifies the minimum size\nof the arrays used with the `PUT` and `GET` arguments. \n\n | `PUT` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(IN)` and the size of\nthe array must be larger than or equal to the number returned by the\n`SIZE` argument. \n\n | `GET` | (Optional) Shall be an array of type default\n`INTEGER` and rank one. It is `INTENT(OUT)` and the size\nof the array must be larger than or equal to the number returned by\nthe `SIZE` argument.\n\n\n\n\n\n\n### Example\n```\n\n\nsubroutine init_random_seed()\n\n\u00a0\u00a0use iso_fortran_env, only: int64\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0integer, allocatable :: seed(:)\n\n\u00a0\u00a0integer :: i, n, un, istat, dt(8), pid\n\n\u00a0\u00a0integer(int64) :: t\n\n\n\u00a0\u00a0call random_seed(size = n)\n\n\u00a0\u00a0allocate(seed(n))\n\n\u00a0\u00a0! First try if the OS provides a random number generator\n\n\u00a0\u00a0open(newunit=un, file=\"/dev/urandom\", access=\"stream\", &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form=\"unformatted\", action=\"read\", status=\"old\", iostat=istat)\n\n\u00a0\u00a0if (istat == 0) then\n\n\u00a0\u00a0\u00a0\u00a0\u00a0read(un) seed\n\n\u00a0\u00a0\u00a0\u00a0\u00a0close(un)\n\n\u00a0\u00a0else\n\n\u00a0\u00a0\u00a0\u00a0\u00a0! Fallback to XOR:ing the current time and pid. The PID is\n\n\u00a0\u00a0\u00a0\u00a0\u00a0! useful in case one launches multiple instances of the same\n\n\u00a0\u00a0\u00a0\u00a0\u00a0! program in parallel.\n\n\u00a0\u00a0\u00a0\u00a0\u00a0call system_clock(t)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0if (t == 0) then\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0call date_and_time(values=dt)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0t = (dt(1) - 1970) * 365_int64 * 24 * 60 * 60 * 1000 &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+ dt(2) * 31_int64 * 24 * 60 * 60 * 1000 &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+ dt(3) * 24_int64 * 60 * 60 * 1000 &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+ dt(5) * 60 * 60 * 1000 &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+ dt(6) * 60 * 1000 + dt(7) * 1000 &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0+ dt(8)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0end if\n\n\u00a0\u00a0\u00a0\u00a0\u00a0pid = getpid()\n\n\u00a0\u00a0\u00a0\u00a0\u00a0t = ieor(t, int(pid, kind(t)))\n\n\u00a0\u00a0\u00a0\u00a0\u00a0do i = 1, n\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0seed(i) = lcg(t)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0end do\n\n\u00a0\u00a0end if\n\n\u00a0\u00a0call random_seed(put=seed)\n\ncontains\n\n\u00a0\u00a0! This simple PRNG might not be good enough for real work, but is\n\n\u00a0\u00a0! sufficient for seeding a better PRNG.\n\n\u00a0\u00a0function lcg(s)\n\n\u00a0\u00a0\u00a0\u00a0integer :: lcg\n\n\u00a0\u00a0\u00a0\u00a0integer(int64) :: s\n\n\u00a0\u00a0\u00a0\u00a0if (s == 0) then\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0s = 104729\n\n\u00a0\u00a0\u00a0\u00a0else\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0s = mod(s, 4294967296_int64)\n\n\u00a0\u00a0\u00a0\u00a0end if\n\n\u00a0\u00a0\u00a0\u00a0s = mod(s * 279470273_int64, 4294967291_int64)\n\n\u00a0\u00a0\u00a0\u00a0lcg = int(mod(s, int(huge(0), int64)), kind(0))\n\n\u00a0\u00a0end function lcg\n\nend subroutine init_random_seed\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nRANDOM_NUMBER\n"
+ },
+ "PACK": {
+ "doc": "`PACK` \u2014 Pack an array into an array of rank one\n\n### Description\nStores the elements of `ARRAY` in an array of rank one.\n\n \nThe beginning of the resulting array is made up of elements whose `MASK`\nequals `TRUE`. Afterwards, positions are filled with elements taken from\n`VECTOR`.\n\n\n\n\n### Syntax\n`RESULT = PACK(ARRAY, MASK[,VECTOR])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array of any type. \n\n | `MASK` | Shall be an array of type `LOGICAL` and\nof the same size as `ARRAY`. Alternatively, it may be a `LOGICAL`scalar. \n\n | `VECTOR` | (Optional) shall be an array of the same type\nas `ARRAY` and of rank one. If present, the number of elements in\n`VECTOR` shall be equal to or greater than the number of true elements\nin `MASK`. If `MASK` is scalar, the number of elements in\n`VECTOR` shall be equal to or greater than the number of elements in\n`ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is an array of rank one and the same type as that of `ARRAY`. \nIf `VECTOR` is present, the result size is that of `VECTOR`, the\nnumber of `TRUE` values in `MASK` otherwise.\n\n\n\n### Example\nGathering nonzero elements from an array:\n```\n\n\nPROGRAM test_pack_1\n\n\u00a0\u00a0INTEGER :: m(6)\n\n\u00a0\u00a0m = (/ 1, 0, 0, 0, 5, 0 /)\n\n\u00a0\u00a0WRITE(*, FMT=\"(6(I0, ' '))\") pack(m, m /= 0) ! \"1 5\"\n\nEND PROGRAM\n\n```\n\n \nGathering nonzero elements from an array and appending elements from `VECTOR`:\n \n PROGRAM test_pack_2\n INTEGER :: m(4)\n m = (/ 1, 0, 0, 2 /)\n WRITE(*, FMT=\"(4(I0, ' '))\") pack(m, m /= 0, (/ 0, 0, 3, 4 /)) ! \"1 2 3 4\"\n END PROGRAM\n \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nUNPACK\n"
+ },
+ "NEW_LINE": {
+ "doc": "`NEW_LINE` \u2014 New line character\n\n### Description\n`NEW_LINE(C)` returns the new-line character.\n\n\n\n### Syntax\n`RESULT = NEW_LINE(C)`\n\n\n### Arguments\n\n \n | `C` | The argument shall be a scalar or array of the\ntype `CHARACTER`.\n\n\n\n\n\n\n### Return value\nReturns a `CHARACTER` scalar of length one with the new-line character of\nthe same kind as parameter `C`.\n\n\n\n### Example\n```\n\n\nprogram newline\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0write(*,'(A)') 'This is record 1.'//NEW_LINE('A')//'This is record 2.'\n\nend program newline\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "DIM": {
+ "doc": "`DIM` \u2014 Positive difference\n\n### Description\n`DIM(X,Y)` returns the difference `X-Y` if the result is positive;\notherwise returns zero.\n\n\n\n### Syntax\n`RESULT = DIM(X, Y)`\n\n\n### Arguments\n\n \n\n\n | `Y` | The type shall be the same type and kind as `X`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` or `REAL`.\n\n\n\n### Example\n```\n\n\nprogram test_dim\n\n\u00a0\u00a0\u00a0\u00a0integer :: i\n\n\u00a0\u00a0\u00a0\u00a0real(8) :: x\n\n\u00a0\u00a0\u00a0\u00a0i = dim(4, 15)\n\n\u00a0\u00a0\u00a0\u00a0x = dim(4.345_8, 2.111_8)\n\n\u00a0\u00a0\u00a0\u00a0print *, i\n\n\u00a0\u00a0\u00a0\u00a0print *, x\n\nend program test_dim\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DIM(X,Y)` | `REAL(4) X, Y` | `REAL(4)` | Fortran 77 and later\n\n | `IDIM(X,Y)` | `INTEGER(4) X, Y` | `INTEGER(4)` | Fortran 77 and later\n\n | `DDIM(X,Y)` | `REAL(8) X, Y` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "IBCLR": {
+ "doc": "`IBCLR` \u2014 Clear bit\n\n### Description\n`IBCLR` returns the value of `I` with the bit at position\n`POS` set to zero.\n\n\n\n### Syntax\n`RESULT = IBCLR(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIBITS, IBSET, IAND, IOR, IEOR, MVBITS\n\n "
+ },
+ "TRANSPOSE": {
+ "doc": "`TRANSPOSE` \u2014 Transpose an array of rank two\n\n### Description\nTranspose an array of rank two. Element (i, j) of the result has the value\n`MATRIX(j, i)`, for all i, j.\n\n\n\n### Syntax\n`RESULT = TRANSPOSE(MATRIX)`\n\n\n### Arguments\n\n \n | `MATRIX` | Shall be an array of any type and have a rank of two.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MATRIX`, and has shape\n`(/ m, n /)` if `MATRIX` has shape `(/ n, m /)`. \n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "ISATTY": {
+ "doc": "`ISATTY` \u2014 Whether a unit is a terminal device.\n\n### Description\nDetermine whether a unit is connected to a terminal device.\n\n\n\n### Syntax\n`RESULT = ISATTY(UNIT)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if the `UNIT` is connected to a terminal\ndevice, `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM test_isatty\n\n\u00a0\u00a0INTEGER(kind=1) :: unit\n\n\u00a0\u00a0DO unit = 1, 10\n\n\u00a0\u00a0\u00a0\u00a0write(*,*) isatty(unit=unit)\n\n\u00a0\u00a0END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nTTYNAM\n"
+ },
+ "SCALE": {
+ "doc": "`SCALE` \u2014 Scale a real value\n\n### Description\n`SCALE(X,I)` returns `X * RADIX(X)**I`.\n\n\n\n### Syntax\n`RESULT = SCALE(X, I)`\n\n\n### Arguments\n\n \n. \n\n | `I` | The type of the argument shall be a `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nIts value is `X * RADIX(X)**I`.\n\n\n\n### Example\n```\n\n\nprogram test_scale\n\n\u00a0\u00a0real :: x = 178.1387e-4\n\n\u00a0\u00a0integer :: i = 5\n\n\u00a0\u00a0print *, scale(x,i), x*radix(x)**i\n\nend program test_scale\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "GERROR": {
+ "doc": "`GERROR` \u2014 Get last system error message\n\n### Description\nReturns the system error message corresponding to the last system error. \nThis resembles the functionality of `strerror(3)` in C.\n\n\n\n### Syntax\n`CALL GERROR(RESULT)`\n\n\n### Arguments\n\n \n and of default\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_gerror\n\n\u00a0\u00a0CHARACTER(len=100) :: msg\n\n\u00a0\u00a0CALL gerror(msg)\n\n\u00a0\u00a0WRITE(*,*) msg\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO, PERROR\n"
+ },
+ "BESSEL_Y0": {
+ "doc": "`BESSEL_Y0` \u2014 Bessel function of the second kind of order 0\n\n### Description\n`BESSEL_Y0(X)` computes the Bessel function of the second kind of\norder 0 of `X`. This function is available under the name\n`BESY0` as a GNU extension.\n\n\n\n### Syntax\n`RESULT = BESSEL_Y0(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`. It has the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besy0\n\n\u00a0\u00a0real(8) :: x = 0.0_8\n\n\u00a0\u00a0x = bessel_y0(x)\n\nend program test_besy0\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESY0(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ATOMIC_AND": {
+ "doc": "`ATOMIC_AND` \u2014 Atomic bitwise AND operation\n\n### Description\n`ATOMIC_AND(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_AND (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*]\n\n\u00a0\u00a0call atomic_and (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_AND, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
+ },
+ "EVENT_QUERY": {
+ "doc": "`EVENT_QUERY` \u2014 Query whether a coarray event has occurred\n\n### Description\n`EVENT_QUERY` assignes the number of events to `COUNT` which have been\nposted to the `EVENT` variable and not yet been removed by calling\n`EVENT WAIT`. When `STAT` is present and the invokation was successful,\nit is assigned the value 0. If it is present and the invokation has failed,\nit is assigned a positive value and `COUNT` is assigned the value -1.\n\n\n\n### Syntax\n`CALL EVENT_QUERY (EVENT, COUNT [, STAT])`\n\n\n### Arguments\n\n \n,\ndefined in `ISO_FORTRAN_ENV`; shall not be coindexed. \n\n | `COUNT` | (intent(out))Scalar integer with at least the\nprecision of default integer. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0type(event_type) :: event_value_has_been_set[*]\n\n\u00a0\u00a0integer :: cnt\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0call event_query (event_value_has_been_set, cnt)\n\n\u00a0\u00a0\u00a0\u00a0if (cnt > 0) write(*,*) \"Value has been set\"\n\n\u00a0\u00a0elseif (this_image() == 2) then\n\n\u00a0\u00a0\u00a0\u00a0event post (event_value_has_been_set[1])\n\n\u00a0\u00a0end if\n\nend program atomic\n\n```\n\n \n\n### Standard\nTS 18508 or later\n\n\n\n### Class\n subroutine\n\n\n"
+ },
+ "SYSTEM": {
+ "doc": "`SYSTEM` \u2014 Execute a shell command\n\n### Description\nPasses the command `COMMAND` to a shell (see `system(3)`). If\nargument `STATUS` is present, it contains the value returned by\n`system(3)`, which is presumably 0 if the shell command succeeded. \nNote that which shell is used to invoke the command is system-dependent\nand environment-dependent.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n \n\nNote that the `system` function need not be thread-safe. It is\nthe responsibility of the user to ensure that `system` is not\ncalled concurrently.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = SYSTEM(COMMAND)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nEXECUTE_COMMAND_LINE, which is part of the Fortran 2008 standard\nand should considered in new code for future portability. \n"
+ },
+ "IACHAR": {
+ "doc": "`IACHAR` \u2014 Code in ASCII collating sequence\n\n### Description\n`IACHAR(C)` returns the code for the ASCII character\nin the first character position of `C`.\n\n\n\n### Syntax\n`RESULT = IACHAR(C [, KIND])`\n\n\n### Arguments\n\n \n\n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind.\n\n\n\n### Example\n```\n\n\nprogram test_iachar\n\n\u00a0\u00a0integer i\n\n\u00a0\u00a0i = iachar(' ')\n\nend program test_iachar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nACHAR, CHAR, ICHAR\n\n "
+ },
+ "PRODUCT": {
+ "doc": "`PRODUCT` \u2014 Product of array elements\n\n### Description\nMultiplies the elements of `ARRAY` along dimension `DIM` if\nthe corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = PRODUCT(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n,\n`REAL` or `COMPLEX`. \n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the product of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_product\n\n\u00a0\u00a0INTEGER :: x(5) = (/ 1, 2, 3, 4 ,5 /)\n\n\u00a0\u00a0print *, PRODUCT(x) ! all elements, product = 120\n\n\u00a0\u00a0print *, PRODUCT(x, MASK=MOD(x, 2)==1) ! odd elements, product = 15\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSUM\n"
+ },
+ "XOR": {
+ "doc": "`XOR` \u2014 Bitwise logical exclusive OR\n\n### Description\nBitwise logical exclusive or.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IEOR intrinsic and for logical arguments the\n`.NEQV.` operator, which are both defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = XOR(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_xor\n\n\u00a0\u00a0LOGICAL :: T = .TRUE., F = .FALSE.\n\n\u00a0\u00a0INTEGER :: a, b\n\n\u00a0\u00a0DATA a / Z'F' /, b / Z'3' /\n\n\n\u00a0\u00a0WRITE (*,*) XOR(T, T), XOR(T, F), XOR(F, T), XOR(F, F)\n\n\u00a0\u00a0WRITE (*,*) XOR(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IEOR\n"
+ },
+ "MAXEXPONENT": {
+ "doc": "`MAXEXPONENT` \u2014 Maximum exponent of a real kind\n\n### Description\n`MAXEXPONENT(X)` returns the maximum exponent in the model of the\ntype of `X`.\n\n\n\n### Syntax\n`RESULT = MAXEXPONENT(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram exponents\n\n\u00a0\u00a0real(kind=4) :: x\n\n\u00a0\u00a0real(kind=8) :: y\n\n\n\u00a0\u00a0print *, minexponent(x), maxexponent(x)\n\n\u00a0\u00a0print *, minexponent(y), maxexponent(y)\n\nend program exponents\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "ERFC": {
+ "doc": "`ERFC` \u2014 Error function\n\n### Description\n`ERFC(X)` computes the complementary error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`. \nIt lies in the range 0 \\leq erfc (x) \\leq 2 .\n\n\n\n### Example\n```\n\n\nprogram test_erfc\n\n\u00a0\u00a0real(8) :: x = 0.17_8\n\n\u00a0\u00a0x = erfc(x)\n\nend program test_erfc\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERFC(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "FTELL": {
+ "doc": "`FTELL` \u2014 Current stream position\n\n### Description\nRetrieves the current position within an open file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `OFFSET = FTELL(UNIT)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `UNIT` | Shall of type `INTEGER`.\n\n\n\n\n\n\n### Return value\nIn either syntax, `OFFSET` is set to the current offset of unit\nnumber `UNIT`, or to -1 if the unit is not currently open.\n\n\n\n### Example\n```\n\n\nPROGRAM test_ftell\n\n\u00a0\u00a0INTEGER :: i\n\n\u00a0\u00a0OPEN(10, FILE=\"temp.dat\")\n\n\u00a0\u00a0CALL ftell(10,i)\n\n\u00a0\u00a0WRITE(*,*) i\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFSEEK\n"
+ },
+ "CPU_TIME": {
+ "doc": "`CPU_TIME` \u2014 CPU elapsed time in seconds\n\n### Description\nReturns a `REAL` value representing the elapsed CPU time in\nseconds. This is useful for testing segments of code to determine\nexecution time.\n\n \nIf a time source is available, time will be reported with microsecond\nresolution. If no time source is available, `TIME` is set to\n`-1.0`.\n\n \n\nNote that `TIME` may contain a, system dependent, arbitrary offset\nand may not start with `0.0`. For `CPU_TIME`, the absolute\nvalue is meaningless, only differences between subsequent calls to\nthis subroutine, as shown in the example below, should be used.\n\n\n\n\n### Syntax\n`CALL CPU_TIME(TIME)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\n```\n\n\nprogram test_cpu_time\n\n\u00a0\u00a0\u00a0\u00a0real :: start, finish\n\n\u00a0\u00a0\u00a0\u00a0call cpu_time(start)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0! put code to test here\n\n\u00a0\u00a0\u00a0\u00a0call cpu_time(finish)\n\n\u00a0\u00a0\u00a0\u00a0print '(\"Time = \",f6.3,\" seconds.\")',finish-start\n\nend program test_cpu_time\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nSYSTEM_CLOCK, DATE_AND_TIME\n"
+ },
+ "IALL": {
+ "doc": "`IALL` \u2014 Bitwise AND of array elements\n\n### Description\nReduces with bitwise AND the elements of `ARRAY` along dimension `DIM`\nif the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IALL(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise ALL of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iall\n\n\u00a0\u00a0INTEGER(1) :: a(2)\n\n\n\u00a0\u00a0a(1) = b'00100100'\n\n\u00a0\u00a0a(2) = b'01101010'\n\n\n\u00a0\u00a0! prints 00100000\n\n\u00a0\u00a0PRINT '(b8.8)', IALL(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IPARITY, IAND\n"
+ },
+ "PERROR": {
+ "doc": "`PERROR` \u2014 Print system error message\n\n### Description\nPrints (on the C `stderr` stream) a newline-terminated error\nmessage corresponding to the last system error. This is prefixed by\n`STRING`, a colon and a space. See `perror(3)`.\n\n\n\n### Syntax\n`CALL PERROR(STRING)`\n\n\n### Arguments\n\n \n and of the\ndefault kind.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nIERRNO\n"
+ },
+ "COMPILER_OPTIONS": {
+ "doc": "`COMPILER_OPTIONS` \u2014 Options passed to the compiler\n\n### Description\n`COMPILER_OPTIONS` returns a string with the options used for\ncompiling.\n\n\n\n### Syntax\n`STR = COMPILER_OPTIONS()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the compiler flags used to compile the file, which called\nthe `COMPILER_OPTIONS` intrinsic.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0compiler_version(), ' using the options ', &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_VERSION, ISO_FORTRAN_ENV\n"
+ },
+ "TRANSFER": {
+ "doc": "`TRANSFER` \u2014 Transfer bit patterns\n\n### Description\nInterprets the bitwise representation of `SOURCE` in memory as if it\nis the representation of a variable or array of the same type and type\nparameters as `MOLD`.\n\n \nThis is approximately equivalent to the C concept of casting one\ntype to another.\n\n\n\n\n### Syntax\n`RESULT = TRANSFER(SOURCE, MOLD[, SIZE])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be a scalar or an array of any type. \n\n | `MOLD` | Shall be a scalar or an array of any type. \n\n | `SIZE` | (Optional) shall be a scalar of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe result has the same type as `MOLD`, with the bit level\nrepresentation of `SOURCE`. If `SIZE` is present, the result is\na one-dimensional array of length `SIZE`. If `SIZE` is absent\nbut `MOLD` is an array (of any size or shape), the result is a one-\ndimensional array of the minimum length needed to contain the entirety\nof the bitwise representation of `SOURCE`. If `SIZE` is absent\nand `MOLD` is a scalar, the result is a scalar.\n\n \nIf the bitwise representation of the result is longer than that of\n`SOURCE`, then the leading bits of the result correspond to those of\n`SOURCE` and any trailing bits are filled arbitrarily.\n\n \n\nWhen the resulting bit representation does not correspond to a valid\nrepresentation of a variable of the same type as `MOLD`, the results\nare undefined, and subsequent operations on the result cannot be\nguaranteed to produce sensible behavior. For example, it is possible to\ncreate `LOGICAL` variables for which `VAR` and\n`.NOT.``VAR` both appear to be true.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_transfer\n\n\u00a0\u00a0integer :: x = 2143289344\n\n\u00a0\u00a0print *, transfer(x, 1.0) ! prints \"NaN\" on i686\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "ACHAR": {
+ "doc": "`ACHAR` \u2014 Character in ASCII collating sequence\n\n### Description\n`ACHAR(I)` returns the character located at position `I`in the ASCII collating sequence.\n\n\n\n### Syntax\n`RESULT = ACHAR(I [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `CHARACTER` with a length of one. \nIf the `KIND` argument is present, the return value is of the\nspecified kind and of the default kind otherwise.\n\n\n\n### Example\n```\n\n\nprogram test_achar\n\n\u00a0\u00a0character c\n\n\u00a0\u00a0c = achar(32)\n\nend program test_achar\n\n```\n\n\n\n### Notes\nSee ICHAR for a discussion of converting between numerical values\nand formatted string representations.\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCHAR, IACHAR, ICHAR\n\n "
+ },
+ "SHAPE": {
+ "doc": "`SHAPE` \u2014 Determine the shape of an array\n\n### Description\nDetermines the shape of an array.\n\n\n\n### Syntax\n`RESULT = SHAPE(SOURCE [, KIND])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array or scalar of any type. \nIf `SOURCE` is a pointer it must be associated and allocatable\narrays must be allocated. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nAn `INTEGER` array of rank one with as many elements as `SOURCE`\nhas dimensions. The elements of the resulting array correspond to the extend\nof `SOURCE` along the respective dimensions. If `SOURCE` is a scalar,\nthe result is the rank one array of size zero. If `KIND` is absent, the\nreturn value has the default integer kind otherwise the specified kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_shape\n\n\u00a0\u00a0INTEGER, DIMENSION(-1:1, -1:2) :: A\n\n\u00a0\u00a0WRITE(*,*) SHAPE(A) ! (/ 3, 4 /)\n\n\u00a0\u00a0WRITE(*,*) SIZE(SHAPE(42)) ! (/ /)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nRESHAPE, SIZE\n"
+ },
+ "IMAGE_INDEX": {
+ "doc": "`IMAGE_INDEX` \u2014 Function that converts a cosubscript to an image index\n\n### Description\nReturns the image index belonging to a cosubscript.\n\n\n\n### Syntax\n`RESULT = IMAGE_INDEX(COARRAY, SUB)`\n\n\n### Return value\nScalar default integer with the value of the image index which corresponds\nto the cosubscripts. For invalid cosubscripts the result is zero.\n\n\n\n### Example\n```\n\n\nINTEGER :: array[2,-1:4,8,*]\n\n! Writes 28 (or 0 if there are fewer than 28 images)\n\nWRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function.\n\n\n\n### See also\nTHIS_IMAGE, NUM_IMAGES\n"
+ },
+ "ACOSD": {
+ "doc": "`ACOSD` \u2014 Arccosine function, degrees\n\n### Description\nACOSD(X) computes the arccosine of X in degrees (inverse of COSD(X)).\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ACOSD(X)\n### Arguments\n- X: The type shall either be REAL with a magnitude that is less than or equal to one - or the type shall be COMPLEX.\n### Return value\nThe return value is of the same type and kind as X. The real part of the result is in degrees and lies in the range 0 \\leq \\Re \\acos(x) \\leq 180.\n"
+ },
+ "SHIFTA": {
+ "doc": "`SHIFTA` \u2014 Right shift with fill\n\n### Description\n`SHIFTA` returns a value corresponding to `I` with all of the\nbits shifted right by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the right end are lost. The fill is arithmetic: the\nbits shifted in from the left end are equal to the leftmost bit, which in\ntwo's complement representation is the sign bit.\n\n\n\n### Syntax\n`RESULT = SHIFTA(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nSHIFTL, SHIFTR\n"
+ },
+ "FPUT": {
+ "doc": "`FPUT` \u2014 Write a single character in stream mode to stdout\n\n### Description\nWrite a single character in stream mode to stdout by bypassing normal\nformatted output. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUT(C)` \n\n\n\n\n\n### Arguments\n\n \n and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fput\n\n\u00a0\u00a0CHARACTER(len=10) :: str = \"gfortran\"\n\n\u00a0\u00a0INTEGER :: i\n\n\u00a0\u00a0DO i = 1, len_trim(str)\n\n\u00a0\u00a0\u00a0\u00a0CALL fput(str(i:i))\n\n\u00a0\u00a0END DO\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUTC, FGET, FGETC\n"
+ },
+ "BTEST": {
+ "doc": "`BTEST` \u2014 Bit test function\n\n### Description\n`BTEST(I,POS)` returns logical `.TRUE.` if the bit at `POS`\nin `I` is set. The counting of the bits starts at 0.\n\n\n\n### Syntax\n`RESULT = BTEST(I, POS)`\n\n\n### Arguments\n\n \n. \n\n | `POS` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`\n\n\n### Example\n```\n\n\nprogram test_btest\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 32768 + 1024 + 64\n\n\u00a0\u00a0\u00a0\u00a0integer :: pos\n\n\u00a0\u00a0\u00a0\u00a0logical :: bool\n\n\u00a0\u00a0\u00a0\u00a0do pos=0,16\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0bool = btest(i, pos)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print *, pos, bool\n\n\u00a0\u00a0\u00a0\u00a0end do\n\nend program test_btest\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "POPPAR": {
+ "doc": "`POPPAR` \u2014 Parity of the number of bits set\n\n### Description\n`POPPAR(I)` returns parity of the integer `I`, i.e. the parity\nof the number of bits set ('1' bits) in the binary representation of\n`I`. It is equal to 0 if `I` has an even number of bits set,\nand 1 for an odd number of '1' bits.\n\n\n\n### Syntax\n`RESULT = POPPAR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Example\n```\n\n\nprogram test_population\n\n\u00a0\u00a0print *, popcnt(127), poppar(127)\n\n\u00a0\u00a0print *, popcnt(huge(0_4)), poppar(huge(0_4))\n\n\u00a0\u00a0print *, popcnt(huge(0_8)), poppar(huge(0_8))\n\nend program test_population\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nPOPCNT, LEADZ, TRAILZ\n\n\n"
+ },
+ "C_SIZEOF": {
+ "doc": "`C_SIZEOF` \u2014 Size in bytes of an expression\n\n### Description\n`C_SIZEOF(X)` calculates the number of bytes of storage the\nexpression `X` occupies.\n\n\n\n### Syntax\n`N = C_SIZEOF(X)`\n\n\n### Arguments\n\n \n | `X` | The argument shall be an interoperable data entity.\n\n\n\n\n\n\n### Return value\nThe return value is of type integer and of the system-dependent kind\n`C_SIZE_T` (from the `ISO_C_BINDING` module). Its value is the\nnumber of bytes occupied by the argument. If the argument has the\n`POINTER` attribute, the number of bytes of the storage area pointed\nto is returned. If the argument is of a derived type with `POINTER`or `ALLOCATABLE` components, the return value does not account for\nthe sizes of the data pointed to by these components.\n\n\n\n### Example\n```\n\n\nuse iso_c_binding\n\ninteger(c_int) :: i\n\nreal(c_float) :: r, s(5)\n\nprint *, (c_sizeof(s)/c_sizeof(r) == 5)\n\nend\n\n```\n\n \nThe example will print `.TRUE.` unless you are using a platform\nwhere default `REAL` variables are unusually padded.\n\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_C_BINDING`\n\n\n### See also\nSIZEOF, STORAGE_SIZE\n"
+ },
+ "ATOMIC_ADD": {
+ "doc": "`ATOMIC_ADD` \u2014 Atomic ADD operation\n\n### Description\n`ATOMIC_ADD(ATOM, VALUE)` atomically adds the value of `VAR` to the\nvariable `ATOM`. When `STAT` is present and the invokation was\nsuccessful, it is assigned the value 0. If it is present and the invokation\nhas failed, it is assigned a positive value; in particular, for a coindexed\n`ATOM`, if the remote image has stopped, it is assigned the value of\n`ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote image has\nfailed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_ADD (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*]\n\n\u00a0\u00a0call atomic_add (atom[1], this_image())\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_ADD, ISO_FORTRAN_ENV,\nATOMIC_AND, ATOMIC_OR, ATOMIC_XOR\n"
+ },
+ "TAND": {
+ "doc": "`TAND` \u2014 Tangent function, degrees\n\n### Description\nTAND(X) computes the tangent of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = TAND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
+ },
+ "ACOSH": {
+ "doc": "`ACOSH` \u2014 Inverse hyperbolic cosine function\n\n### Description\n`ACOSH(X)` computes the inverse hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`RESULT = ACOSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has the same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians and lies between\n 0 \\leq \\Im \\acosh(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nPROGRAM test_acosh\n\n\u00a0\u00a0REAL(8), DIMENSION(3) :: x = (/ 1.0, 2.0, 3.0 /)\n\n\u00a0\u00a0WRITE (*,*) ACOSH(x)\n\nEND PROGRAM\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DACOSH(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COSH\n"
+ },
+ "SELECTED_REAL_KIND": {
+ "doc": "`SELECTED_REAL_KIND` \u2014 Choose real kind\n\n### Description\n`SELECTED_REAL_KIND(P,R)` returns the kind value of a real data type\nwith decimal precision of at least `P` digits, exponent range of\nat least `R`, and with a radix of `RADIX`.\n\n\n\n### Syntax\n`RESULT = SELECTED_REAL_KIND([P, R, RADIX])`\n\n\n### Arguments\n\n \n. \n\n | `R` | (Optional) shall be a scalar and of type `INTEGER`. \n\n | `RADIX` | (Optional) shall be a scalar and of type `INTEGER`.\n\n\nBefore Fortran 2008, at least one of the arguments `R` or `P` shall\nbe present; since Fortran 2008, they are assumed to be zero if absent.\n\n\n\n\n### Return value\n\n`SELECTED_REAL_KIND` returns the value of the kind type parameter of\na real data type with decimal precision of at least `P` digits, a\ndecimal exponent range of at least `R`, and with the requested\n`RADIX`. If the `RADIX` parameter is absent, real kinds with\nany radix can be returned. If more than one real data type meet the\ncriteria, the kind of the data type with the smallest decimal precision\nis returned. If no real data type matches the criteria, the result is\n \n**-1 if the processor does not support a real data type with a** precision greater than or equal to `P`, but the `R` and\n`RADIX` requirements can be fulfilled\n\n**-2 if the processor does not support a real type with an exponent** range greater than or equal to `R`, but `P` and `RADIX`are fulfillable\n\n**-3 if `RADIX` but not `P` and `R` requirements** are fulfillable\n\n**-4 if `RADIX` and either `P` or `R` requirements** are fulfillable\n\n- -5 if there is no real type with the given `RADIX`
\n\n\n\n### Example\n```\n\n\nprogram real_kinds\n\n\u00a0\u00a0integer,parameter :: p6 = selected_real_kind(6)\n\n\u00a0\u00a0integer,parameter :: p10r100 = selected_real_kind(10,100)\n\n\u00a0\u00a0integer,parameter :: r400 = selected_real_kind(r=400)\n\n\u00a0\u00a0real(kind=p6) :: x\n\n\u00a0\u00a0real(kind=p10r100) :: y\n\n\u00a0\u00a0real(kind=r400) :: z\n\n\n\u00a0\u00a0print *, precision(x), range(x)\n\n\u00a0\u00a0print *, precision(y), range(y)\n\n\u00a0\u00a0print *, precision(z), range(z)\n\nend program real_kinds\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `RADIX` Fortran 2008 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nPRECISION, RANGE, RADIX\n\n\n"
+ },
+ "FGETC": {
+ "doc": "`FGETC` \u2014 Read a single character in stream mode\n\n### Description\nRead a single character in stream mode by bypassing normal formatted output. \nStream I/O should not be mixed with normal record-oriented (formatted or\nunformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility\nwith *g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FGETC(UNIT, C)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fgetc\n\n\u00a0\u00a0INTEGER :: fd = 42, status\n\n\u00a0\u00a0CHARACTER :: c\n\n\n\u00a0\u00a0OPEN(UNIT=fd, FILE=\"/etc/passwd\", ACTION=\"READ\", STATUS = \"OLD\")\n\n\u00a0\u00a0DO\n\n\u00a0\u00a0\u00a0\u00a0CALL fgetc(fd, c, status)\n\n\u00a0\u00a0\u00a0\u00a0IF (status /= 0) EXIT\n\n\u00a0\u00a0\u00a0\u00a0call fput(c)\n\n\u00a0\u00a0END DO\n\n\u00a0\u00a0CLOSE(UNIT=fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFGET, FPUT, FPUTC\n"
+ },
+ "EXIT": {
+ "doc": "`EXIT` \u2014 Exit the program with status.\n\n### Description\n`EXIT` causes immediate termination of the program with status. If status\nis omitted it returns the canonical success for the system. All Fortran\nI/O units are closed.\n\n\n\n### Syntax\n`CALL EXIT([STATUS])`\n\n\n### Arguments\n\n \n of the default kind.\n\n\n\n\n\n\n### Return value\n`STATUS` is passed to the parent process on exit.\n\n\n\n### Example\n```\n\n\nprogram test_exit\n\n\u00a0\u00a0integer :: STATUS = 0\n\n\u00a0\u00a0print *, 'This program is going to exit.'\n\n\u00a0\u00a0call EXIT(STATUS)\n\nend program test_exit\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT, KILL\n"
+ },
+ "SELECTED_CHAR_KIND": {
+ "doc": "`SELECTED_CHAR_KIND` \u2014 Choose character kind\n\n### Description\n\n`SELECTED_CHAR_KIND(NAME)` returns the kind value for the character\nset named `NAME`, if a character set with such a name is supported,\nor -1 otherwise. Currently, supported character sets include\n\u201cASCII\u201d and \u201cDEFAULT\u201d, which are equivalent, and \u201cISO_10646\u201d\n(Universal Character Set, UCS-4) which is commonly known as Unicode.\n\n\n\n### Syntax\n`RESULT = SELECTED_CHAR_KIND(NAME)`\n\n\n### Arguments\n\n \n | `NAME` | Shall be a scalar and of the default character type.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram character_kind\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0integer, parameter :: ascii = selected_char_kind (\"ascii\")\n\n\u00a0\u00a0integer, parameter :: ucs4 = selected_char_kind ('ISO_10646')\n\n\n\u00a0\u00a0character(kind=ascii, len=26) :: alphabet\n\n\u00a0\u00a0character(kind=ucs4, len=30) :: hello_world\n\n\n\u00a0\u00a0alphabet = ascii_\"abcdefghijklmnopqrstuvwxyz\"\n\n\u00a0\u00a0hello_world = ucs4_'Hello World and Ni Hao -- ' &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// char (int (z'4F60'), ucs4) &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0// char (int (z'597D'), ucs4)\n\n\n\u00a0\u00a0write (*,*) alphabet\n\n\n\u00a0\u00a0open (output_unit, encoding='UTF-8')\n\n\u00a0\u00a0write (*,*) trim (hello_world)\n\nend program character_kind\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "BLE": {
+ "doc": "`BLE` \u2014 Bitwise less than or equal to\n\n### Description\nDetermines whether an integral is a bitwise less than or equal to\nanother.\n\n\n\n### Syntax\n`RESULT = BLE(I, J)`\n\n\n### Arguments\n\n \n type. \n\n | `J` | Shall be of `INTEGER` type, and of the same kind\nas `I`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL` and of the default kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nBGT, BGE, BLT\n"
+ },
+ "MALLOC": {
+ "doc": "`MALLOC` \u2014 Allocate dynamic memory\n\n### Description\n`MALLOC(SIZE)` allocates `SIZE` bytes of dynamic memory and\nreturns the address of the allocated memory. The `MALLOC` intrinsic\nis an extension intended to be used with Cray pointers, and is provided\nin GNU Fortran to allow the user to compile legacy code. For new code\nusing Fortran 95 pointers, the memory allocation intrinsic is\n`ALLOCATE`.\n\n\n\n### Syntax\n`PTR = MALLOC(SIZE)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER(K)`, with `K` such that\nvariables of type `INTEGER(K)` have the same size as\nC pointers (`sizeof(void *)`).\n\n\n\n### Example\nThe following example demonstrates the use of `MALLOC` and\n`FREE` with Cray pointers.\n\n```\n\n\nprogram test_malloc\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0integer i\n\n\u00a0\u00a0real*8 x(*), z\n\n\u00a0\u00a0pointer(ptr_x,x)\n\n\n\u00a0\u00a0ptr_x = malloc(20*8)\n\n\u00a0\u00a0do i = 1, 20\n\n\u00a0\u00a0\u00a0\u00a0x(i) = sqrt(1.0d0 / i)\n\n\u00a0\u00a0end do\n\n\u00a0\u00a0z = 0\n\n\u00a0\u00a0do i = 1, 20\n\n\u00a0\u00a0\u00a0\u00a0z = z + x(i)\n\n\u00a0\u00a0\u00a0\u00a0print *, z\n\n\u00a0\u00a0end do\n\n\u00a0\u00a0call free(ptr_x)\n\nend program test_malloc\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFREE\n"
+ },
+ "C_ASSOCIATED": {
+ "doc": "`C_ASSOCIATED` \u2014 Status of a C pointer\n\n### Description\n`C_ASSOCIATED(c_ptr_1[, c_ptr_2])` determines the status of the C pointer\n`c_ptr_1` or if `c_ptr_1` is associated with the target `c_ptr_2`.\n\n\n\n### Syntax\n`RESULT = C_ASSOCIATED(c_ptr_1[, c_ptr_2])`\n\n\n### Arguments\n\n \n. \n\n | `c_ptr_2` | (Optional) Scalar of the same type as `c_ptr_1`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `LOGICAL`; it is `.false.` if either\n`c_ptr_1` is a C NULL pointer or if `c_ptr1` and `c_ptr_2`\npoint to different addresses.\n\n\n\n### Example\n```\n\n\nsubroutine association_test(a,b)\n\n\u00a0\u00a0use iso_c_binding, only: c_associated, c_loc, c_ptr\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0real, pointer :: a\n\n\u00a0\u00a0type(c_ptr) :: b\n\n\u00a0\u00a0if(c_associated(b, c_loc(a))) &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0stop 'b and a do not point to same target'\n\nend subroutine association_test\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nC_LOC, C_FUNLOC\n"
+ },
+ "IS_IOSTAT_EOR": {
+ "doc": "`IS_IOSTAT_EOR` \u2014 Test for end-of-record value\n\n### Description\n`IS_IOSTAT_EOR` tests whether an variable has the value of the I/O\nstatus \u201cend of record\u201d. The function is equivalent to comparing the\nvariable with the `IOSTAT_EOR` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_EOR(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n\u00a0\u00a0IMPLICIT NONE\n\n\u00a0\u00a0INTEGER :: stat, i(50)\n\n\u00a0\u00a0OPEN(88, FILE='test.dat', FORM='UNFORMATTED')\n\n\u00a0\u00a0READ(88, IOSTAT=stat) i\n\n\u00a0\u00a0IF(IS_IOSTAT_EOR(stat)) STOP 'END OF RECORD'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "FREE": {
+ "doc": "`FREE` \u2014 Frees memory\n\n### Description\nFrees memory previously allocated by `MALLOC`. The `FREE`intrinsic is an extension intended to be used with Cray pointers, and is\nprovided in GNU Fortran to allow user to compile legacy code. For\nnew code using Fortran 95 pointers, the memory de-allocation intrinsic is\n`DEALLOCATE`.\n\n\n\n### Syntax\n`CALL FREE(PTR)`\n\n\n### Arguments\n\n \n. It represents the\nlocation of the memory that should be de-allocated.\n\n\n\n\n\n\n### Return value\nNone\n\n\n\n### Example\nSee `MALLOC` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nMALLOC\n"
+ },
+ "COUNT": {
+ "doc": "`COUNT` \u2014 Count function\n\n### Description\n\nCounts the number of `.TRUE.` elements in a logical `MASK`,\nor, if the `DIM` argument is supplied, counts the number of\nelements along each row of the array in the `DIM` direction. \nIf the array has zero size, or all of the elements of `MASK` are\n`.FALSE.`, then the result is `0`.\n\n\n\n### Syntax\n`RESULT = COUNT(MASK [, DIM, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `DIM` | (Optional) The type shall be `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is present, the result is an array with a rank one less\nthan the rank of `ARRAY`, and a size corresponding to the shape\nof `ARRAY` with the `DIM` dimension removed.\n\n\n\n### Example\n```\n\n\nprogram test_count\n\n\u00a0\u00a0\u00a0\u00a0integer, dimension(2,3) :: a, b\n\n\u00a0\u00a0\u00a0\u00a0logical, dimension(2,3) :: mask\n\n\u00a0\u00a0\u00a0\u00a0a = reshape( (/ 1, 2, 3, 4, 5, 6 /), (/ 2, 3 /))\n\n\u00a0\u00a0\u00a0\u00a0b = reshape( (/ 0, 7, 3, 4, 5, 8 /), (/ 2, 3 /))\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', b(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', b(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0mask = a.ne.b\n\n\u00a0\u00a0\u00a0\u00a0print '(3l3)', mask(1,:)\n\n\u00a0\u00a0\u00a0\u00a0print '(3l3)', mask(2,:)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', count(mask)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', count(mask, 1)\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', count(mask, 2)\n\nend program test_count\n\n```\n\n \n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "CMPLX": {
+ "doc": "`CMPLX` \u2014 Complex conversion function\n\n### Description\n`CMPLX(X [, Y [, KIND]])` returns a complex number where `X` is converted to\nthe real component. If `Y` is present it is converted to the imaginary\ncomponent. If `Y` is not present then the imaginary component is set to\n0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = CMPLX(X [, Y [, KIND]])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional; only allowed if `X` is not\n`COMPLEX`.) May be `INTEGER` or `REAL`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of `COMPLEX` type, with a kind equal to\n`KIND` if it is specified. If `KIND` is not specified, the\nresult is of the default `COMPLEX` kind, regardless of the kinds of\n`X` and `Y`.\n\n\n\n### Example\n```\n\n\nprogram test_cmplx\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 42\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 3.14\n\n\u00a0\u00a0\u00a0\u00a0complex :: z\n\n\u00a0\u00a0\u00a0\u00a0z = cmplx(i, x)\n\n\u00a0\u00a0\u00a0\u00a0print *, z, cmplx(x)\n\nend program test_cmplx\n\n```\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCOMPLEX\n"
+ },
+ "RANK": {
+ "doc": "`RANK` \u2014 Rank of a data object\n\n### Description\n`RANK(A)` returns the rank of a scalar or array data object.\n\n\n\n### Syntax\n`RESULT = RANK(A)`\n\n\n### Arguments\n\n \n | `A` | can be of any type\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind. For arrays, their rank is returned; for scalars zero is returned.\n\n\n\n### Example\n```\n\n\nprogram test_rank\n\n\u00a0\u00a0integer :: a\n\n\u00a0\u00a0real, allocatable :: b(:,:)\n\n\n\u00a0\u00a0print *, rank(a), rank(b) ! Prints: 0 2\n\nend program test_rank\n\n```\n\n \n\n### Standard\nTechnical Specification (TS) 29113\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "MASKL": {
+ "doc": "`MASKL` \u2014 Left justified mask\n\n### Description\n`MASKL(I[, KIND])` has its leftmost `I` bits set to 1, and the\nremaining bits set to 0.\n\n\n\n### Syntax\n`RESULT = MASKL(I[, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | Shall be a scalar constant expression of type\n`INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`. If `KIND` is present, it\nspecifies the kind value of the return type; otherwise, it is of the\ndefault integer kind.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMASKR\n"
+ },
+ "FINDLOC": {
+ "doc": "`FINDLOC` \u2014 Search an array for a value\n\n### Description\nDetermines the location of the element in the array with the value given in the VALUE argument, or, if the DIM argument is supplied, determines the locations of the maximum element along each row of the array in the DIM direction. If MASK is present, only the elements for which MASK is .TRUE. are considered. If more than one element in the array has the value VALUE, the location returned is that of the first such element in array element order if the BACK is not present or if it is .FALSE.. If BACK is true, the location returned is that of the last such element. If the array has zero size, or all of the elements of MASK are .FALSE., then the result is an array of zeroes. Similarly, if DIM is supplied and all of the elements of MASK along a given row are zero, the result value for that row is zero.\n### Standard\nFortran 2008 and later.\n### Class\nTransformational function\n### Syntax\nRESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])\nRESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])\n### Arguments\n- ARRAY: Shall be an array of intrinsic type.\n- VALUE: A scalar of intrinsic type which is in type conformance with ARRAY.\n- DIM: (Optional) Shall be a scalar of type INTEGER, with a value between one and the rank of ARRAY, inclusive. It may not be an optional dummy argument.\n- KIND: (Optional) An INTEGER initialization expression indicating the kind parameter of the result.\n- BACK: (Optional) A scalar of type LOGICAL.\n### Return value\nIf DIM is absent, the result is a rank-one array with a length equal to the rank of ARRAY. If DIM is present, the result is an array with a rank one less than the rank of ARRAY, and a size corresponding to the size of ARRAY with the DIM dimension removed. If DIM is present and ARRAY has a rank of one, the result is a scalar. If the optional argument KIND is present, the result is an integer of kind KIND, otherwise it is of default kind.\n"
+ },
+ "CHMOD": {
+ "doc": "`CHMOD` \u2014 Change access permissions of files\n\n### Description\n`CHMOD` changes the permissions of a file.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHMOD(NAME, MODE)` \n\n\n\n\n\n### Arguments\n\n \n\n | `NAME` | Scalar `CHARACTER` of default kind with the\nfile name. Trailing blanks are ignored unless the character\n`achar(0)` is present, then all characters up to and excluding\n`achar(0)` are used as the file name.\n\n \n\n\n | `MODE` | Scalar `CHARACTER` of default kind giving the\nfile permission. `MODE` uses the same syntax as the `chmod` utility\nas defined by the POSIX standard. The argument shall either be a string of\na nonnegative octal number or a symbolic mode.\n\n \n\n\n | `STATUS` | (optional) scalar `INTEGER`, which is\n`0` on success and nonzero otherwise.\n\n\n\n\n\n\n### Return value\nIn either syntax, `STATUS` is set to `0` on success and nonzero\notherwise.\n\n\n\n### Example\n`CHMOD` as subroutine\n```\n\n\nprogram chmod_test\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0integer :: status\n\n\u00a0\u00a0call chmod('test.dat','u+x',status)\n\n\u00a0\u00a0print *, 'Status: ', status\n\nend program chmod_test\n\n```\n\n \n`CHMOD` as function:\n \n program chmod_test\n implicit none\n integer :: status\n status = chmod('test.dat','u+x')\n print *, 'Status: ', status\n end program chmod_test\n \n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n"
+ },
+ "COSH": {
+ "doc": "`COSH` \u2014 Hyperbolic cosine function\n\n### Description\n`COSH(X)` computes the hyperbolic cosine of `X`.\n\n\n\n### Syntax\n`X = COSH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`. If `X` is\ncomplex, the imaginary part of the result is in radians. If `X`\nis `REAL`, the return value has a lower bound of one,\n\\cosh (x) \\geq 1.\n\n\n\n### Example\n```\n\n\nprogram test_cosh\n\n\u00a0\u00a0real(8) :: x = 1.0_8\n\n\u00a0\u00a0x = cosh(x)\n\nend program test_cosh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `COSH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DCOSH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: ACOSH\n\n "
+ },
+ "LSHIFT": {
+ "doc": "`LSHIFT` \u2014 Left shift bits\n\n### Description\n`LSHIFT` returns a value corresponding to `I` with all of the\nbits shifted left by `SHIFT` places. If the absolute value of\n`SHIFT` is greater than `BIT_SIZE(I)`, the value is undefined. \nBits shifted out from the left end are lost; zeros are shifted in from\nthe opposite end.\n\n \nThis function has been superseded by the `ISHFT` intrinsic, which\nis standard in Fortran 95 and later, and the `SHIFTL` intrinsic,\nwhich is standard in Fortran 2008 and later.\n\n\n\n\n### Syntax\n`RESULT = LSHIFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFT, ISHFTC, RSHIFT, SHIFTA, SHIFTL,\nSHIFTR\n\n "
+ },
+ "HUGE": {
+ "doc": "`HUGE` \u2014 Largest number of a kind\n\n### Description\n`HUGE(X)` returns the largest number that is not an infinity in\nthe model of the type of `X`.\n\n\n\n### Syntax\n`RESULT = HUGE(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`\n\n\n\n### Example\n```\n\n\nprogram test_huge_tiny\n\n\u00a0\u00a0print *, huge(0), huge(0.0), huge(0.0d0)\n\n\u00a0\u00a0print *, tiny(0.0), tiny(0.0d0)\n\nend program test_huge_tiny\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "TIME": {
+ "doc": "`TIME` \u2014 Time function\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n \n\nSee TIME8, for information on a similar intrinsic that might be\nportable to more GNU Fortran implementations, though to fewer Fortran\ncompilers.\n\n\n\n\n### Syntax\n`RESULT = TIME()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME8\n\n "
+ },
+ "SQRT": {
+ "doc": "`SQRT` \u2014 Square-root function\n\n### Description\n`SQRT(X)` computes the square root of `X`.\n\n\n\n### Syntax\n`RESULT = SQRT(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sqrt\n\n\u00a0\u00a0real(8) :: x = 2.0_8\n\n\u00a0\u00a0complex :: z = (1.0, 2.0)\n\n\u00a0\u00a0x = sqrt(x)\n\n\u00a0\u00a0z = sqrt(z)\n\nend program test_sqrt\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SQRT(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSQRT(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n | `CSQRT(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | Fortran 95 and later\n\n | `ZSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n | `CDSQRT(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "SIN": {
+ "doc": "`SIN` \u2014 Sine function\n\n### Description\n`SIN(X)` computes the sine of `X`.\n\n\n\n### Syntax\n`RESULT = SIN(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sin\n\n\u00a0\u00a0real :: x = 0.0\n\n\u00a0\u00a0x = sin(x)\n\nend program test_sin\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SIN(X)` | `REAL(4) X` | `REAL(4)` | f77, gnu\n\n | `DSIN(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CSIN(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDSIN(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASIN\n"
+ },
+ "TIME8": {
+ "doc": "`TIME8` \u2014 Time function (64-bit)\n\n### Description\nReturns the current time encoded as an integer (in the manner of the\nfunction `time(3)` in the C standard library). This value is\nsuitable for passing to `CTIME`, `GMTIME`, and `LTIME`.\n\n \nWarning: this intrinsic does not increase the range of the timing\nvalues over that returned by `time(3)`. On a system with a 32-bit\n`time(3)`, `TIME8` will return a 32-bit value, even though\nit is converted to a 64-bit `INTEGER(8)` value. That means\noverflows of the 32-bit value can still occur. Therefore, the values\nreturned by this intrinsic might be or become negative or numerically\nless than previous values during a single run of the compiled program.\n\n\n\n\n### Syntax\n`RESULT = TIME8()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(8)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK8, TIME\n\n "
+ },
+ "RADIX": {
+ "doc": "`RADIX` \u2014 Base of a model number\n\n### Description\n`RADIX(X)` returns the base of the model representing the entity `X`.\n\n\n\n### Syntax\n`RESULT = RADIX(X)`\n\n\n### Arguments\n\n \n\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `INTEGER` and of the default\ninteger kind.\n\n\n\n### Example\n```\n\n\nprogram test_radix\n\n\u00a0\u00a0print *, \"The radix for the default integer kind is\", radix(0)\n\n\u00a0\u00a0print *, \"The radix for the default real kind is\", radix(0.0)\n\nend program test_radix\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nSELECTED_REAL_KIND\n\n\n"
+ },
+ "DOT_PRODUCT": {
+ "doc": "`DOT_PRODUCT` \u2014 Dot product function\n\n### Description\n`DOT_PRODUCT(VECTOR_A, VECTOR_B)` computes the dot product multiplication\nof two vectors `VECTOR_A` and `VECTOR_B`. The two vectors may be\neither numeric or logical and must be arrays of rank one and of equal size. If\nthe vectors are `INTEGER` or `REAL`, the result is\n`SUM(VECTOR_A*VECTOR_B)`. If the vectors are `COMPLEX`, the result\nis `SUM(CONJG(VECTOR_A)*VECTOR_B)`. If the vectors are `LOGICAL`,\nthe result is `ANY(VECTOR_A .AND. VECTOR_B)`.\n\n\n\n### Syntax\n`RESULT = DOT_PRODUCT(VECTOR_A, VECTOR_B)`\n\n\n### Arguments\n\n \n, rank 1. \n\n | `VECTOR_B` | The type shall be numeric if `VECTOR_A` is of numeric type or `LOGICAL` if `VECTOR_A` is of type `LOGICAL`. `VECTOR_B` shall be a rank-one array.\n\n\n\n\n\n\n### Return value\nIf the arguments are numeric, the return value is a scalar of numeric type,\n`INTEGER`, `REAL`, or `COMPLEX`. If the arguments are\n`LOGICAL`, the return value is `.TRUE.` or `.FALSE.`.\n\n\n\n### Example\n```\n\n\nprogram test_dot_prod\n\n\u00a0\u00a0\u00a0\u00a0integer, dimension(3) :: a, b\n\n\u00a0\u00a0\u00a0\u00a0a = (/ 1, 2, 3 /)\n\n\u00a0\u00a0\u00a0\u00a0b = (/ 4, 5, 6 /)\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', a\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print '(3i3)', b\n\n\u00a0\u00a0\u00a0\u00a0print *\n\n\u00a0\u00a0\u00a0\u00a0print *, dot_product(a,b)\n\nend program test_dot_prod\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "ATOMIC_OR": {
+ "doc": "`ATOMIC_OR` \u2014 Atomic bitwise OR operation\n\n### Description\n`ATOMIC_OR(ATOM, VALUE)` atomically defines `ATOM` with the bitwise\nAND between the values of `ATOM` and `VALUE`. When `STAT` is present\nand the invokation was successful, it is assigned the value 0. If it is present\nand the invokation has failed, it is assigned a positive value; in particular,\nfor a coindexed `ATOM`, if the remote image has stopped, it is assigned the\nvalue of `ISO_FORTRAN_ENV`'s `STAT_STOPPED_IMAGE` and if the remote\nimage has failed, the value `STAT_FAILED_IMAGE`.\n\n\n\n### Syntax\n`CALL ATOMIC_OR (ATOM, VALUE [, STAT])`\n\n\n### Arguments\n\n \n | `ATOM` | Scalar coarray or coindexed variable of integer\ntype with `ATOMIC_INT_KIND` kind. \n\n | `VALUE` | Scalar of the same type as `ATOM`. If the kind\nis different, the value is converted to the kind of `ATOM`. \n\n | `STAT` | (optional) Scalar default-kind integer variable.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram atomic\n\n\u00a0\u00a0use iso_fortran_env\n\n\u00a0\u00a0integer(atomic_int_kind) :: atom[*]\n\n\u00a0\u00a0call atomic_or (atom[1], int(b'10100011101'))\n\nend program atomic\n\n```\n\n\n\n### Standard\nTS 18508 or later\n\n\n\n### Class\nAtomic subroutine\n\n\n\n### See also\nATOMIC_DEFINE, ATOMIC_FETCH_OR, ISO_FORTRAN_ENV,\nATOMIC_ADD, ATOMIC_OR, ATOMIC_XOR\n"
+ },
+ "INT8": {
+ "doc": "`INT8` \u2014 Convert to 64-bit integer type\n\n### Description\nConvert to a `KIND=8` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=8`, and is only included for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = INT8(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(8)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, LONG\n"
+ },
+ "IOR": {
+ "doc": "`IOR` \u2014 Bitwise logical or\n\n### Description\n`IOR` returns the bitwise Boolean inclusive-OR of `I` and\n`J`.\n\n\n\n### Syntax\n`RESULT = IOR(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIEOR, IAND, IBITS, IBSET, IBCLR, NOT\n"
+ },
+ "LCOBOUND": {
+ "doc": "`LCOBOUND` \u2014 Lower codimension bounds of an array\n\n### Description\nReturns the lower bounds of a coarray, or a single lower cobound\nalong the `DIM` codimension. \n\n\n### Syntax\n`RESULT = LCOBOUND(COARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an coarray, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the lower cobounds of\n`COARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the lower cobound of the array along that codimension.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nUCOBOUND, LBOUND\n"
+ },
+ "ISHFT": {
+ "doc": "`ISHFT` \u2014 Shift bits\n\n### Description\n`ISHFT` returns a value corresponding to `I` with all of the\nbits shifted `SHIFT` places. A value of `SHIFT` greater than\nzero corresponds to a left shift, a value of zero corresponds to no\nshift, and a value less than zero corresponds to a right shift. If the\nabsolute value of `SHIFT` is greater than `BIT_SIZE(I)`, the\nvalue is undefined. Bits shifted out from the left end or right end are\nlost; zeros are shifted in from the opposite end.\n\n\n\n### Syntax\n`RESULT = ISHFT(I, SHIFT)`\n\n\n### Arguments\n\n \n. \n\n | `SHIFT` | The type shall be `INTEGER`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the same kind as\n`I`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nISHFTC\n"
+ },
+ "CO_SUM": {
+ "doc": "`CO_SUM` \u2014 Sum of values on the current set of images\n\n### Description\n`CO_SUM` sums up the values of each element of `A` on all\nimages of the current team. If `RESULT_IMAGE` is present, the summed-up\nvalues are returned in `A` on the specified image only and the value\nof `A` on the other images become undefined. If `RESULT_IMAGE` is\nnot present, the value is returned on all images. If the execution was\nsuccessful and `STAT` is present, it is assigned the value zero. If the\nexecution failed, `STAT` gets assigned a nonzero value and, if present,\n`ERRMSG` gets assigned a value describing the occurred error.\n\n\n\n### Syntax\n`CALL CO_MIN(A [, RESULT_IMAGE, STAT, ERRMSG])`\n\n\n### Arguments\n\n \n | `A` | shall be an integer, real or complex variable,\nwhich has the same type and type parameters on all images of the team. \n\n | `RESULT_IMAGE` | (optional) a scalar integer expression; if\npresent, it shall have the same the same value on all images and refer to an\nimage of the current team. \n\n | `STAT` | (optional) a scalar integer variable\n\n | `ERRMSG` | (optional) a scalar character variable\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test\n\n\u00a0\u00a0integer :: val\n\n\u00a0\u00a0val = this_image ()\n\n\u00a0\u00a0call co_sum (val, result_image=1)\n\n\u00a0\u00a0if (this_image() == 1) then\n\n\u00a0\u00a0\u00a0\u00a0write(*,*) \"The sum is \", val ! prints (n**2 + n)/2, with n = num_images()\n\n\u00a0\u00a0end if\n\nend program test\n\n```\n\n\n\n### Standard\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nCollective subroutine\n\n\n\n### See also\nCO_MAX, CO_MIN, CO_REDUCE, CO_BROADCAST\n"
+ },
+ "IPARITY": {
+ "doc": "`IPARITY` \u2014 Bitwise XOR of array elements\n\n### Description\nReduces with bitwise XOR (exclusive or) the elements of `ARRAY` along\ndimension `DIM` if the corresponding element in `MASK` is `TRUE`.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = IPARITY(ARRAY, DIM[, MASK])` \n\n\n\n\n\n### Arguments\n\n \n\n\n | `DIM` | (Optional) shall be a scalar of type\n`INTEGER` with a value in the range from 1 to n, where n\nequals the rank of `ARRAY`. \n\n | `MASK` | (Optional) shall be of type `LOGICAL`and either be a scalar or an array of the same shape as `ARRAY`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type as `ARRAY`.\n\n \nIf `DIM` is absent, a scalar with the bitwise XOR of all elements in\n`ARRAY` is returned. Otherwise, an array of rank n-1, where n equals\nthe rank of `ARRAY`, and a shape similar to that of `ARRAY` with\ndimension `DIM` dropped is returned.\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_iparity\n\n\u00a0\u00a0INTEGER(1) :: a(2)\n\n\n\u00a0\u00a0a(1) = b'00100100'\n\n\u00a0\u00a0a(2) = b'01101010'\n\n\n\u00a0\u00a0! prints 01001110\n\n\u00a0\u00a0PRINT '(b8.8)', IPARITY(a)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nIANY, IALL, IEOR, PARITY\n"
+ },
+ "MINLOC": {
+ "doc": "`MINLOC` \u2014 Location of the minimum value within an array\n\n### Description\nDetermines the location of the element in the array with the minimum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the minimum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the minimum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MINLOC(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMIN, MINVAL\n\n "
+ },
+ "MODULO": {
+ "doc": "`MODULO` \u2014 Modulo function\n\n### Description\n`MODULO(A,P)` computes the `A` modulo `P`.\n\n\n\n### Syntax\n`RESULT = MODULO(A, P)`\n\n\n### Arguments\n\n \n. \n\n | `P` | Shall be a scalar of the same type and kind as `A`. \nIt shall not be zero.\n\n\n\n\n\n\n### Return value\nThe type and kind of the result are those of the arguments.\n \n**If `A` and `P` are of type `INTEGER`:** `MODULO(A,P)` has the value `R` such that `A=Q*P+R`, where\n`Q` is an integer and `R` is between 0 (inclusive) and `P`\n(exclusive). \n\n**If `A` and `P` are of type `REAL`:** `MODULO(A,P)` has the value of `A - FLOOR (A / P) * P`. \n\n \n The returned value has the same sign as P and a magnitude less than\nthe magnitude of P.\n\n\n\n### Example\n```\n\n\nprogram test_modulo\n\n\u00a0\u00a0print *, modulo(17,3)\n\n\u00a0\u00a0print *, modulo(17.5,5.5)\n\n\n\u00a0\u00a0print *, modulo(-17,3)\n\n\u00a0\u00a0print *, modulo(-17.5,5.5)\n\n\n\u00a0\u00a0print *, modulo(17,-3)\n\n\u00a0\u00a0print *, modulo(17.5,-5.5)\n\nend program\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMOD\n\n "
+ },
+ "ITIME": {
+ "doc": "`ITIME` \u2014 Get current local time subroutine (hour/minutes/seconds)\n\n### Description\n`IDATE(VALUES)` Fills `VALUES` with the numerical values at the\ncurrent local time. The hour (in the range 1-24), minute (in the range 1-60),\nand seconds (in the range 1-60) appear in elements 1, 2, and 3 of `VALUES`,\nrespectively.\n\n\n\n### Syntax\n`CALL ITIME(VALUES)`\n\n\n### Arguments\n\n \n\nand the kind shall be the default integer kind.\n\n\n\n\n\n\n### Return value\nDoes not return anything.\n\n\n\n### Example\n```\n\n\nprogram test_itime\n\n\u00a0\u00a0integer, dimension(3) :: tarray\n\n\u00a0\u00a0call itime(tarray)\n\n\u00a0\u00a0print *, tarray(1)\n\n\u00a0\u00a0print *, tarray(2)\n\n\u00a0\u00a0print *, tarray(3)\n\nend program test_itime\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "FPUTC": {
+ "doc": "`FPUTC` \u2014 Write a single character in stream mode\n\n### Description\nWrite a single character in stream mode by bypassing normal formatted\noutput. Stream I/O should not be mixed with normal record-oriented\n(formatted or unformatted) I/O on the same unit; the results are unpredictable.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n \n\nNote that the `FGET` intrinsic is provided for backwards compatibility with\n*g77*. GNU Fortran provides the Fortran 2003 Stream facility. \nProgrammers should consider the use of new stream IO feature in new code\nfor future portability. See also Fortran 2003 status.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FPUTC(UNIT, C)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `C` | The type shall be `CHARACTER` and of default\nkind. \n\n | `STATUS` | (Optional) status flag of type `INTEGER`. \nReturns 0 on success, -1 on end-of-file and a system specific positive\nerror code otherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_fputc\n\n\u00a0\u00a0CHARACTER(len=10) :: str = \"gfortran\"\n\n\u00a0\u00a0INTEGER :: fd = 42, i\n\n\n\u00a0\u00a0OPEN(UNIT = fd, FILE = \"out\", ACTION = \"WRITE\", STATUS=\"NEW\")\n\n\u00a0\u00a0DO i = 1, len_trim(str)\n\n\u00a0\u00a0\u00a0\u00a0CALL fputc(fd, str(i:i))\n\n\u00a0\u00a0END DO\n\n\u00a0\u00a0CLOSE(fd)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nFPUT, FGET, FGETC\n"
+ },
+ "MIN": {
+ "doc": "`MIN` \u2014 Minimum value of an argument list\n\n### Description\nReturns the argument with the smallest (most negative) value.\n\n\n\n### Syntax\n`RESULT = MIN(A1, A2 [, A3, ...])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MIN0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN0(A1)` | `INTEGER(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `MIN1(A1)` | `REAL A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMIN1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMIN1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAX, MINLOC, MINVAL\n"
+ },
+ "BESSEL_JN": {
+ "doc": "`BESSEL_JN` \u2014 Bessel function of the first kind\n\n### Description\n`BESSEL_JN(N, X)` computes the Bessel function of the first kind of\norder `N` of `X`. This function is available under the name\n`BESJN` as a GNU extension. If `N` and `X` are arrays,\ntheir ranks and shapes shall conform.\n\n \n`BESSEL_JN(N1, N2, X)` returns an array with the Bessel functions\nof the first kind of the orders `N1` to `N2`.\n\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = BESSEL_JN(N1, N2, X)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `N1` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `N2` | Shall be a non-negative scalar of type `INTEGER`. \n\n | `X` | Shall be a scalar or an array of type `REAL`;\nfor `BESSEL_JN(N1, N2, X)` it shall be scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type `REAL`. It has the same\nkind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_besjn\n\n\u00a0\u00a0real(8) :: x = 1.0_8\n\n\u00a0\u00a0x = bessel_jn(5,x)\n\nend program test_besjn\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DBESJN(N, X)` | `INTEGER N` | `REAL(8)` | GNU extension\n\n | | `REAL(8) X` | | \n\n\n\n\n\n### Notes\nThe transformational function uses a recurrence algorithm which might,\nfor some values of `X`, lead to different results than calls to\nthe elemental function.\n\n\n\n### Standard\nFortran 2008 and later, negative `N` is allowed as GNU extension\n\n\n\n### Class\nElemental function, except for the transformational function\n`BESSEL_JN(N1, N2, X)`\n\n"
+ },
+ "IERRNO": {
+ "doc": "`IERRNO` \u2014 Get the last system error number\n\n### Description\nReturns the last system error number, as given by the C `errno`variable.\n\n\n\n### Syntax\n`RESULT = IERRNO()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of the default integer\nkind.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nPERROR\n"
+ },
+ "SIND": {
+ "doc": "`SIND` \u2014 Sine function, degrees\n\n### Description\nIND(X) computes the sine of X in degrees.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = SIND(X)\n### Arguments\n- X: The type shall be REAL or COMPLEX.\n ### Return value\nThe return value has same type and kind as X, and its value is in degrees.\n"
+ },
+ "IS_CONTIGUOUS": {
+ "doc": "`IS_CONTIGUOUS` \u2014 Test whether an array is contiguous\n\n### Description\nIS_CONTIGUOUS tests whether an array is contiguous.\n### Standard\nFortran 2008 and later.\n### Class\nInquiry function\n### Syntax\nRESULT = IS_CONTIGUOUS(ARRAY)\n### Arguments\n- ARRAY: Shall be an array of any type.\n### Return value\nReturns a LOGICAL of the default kind, which .TRUE. if ARRAY is contiguous and false otherwise.\n"
+ },
+ "COMPILER_VERSION": {
+ "doc": "`COMPILER_VERSION` \u2014 Compiler version string\n\n### Description\n`COMPILER_VERSION` returns a string with the name and the\nversion of the compiler.\n\n\n\n### Syntax\n`STR = COMPILER_VERSION()`\n\n\n### Arguments\nNone.\n\n\n\n### Return value\nThe return value is a default-kind string with system-dependent length. \nIt contains the name of the compiler and its version number.\n\n\n\n### Example\n```\n\n\nuse iso_fortran_env\n\nprint '(4a)', 'This file was compiled by ', &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0compiler_version(), ' using the options ', &\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0compiler_options()\n\nend\n\n```\n\n\n\n### Standard\nFortran 2008\n\n\n\n### Class\nInquiry function of the module `ISO_FORTRAN_ENV`\n\n\n### See also\nCOMPILER_OPTIONS, ISO_FORTRAN_ENV\n"
+ },
+ "C_F_POINTER": {
+ "doc": "`C_F_POINTER` \u2014 Convert C into Fortran pointer\n\n### Description\n`C_F_POINTER(CPTR, FPTR[, SHAPE])` assigns the target of the C pointer\n`CPTR` to the Fortran pointer `FPTR` and specifies its shape.\n\n\n\n### Syntax\n`CALL C_F_POINTER(CPTR, FPTR[, SHAPE])`\n\n\n### Arguments\n\n \n. It is\n`INTENT(IN)`. \n\n | `FPTR` | pointer interoperable with `cptr`. It is\n`INTENT(OUT)`. \n\n | `SHAPE` | (Optional) Rank-one array of type `INTEGER`with `INTENT(IN)`. It shall be present\nif and only if `fptr` is an array. The size\nmust be equal to the rank of `fptr`.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram main\n\n\u00a0\u00a0use iso_c_binding\n\n\u00a0\u00a0implicit none\n\n\u00a0\u00a0interface\n\n\u00a0\u00a0\u00a0\u00a0subroutine my_routine(p) bind(c,name='myC_func')\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0import :: c_ptr\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type(c_ptr), intent(out) :: p\n\n\u00a0\u00a0\u00a0\u00a0end subroutine\n\n\u00a0\u00a0end interface\n\n\u00a0\u00a0type(c_ptr) :: cptr\n\n\u00a0\u00a0real,pointer :: a(:)\n\n\u00a0\u00a0call my_routine(cptr)\n\n\u00a0\u00a0call c_f_pointer(cptr, a, [12])\n\nend program main\n\n```\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nC_LOC, C_F_PROCPOINTER\n"
+ },
+ "FSTAT": {
+ "doc": "`FSTAT` \u2014 Get file status\n\n### Description\n`FSTAT` is identical to STAT, except that information about an\nalready opened file is obtained.\n\n \nThe elements in `VALUES` are the same as described by STAT.\n\n \n\nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = FSTAT(UNIT, VALUES)` \n\n\n\n\n\n### Arguments\n\n \n. \n\n | `VALUES` | The type shall be `INTEGER(4), DIMENSION(13)`. \n\n | `STATUS` | (Optional) status flag of type `INTEGER(4)`. Returns 0\non success and a system specific error code otherwise.\n\n\n\n\n\n\n### Example\nSee STAT for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nTo stat a link: LSTAT, to stat a file: STAT\n"
+ },
+ "GETPID": {
+ "doc": "`GETPID` \u2014 Process ID function\n\n### Description\nReturns the numerical process identifier of the current process.\n\n\n\n### Syntax\n`RESULT = GETPID()`\n\n\n### Return value\nThe return value of `GETPID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\n```\n\n\nprogram info\n\n\u00a0\u00a0print *, \"The current process ID is \", getpid()\n\n\u00a0\u00a0print *, \"Your numerical user ID is \", getuid()\n\n\u00a0\u00a0print *, \"Your numerical group ID is \", getgid()\n\nend program info\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETGID, GETUID\n"
+ },
+ "CTIME": {
+ "doc": "`CTIME` \u2014 Convert a time into a string\n\n### Description\n`CTIME` converts a system time value, such as returned by\n`TIME8`, to a string. The output will be of the form \u2018Sat\nAug 19 18:13:14 1995\u2019.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n. \n\n | `RESULT = CTIME(TIME)`.\n\n\n\n\n\n\n### Arguments\n\n \n. \n\n | `RESULT` | The type shall be of type `CHARACTER` and\nof default kind. It is an `INTENT(OUT)` argument. If the length\nof this variable is too short for the time and date string to fit\ncompletely, it will be blank on procedure return.\n\n\n\n\n\n\n### Return value\nThe converted date and time as a string.\n\n\n\n### Example\n```\n\n\nprogram test_ctime\n\n\u00a0\u00a0\u00a0\u00a0integer(8) :: i\n\n\u00a0\u00a0\u00a0\u00a0character(len=30) :: date\n\n\u00a0\u00a0\u00a0\u00a0i = time8()\n\n\n\u00a0\u00a0\u00a0\u00a0! Do something, main part of the program\n\n\n\u00a0\u00a0\u00a0\u00a0call ctime(i,date)\n\n\u00a0\u00a0\u00a0\u00a0print *, 'Program was started on ', date\n\nend program test_ctime\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nDATE_AND_TIME, GMTIME, LTIME, TIME, TIME8\n"
+ },
+ "MAX": {
+ "doc": "`MAX` \u2014 Maximum value of an argument list\n\n### Description\nReturns the argument with the largest (most positive) value.\n\n\n\n### Syntax\n`RESULT = MAX(A1, A2 [, A3 [, ...]])`\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `A2`, `A3`, ... | An expression of the same type and kind\nas `A1`. (As a GNU extension, arguments of different kinds are\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return value corresponds to the maximum value among the arguments,\nand has the same type and kind as the first argument.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `MAX0(A1)` | `INTEGER(4) A1` | `INTEGER(4)` | Fortran 77 and later\n\n | `AMAX0(A1)` | `INTEGER(4) A1` | `REAL(MAX(X))` | Fortran 77 and later\n\n | `MAX1(A1)` | `REAL A1` | `INT(MAX(X))` | Fortran 77 and later\n\n | `AMAX1(A1)` | `REAL(4) A1` | `REAL(4)` | Fortran 77 and later\n\n | `DMAX1(A1)` | `REAL(8) A1` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nMAXLOC MAXVAL, MIN\n\n "
+ },
+ "LONG": {
+ "doc": "`LONG` \u2014 Convert to integer type\n\n### Description\nConvert to a `KIND=4` integer type, which is the same size as a C\n`long` integer. This is equivalent to the standard `INT`intrinsic with an optional argument of `KIND=4`, and is only\nincluded for backwards compatibility.\n\n\n\n### Syntax\n`RESULT = LONG(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(4)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT2, INT8\n"
+ },
+ "MAXLOC": {
+ "doc": "`MAXLOC` \u2014 Location of the maximum value within an array\n\n### Description\nDetermines the location of the element in the array with the maximum\nvalue, or, if the `DIM` argument is supplied, determines the\nlocations of the maximum element along each row of the array in the\n`DIM` direction. If `MASK` is present, only the elements for\nwhich `MASK` is `.TRUE.` are considered. If more than one\nelement in the array has the maximum value, the location returned is\nthat of the first such element in array element order. If the array has\nzero size, or all of the elements of `MASK` are `.FALSE.`, then\nthe result is an array of zeroes. Similarly, if `DIM` is supplied\nand all of the elements of `MASK` along a given row are zero, the\nresult value for that row is zero.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXLOC(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, the result is a rank-one array with a length\nequal to the rank of `ARRAY`. If `DIM` is present, the result\nis an array with a rank one less than the rank of `ARRAY`, and a\nsize corresponding to the size of `ARRAY` with the `DIM`\ndimension removed. If `DIM` is present and `ARRAY` has a rank\nof one, the result is a scalar. In all cases, the result is of default\n`INTEGER` type.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXVAL\n\n "
+ },
+ "MATMUL": {
+ "doc": "`MATMUL` \u2014 matrix multiplication\n\n### Description\nPerforms a matrix multiplication on numeric or logical arguments.\n\n\n\n### Syntax\n`RESULT = MATMUL(MATRIX_A, MATRIX_B)`\n\n\n### Arguments\n\n \n,\n`REAL`, `COMPLEX`, or `LOGICAL` type, with a rank of\none or two. \n\n | `MATRIX_B` | An array of `INTEGER`,\n`REAL`, or `COMPLEX` type if `MATRIX_A` is of a numeric\ntype; otherwise, an array of `LOGICAL` type. The rank shall be one\nor two, and the first (or only) dimension of `MATRIX_B` shall be\nequal to the last (or only) dimension of `MATRIX_A`.\n\n\n\n\n\n\n### Return value\nThe matrix product of `MATRIX_A` and `MATRIX_B`. The type and\nkind of the result follow the usual type and kind promotion rules, as\nfor the `*` or `.AND.` operators.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\n"
+ },
+ "IAND": {
+ "doc": "`IAND` \u2014 Bitwise logical and\n\n### Description\nBitwise logical `AND`.\n\n\n\n### Syntax\n`RESULT = IAND(I, J)`\n\n\n### Arguments\n\n \n. \n\n | `J` | The type shall be `INTEGER`, of the same\nkind as `I`. (As a GNU extension, different kinds are also\npermitted.)\n\n\n\n\n\n\n### Return value\nThe return type is `INTEGER`, of the same kind as the\narguments. (If the argument kinds differ, it is of the same kind as\nthe larger argument.)\n\n\n\n### Example\n```\n\n\nPROGRAM test_iand\n\n\u00a0\u00a0INTEGER :: a, b\n\n\u00a0\u00a0DATA a / Z'F' /, b / Z'3' /\n\n\u00a0\u00a0WRITE (*,*) IAND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nIOR, IEOR, IBITS, IBSET, IBCLR, NOT\n\n "
+ },
+ "NUM_IMAGES": {
+ "doc": "`NUM_IMAGES` \u2014 Function that returns the number of images\n\n### Description\nReturns the number of images.\n\n\n\n### Syntax\n`RESULT = NUM_IMAGES(DISTANCE, FAILED)`\n\n\n### Arguments\n\n \n | `DISTANCE` | (optional, intent(in)) Nonnegative scalar integer\n\n | `FAILED` | (optional, intent(in)) Scalar logical expression\n\n\n\n\n\n\n### Return value\nScalar default-kind integer. If `DISTANCE` is not present or has value 0,\nthe number of images in the current team is returned. For values smaller or\nequal distance to the initial team, it returns the number of images index\non the ancestor team which has a distance of `DISTANCE` from the invoking\nteam. If `DISTANCE` is larger than the distance to the initial team, the\nnumber of images of the initial team is returned. If `FAILED` is not present\nthe total number of images is returned; if it has the value `.TRUE.`,\nthe number of failed images is returned, otherwise, the number of images which\ndo have not the failed status.\n\n\n\n### Example\n```\n\n\nINTEGER :: value[*]\n\nINTEGER :: i\n\nvalue = THIS_IMAGE()\n\nSYNC ALL\n\nIF (THIS_IMAGE() == 1) THEN\n\n\u00a0\u00a0DO i = 1, NUM_IMAGES()\n\n\u00a0\u00a0\u00a0\u00a0WRITE(*,'(2(a,i0))') 'value[', i, '] is ', value[i]\n\n\u00a0\u00a0END DO\n\nEND IF\n\n```\n\n\n\n### Standard\nFortran 2008 and later. With `DISTANCE` or `FAILED` argument,\nTechnical Specification (TS) 18508 or later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nTHIS_IMAGE, IMAGE_INDEX\n"
+ },
+ "LINK": {
+ "doc": "`LINK` \u2014 Create a hard link\n\n### Description\nMakes a (hard) link from file `PATH1` to `PATH2`. A null\ncharacter (`CHAR(0)`) can be used to mark the end of the names in\n`PATH1` and `PATH2`; otherwise, trailing blanks in the file\nnames are ignored. If the `STATUS` argument is supplied, it\ncontains 0 on success or a nonzero error code upon return; see\n`link(2)`.\n\n \nThis intrinsic is provided in both subroutine and function forms;\nhowever, only one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = LINK(PATH1, PATH2)` \n\n\n\n\n\n### Arguments\n\n \n type. \n\n | `PATH2` | Shall be of default `CHARACTER` type. \n\n | `STATUS` | (Optional) Shall be of default `INTEGER` type.\n\n\n\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nSYMLNK, UNLINK\n"
+ },
+ "LOG": {
+ "doc": "`LOG` \u2014 Natural logarithm function\n\n### Description\n`LOG(X)` computes the natural logarithm of `X`, i.e. the\nlogarithm to the base e.\n\n\n\n### Syntax\n`RESULT = LOG(X)`\n\n\n### Arguments\n\n \n or\n`COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` or `COMPLEX`. \nThe kind type parameter is the same as `X`. \nIf `X` is `COMPLEX`, the imaginary part \\omega is in the range\n-\\pi < \\omega \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_log\n\n\u00a0\u00a0real(8) :: x = 2.7182818284590451_8\n\n\u00a0\u00a0complex :: z = (1.0, 2.0)\n\n\u00a0\u00a0x = log(x) ! will yield (approximately) 1\n\n\u00a0\u00a0z = log(z)\n\nend program test_log\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ALOG(X)` | `REAL(4) X` | `REAL(4)` | f95, gnu\n\n | `DLOG(X)` | `REAL(8) X` | `REAL(8)` | f95, gnu\n\n | `CLOG(X)` | `COMPLEX(4) X` | `COMPLEX(4)` | f95, gnu\n\n | `ZLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n | `CDLOG(X)` | `COMPLEX(8) X` | `COMPLEX(8)` | f95, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ERF": {
+ "doc": "`ERF` \u2014 Error function\n\n### Description\n`ERF(X)` computes the error function of `X`.\n\n\n\n### Syntax\n`RESULT = ERF(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL`, of the same kind as\n`X` and lies in the range -1 \\leq erf (x) \\leq 1 .\n\n\n\n### Example\n```\n\n\nprogram test_erf\n\n\u00a0\u00a0real(8) :: x = 0.17_8\n\n\u00a0\u00a0x = erf(x)\n\nend program test_erf\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `DERF(X)` | `REAL(8) X` | `REAL(8)` | GNU extension\n\n\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ALL": {
+ "doc": "`ALL` \u2014 All values in `MASK` along `DIM` are true\n\n### Description\n`ALL(MASK [, DIM])` determines if all the values are true in `MASK`\nin the array along dimension `DIM`.\n\n\n\n### Syntax\n`RESULT = ALL(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ALL(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ALL(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n \n**(A)** `ALL(MASK)` is true if all elements of `MASK` are true. \nIt also is true if `MASK` has zero size; otherwise, it is false. \n\n**(B)** If the rank of `MASK` is one, then `ALL(MASK,DIM)` is equivalent\nto `ALL(MASK)`. If the rank is greater than one, then `ALL(MASK,DIM)`is determined by applying `ALL` to the array sections. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_all\n\n\u00a0\u00a0logical l\n\n\u00a0\u00a0l = all((/.true., .true., .true./))\n\n\u00a0\u00a0print *, l\n\n\u00a0\u00a0call section\n\n\u00a0\u00a0contains\n\n\u00a0\u00a0\u00a0\u00a0subroutine section\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0integer a(2,3), b(2,3)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0a = 1\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0b = 1\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0b(2,2) = 2\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print *, all(a .eq. b, 1)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print *, all(a .eq. b, 2)\n\n\u00a0\u00a0\u00a0\u00a0end subroutine section\n\nend program test_all\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "TRIM": {
+ "doc": "`TRIM` \u2014 Remove trailing blank characters of a string\n\n### Description\nRemoves trailing blank characters of a string.\n\n\n\n### Syntax\n`RESULT = TRIM(STRING)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nA scalar of type `CHARACTER` which length is that of `STRING`\nless the number of trailing blanks.\n\n\n\n### Example\n```\n\n\nPROGRAM test_trim\n\n\u00a0\u00a0CHARACTER(len=10), PARAMETER :: s = \"GFORTRAN \"\n\n\u00a0\u00a0WRITE(*,*) LEN(s), LEN(TRIM(s)) ! \"10 8\", with/without trailing blanks\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nADJUSTL, ADJUSTR\n"
+ },
+ "MERGE": {
+ "doc": "`MERGE` \u2014 Merge variables\n\n### Description\nSelect values from two arrays according to a logical mask. The result\nis equal to `TSOURCE` if `MASK` is `.TRUE.`, or equal to\n`FSOURCE` if it is `.FALSE.`.\n\n\n\n### Syntax\n`RESULT = MERGE(TSOURCE, FSOURCE, MASK)`\n\n\n### Arguments\n\n \n | `TSOURCE` | May be of any type. \n\n | `FSOURCE` | Shall be of the same type and type parameters\nas `TSOURCE`. \n\n | `MASK` | Shall be of type `LOGICAL`.\n\n\n\n\n\n\n### Return value\nThe result is of the same type and type parameters as `TSOURCE`.\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "CHDIR": {
+ "doc": "`CHDIR` \u2014 Change working directory\n\n### Description\nChange current working directory to a specified path.\n\n \nThis intrinsic is provided in both subroutine and function forms; however,\nonly one form can be used in any given program unit.\n\n\n\n\n### Syntax\n\n \n\n\n | `STATUS = CHDIR(NAME)` \n\n\n\n\n\n### Arguments\n\n \n of default\nkind and shall specify a valid path within the file system. \n\n | `STATUS` | (Optional) `INTEGER` status flag of the default\nkind. Returns 0 on success, and a system specific and nonzero error code\notherwise.\n\n\n\n\n\n\n### Example\n```\n\n\nPROGRAM test_chdir\n\n\u00a0\u00a0CHARACTER(len=255) :: path\n\n\u00a0\u00a0CALL getcwd(path)\n\n\u00a0\u00a0WRITE(*,*) TRIM(path)\n\n\u00a0\u00a0CALL chdir(\"/tmp\")\n\n\u00a0\u00a0CALL getcwd(path)\n\n\u00a0\u00a0WRITE(*,*) TRIM(path)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine, function\n\n\n\n### See also\nGETCWD\n"
+ },
+ "GETUID": {
+ "doc": "`GETUID` \u2014 User ID function\n\n### Description\nReturns the numerical user ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETUID()`\n\n\n### Return value\nThe return value of `GETUID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETLOG\n"
+ },
+ "SAME_TYPE_AS": {
+ "doc": "`SAME_TYPE_AS` \u2014 Query dynamic types for equality\n\n### Description\nQuery dynamic types for equality.\n\n\n\n### Syntax\n`RESULT = SAME_TYPE_AS(A, B)`\n\n\n### Arguments\n\n \n | `A` | Shall be an object of extensible declared type or\nunlimited polymorphic. \n\n | `B` | Shall be an object of extensible declared type or\nunlimited polymorphic.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar of type default logical. It is true if and\nonly if the dynamic type of A is the same as the dynamic type of B.\n\n\n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nEXTENDS_TYPE_OF\n\n "
+ },
+ "AND": {
+ "doc": "`AND` \u2014 Bitwise logical AND\n\n### Description\nBitwise logical `AND`.\n\n \nThis intrinsic routine is provided for backwards compatibility with\nGNU Fortran 77. For integer arguments, programmers should consider\nthe use of the IAND intrinsic defined by the Fortran standard.\n\n\n\n\n### Syntax\n`RESULT = AND(I, J)`\n\n\n### Arguments\n\n \n\ntype or a scalar `LOGICAL` type. \n\n | `J` | The type shall be the same as the type of `I`.\n\n\n\n\n\n\n### Return value\nThe return type is either a scalar `INTEGER` or a scalar\n`LOGICAL`. If the kind type parameters differ, then the\nsmaller kind type is implicitly converted to larger kind, and the\nreturn has the larger kind.\n\n\n\n### Example\n```\n\n\nPROGRAM test_and\n\n\u00a0\u00a0LOGICAL :: T = .TRUE., F = .FALSE.\n\n\u00a0\u00a0INTEGER :: a, b\n\n\u00a0\u00a0DATA a / Z'F' /, b / Z'3' /\n\n\n\u00a0\u00a0WRITE (*,*) AND(T, T), AND(T, F), AND(F, T), AND(F, F)\n\n\u00a0\u00a0WRITE (*,*) AND(a, b)\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nFortran 95 elemental function: IAND\n"
+ },
+ "GETLOG": {
+ "doc": "`GETLOG` \u2014 Get login name\n\n### Description\nGets the username under which the program is running.\n\n\n\n### Syntax\n`CALL GETLOG(C)`\n\n\n### Arguments\n\n \n and of default kind.\n\n\n\n\n\n\n### Return value\nStores the current user name in `LOGIN`. (On systems where POSIX\nfunctions `geteuid` and `getpwuid` are not available, and\nthe `getlogin` function is not implemented either, this will\nreturn a blank string.)\n\n\n\n### Example\n```\n\n\nPROGRAM TEST_GETLOG\n\n\u00a0\u00a0CHARACTER(32) :: login\n\n\u00a0\u00a0CALL GETLOG(login)\n\n\u00a0\u00a0WRITE(*,*) login\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nGETUID\n"
+ },
+ "LTIME": {
+ "doc": "`LTIME` \u2014 Convert time to local time info\n\n### Description\nGiven a system time value `TIME` (as provided by the `TIME8`intrinsic), fills `VALUES` with values extracted from it appropriate\nto the local time zone using `localtime(3)`.\n\n\n\n### Syntax\n`CALL LTIME(TIME, VALUES)`\n\n\n### Arguments\n\n \n scalar expression\ncorresponding to a system time, with `INTENT(IN)`. \n\n | `VALUES` | A default `INTEGER` array with 9 elements,\nwith `INTENT(OUT)`.\n\n\n\n\n\n\n### Return value\nThe elements of `VALUES` are assigned as follows:\n \n- Seconds after the minute, range 0\u201359 or 0\u201361 to allow for leap\nseconds\n
- Minutes after the hour, range 0\u201359\n
- Hours past midnight, range 0\u201323\n
- Day of month, range 0\u201331\n
- Number of months since January, range 0\u201312\n
- Years since 1900\n
- Number of days since Sunday, range 0\u20136\n
- Days since January 1\n
- Daylight savings indicator: positive if daylight savings is in\neffect, zero if not, and negative if the information is not available.\n
\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nCTIME, GMTIME, TIME, TIME8\n\n "
+ },
+ "DIGITS": {
+ "doc": "`DIGITS` \u2014 Significant binary digits function\n\n### Description\n`DIGITS(X)` returns the number of significant binary digits of the internal\nmodel representation of `X`. For example, on a system using a 32-bit\nfloating point representation, a default real number would likely return 24.\n\n\n\n### Syntax\n`RESULT = DIGITS(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER`.\n\n\n\n### Example\n```\n\n\nprogram test_digits\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 12345\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 3.143\n\n\u00a0\u00a0\u00a0\u00a0real(8) :: y = 2.33\n\n\u00a0\u00a0\u00a0\u00a0print *, digits(i)\n\n\u00a0\u00a0\u00a0\u00a0print *, digits(x)\n\n\u00a0\u00a0\u00a0\u00a0print *, digits(y)\n\nend program test_digits\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "SELECTED_INT_KIND": {
+ "doc": "`SELECTED_INT_KIND` \u2014 Choose integer kind\n\n### Description\n`SELECTED_INT_KIND(R)` return the kind value of the smallest integer\ntype that can represent all values ranging from -10^R (exclusive)\nto 10^R (exclusive). If there is no integer kind that accommodates\nthis range, `SELECTED_INT_KIND` returns -1.\n\n\n\n### Syntax\n`RESULT = SELECTED_INT_KIND(R)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram large_integers\n\n\u00a0\u00a0integer,parameter :: k5 = selected_int_kind(5)\n\n\u00a0\u00a0integer,parameter :: k15 = selected_int_kind(15)\n\n\u00a0\u00a0integer(kind=k5) :: i5\n\n\u00a0\u00a0integer(kind=k15) :: i15\n\n\n\u00a0\u00a0print *, huge(i5), huge(i15)\n\n\n\u00a0\u00a0! The following inequalities are always true\n\n\u00a0\u00a0print *, huge(i5) >= 10_k5**5-1\n\n\u00a0\u00a0print *, huge(i15) >= 10_k15**15-1\n\nend program large_integers\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "SLEEP": {
+ "doc": "`SLEEP` \u2014 Sleep for the specified number of seconds\n\n### Description\nCalling this subroutine causes the process to pause for `SECONDS` seconds.\n\n\n\n### Syntax\n`CALL SLEEP(SECONDS)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Example\n```\n\n\nprogram test_sleep\n\n\u00a0\u00a0call sleep(5)\n\nend\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nSubroutine\n\n\n"
+ },
+ "SIGN": {
+ "doc": "`SIGN` \u2014 Sign copying function\n\n### Description\n`SIGN(A,B)` returns the value of `A` with the sign of `B`.\n\n\n\n### Syntax\n`RESULT = SIGN(A, B)`\n\n\n### Arguments\n\n \n\n\n | `B` | Shall be of the same type and kind as `A`\n\n\n\n\n\n\n### Return value\nThe kind of the return value is that of `A` and `B`. \nIf B\\ge 0 then the result is `ABS(A)`, else\nit is `-ABS(A)`.\n\n\n\n### Example\n```\n\n\nprogram test_sign\n\n\u00a0\u00a0print *, sign(-12,1)\n\n\u00a0\u00a0print *, sign(-12,0)\n\n\u00a0\u00a0print *, sign(-12,-1)\n\n\n\u00a0\u00a0print *, sign(-12.,1.)\n\n\u00a0\u00a0print *, sign(-12.,0.)\n\n\u00a0\u00a0print *, sign(-12.,-1.)\n\nend program test_sign\n\n```\n\n\n\n### Specific names\n\n \n | Name | Arguments | Return type | Standard\n\n | `SIGN(A,B)` | `REAL(4) A, B` | `REAL(4)` | f77, gnu\n\n | `ISIGN(A,B)` | `INTEGER(4) A, B` | `INTEGER(4)` | f77, gnu\n\n | `DSIGN(A,B)` | `REAL(8) A, B` | `REAL(8)` | f77, gnu\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "GETGID": {
+ "doc": "`GETGID` \u2014 Group ID function\n\n### Description\nReturns the numerical group ID of the current process.\n\n\n\n### Syntax\n`RESULT = GETGID()`\n\n\n### Return value\nThe return value of `GETGID` is an `INTEGER` of the default\nkind.\n\n\n\n### Example\nSee `GETPID` for an example.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nGETPID, GETUID\n"
+ },
+ "IS_IOSTAT_END": {
+ "doc": "`IS_IOSTAT_END` \u2014 Test for end-of-file value\n\n### Description\n`IS_IOSTAT_END` tests whether an variable has the value of the I/O\nstatus \u201cend of file\u201d. The function is equivalent to comparing the variable\nwith the `IOSTAT_END` parameter of the intrinsic module\n`ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`RESULT = IS_IOSTAT_END(I)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nReturns a `LOGICAL` of the default kind, which `.TRUE.` if\n`I` has the value which indicates an end of file condition for\n`IOSTAT=` specifiers, and is `.FALSE.` otherwise.\n\n\n\n### Example\n```\n\n\nPROGRAM iostat\n\n\u00a0\u00a0IMPLICIT NONE\n\n\u00a0\u00a0INTEGER :: stat, i\n\n\u00a0\u00a0OPEN(88, FILE='test.dat')\n\n\u00a0\u00a0READ(88, *, IOSTAT=stat) i\n\n\u00a0\u00a0IF(IS_IOSTAT_END(stat)) STOP 'END OF FILE'\n\nEND PROGRAM\n\n```\n\n \n\n### Standard\nFortran 2003 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ANY": {
+ "doc": "`ANY` \u2014 Any value in `MASK` along `DIM` is true\n\n### Description\n`ANY(MASK [, DIM])` determines if any of the values in the logical array\n`MASK` along dimension `DIM` are `.TRUE.`.\n\n\n\n### Syntax\n`RESULT = ANY(MASK [, DIM])`\n\n\n### Arguments\n\n \n and\nit shall not be scalar. \n\n | `DIM` | (Optional) `DIM` shall be a scalar integer\nwith a value that lies between one and the rank of `MASK`.\n\n\n\n\n\n\n### Return value\n`ANY(MASK)` returns a scalar value of type `LOGICAL` where\nthe kind type parameter is the same as the kind type parameter of\n`MASK`. If `DIM` is present, then `ANY(MASK, DIM)` returns\nan array with the rank of `MASK` minus 1. The shape is determined from\nthe shape of `MASK` where the `DIM` dimension is elided.\n\n \n**(A)** `ANY(MASK)` is true if any element of `MASK` is true;\notherwise, it is false. It also is false if `MASK` has zero size. \n\n**(B)** If the rank of `MASK` is one, then `ANY(MASK,DIM)` is equivalent\nto `ANY(MASK)`. If the rank is greater than one, then `ANY(MASK,DIM)`is determined by applying `ANY` to the array sections. \n\n \n\n\n\n### Example\n```\n\n\nprogram test_any\n\n\u00a0\u00a0logical l\n\n\u00a0\u00a0l = any((/.true., .true., .true./))\n\n\u00a0\u00a0print *, l\n\n\u00a0\u00a0call section\n\n\u00a0\u00a0contains\n\n\u00a0\u00a0\u00a0\u00a0subroutine section\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0integer a(2,3), b(2,3)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0a = 1\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0b = 1\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0b(2,2) = 2\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print *, any(a .eq. b, 1)\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print *, any(a .eq. b, 2)\n\n\u00a0\u00a0\u00a0\u00a0end subroutine section\n\nend program test_any\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n"
+ },
+ "AINT": {
+ "doc": "`AINT` \u2014 Truncate to a whole number\n\n### Description\n`AINT(A [, KIND])` truncates its argument to a whole number.\n\n\n\n### Syntax\n`RESULT = AINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` with the kind type parameter of the\nargument if the optional `KIND` is absent; otherwise, the kind\ntype parameter will be given by `KIND`. If the magnitude of\n`X` is less than one, `AINT(X)` returns zero. If the\nmagnitude is equal to or greater than one then it returns the largest\nwhole number that does not exceed its magnitude. The sign is the same\nas the sign of `X`.\n\n\n\n### Example\n```\n\n\nprogram test_aint\n\n\u00a0\u00a0real(4) x4\n\n\u00a0\u00a0real(8) x8\n\n\u00a0\u00a0x4 = 1.234E0_4\n\n\u00a0\u00a0x8 = 4.321_8\n\n\u00a0\u00a0print *, aint(x4), dint(x8)\n\n\u00a0\u00a0x8 = aint(x4,8)\n\nend program test_aint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `AINT(A)` | `REAL(4) A` | `REAL(4)` | Fortran 77 and later\n\n | `DINT(A)` | `REAL(8) A` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "BACKTRACE": {
+ "doc": "`BACKTRACE` \u2014 Show a backtrace\n\n### Description\n`BACKTRACE` shows a backtrace at an arbitrary place in user code. Program\nexecution continues normally afterwards. The backtrace information is printed\nto the unit corresponding to `ERROR_UNIT` in `ISO_FORTRAN_ENV`.\n\n\n\n### Syntax\n`CALL BACKTRACE`\n\n\n### Arguments\nNone\n\n\n\n### Standard\nGNU Extension\n\n\n\n### Class\nSubroutine\n\n\n\n### See also\nABORT\n"
+ },
+ "ATAN2D": {
+ "doc": "`ATAN2D` \u2014 Arctangent function, degrees\n\n### Description\nATAN2D(Y, X) computes the principal value of the argument function of the complex number X + i Y in degrees. This function can be used to transform from Cartesian into polar coordinates and allows to determine the angle in the correct quadrant.\nThis function is for compatibility only and should be avoided in favor of standard constructs wherever possible.\n### Standard\nGNU Extension, enabled with -fdec-math\n### Class\nElemental function\n### Syntax\nRESULT = ATAN2D(Y, X)\n### Arguments\n- Y: The type shall be REAL.\n- X: The type and kind type parameter shall be the same as Y. If Y is zero, then X must be nonzero.\n### Return value\nThe return value has the same type and kind type parameter as Y. It is the principal value of the complex number X + i Y. If X is nonzero, then it lies in the range -180 \\le \\atan (x) \\leq 180. The sign is positive if Y is positive. If Y is zero, then the return value is zero if X is strictly positive, 180 if X is negative and Y is positive zero (or the processor does not handle signed zeros), and -180 if X is negative and Y is negative zero. Finally, if X is zero, then the magnitude of the result is 90.\n"
+ },
+ "NINT": {
+ "doc": "`NINT` \u2014 Nearest whole number\n\n### Description\n`NINT(A)` rounds its argument to the nearest whole number.\n\n\n\n### Syntax\n`RESULT = NINT(A [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nReturns `A` with the fractional portion of its magnitude eliminated by\nrounding to the nearest whole number and with its sign preserved,\nconverted to an `INTEGER` of the default kind.\n\n\n\n### Example\n```\n\n\nprogram test_nint\n\n\u00a0\u00a0real(4) x4\n\n\u00a0\u00a0real(8) x8\n\n\u00a0\u00a0x4 = 1.234E0_4\n\n\u00a0\u00a0x8 = 4.321_8\n\n\u00a0\u00a0print *, nint(x4), idnint(x8)\n\nend program test_nint\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return Type | Standard\n\n | `NINT(A)` | `REAL(4) A` | `INTEGER` | Fortran 95 and later\n\n | `IDNINT(A)` | `REAL(8) A` | `INTEGER` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, with `KIND` argument Fortran 90 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nCEILING, FLOOR\n\n "
+ },
+ "UBOUND": {
+ "doc": "`UBOUND` \u2014 Upper dimension bounds of an array\n\n### Description\nReturns the upper bounds of an array, or a single upper bound\nalong the `DIM` dimension. \n\n\n### Syntax\n`RESULT = UBOUND(ARRAY [, DIM [, KIND]])`\n\n\n### Arguments\n\n \n | `ARRAY` | Shall be an array, of any type. \n\n | `DIM` | (Optional) Shall be a scalar `INTEGER`. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is of type `INTEGER` and of kind `KIND`. If\n`KIND` is absent, the return value is of default integer kind. \nIf `DIM` is absent, the result is an array of the upper bounds of\n`ARRAY`. If `DIM` is present, the result is a scalar\ncorresponding to the upper bound of the array along that dimension. If\n`ARRAY` is an expression rather than a whole array or array\nstructure component, or if it has a zero extent along the relevant\ndimension, the upper bound is taken to be the number of elements along\nthe relevant dimension.\n\n\n\n### Standard\nFortran 95 and later, with `KIND` argument Fortran 2003 and later\n\n\n\n### Class\nInquiry function\n\n\n\n### See also\nLBOUND, LCOBOUND\n"
+ },
+ "LGE": {
+ "doc": "`LGE` \u2014 Lexical greater than or equal\n\n### Description\nDetermines whether one string is lexically greater than or equal to\nanother string, where the two strings are interpreted as containing\nASCII character codes. If the String A and String B are not the same\nlength, the shorter is compared as if spaces were appended to it to form\na value that has the same length as the longer.\n\n \nIn general, the lexical comparison intrinsics `LGE`, `LGT`,\n`LLE`, and `LLT` differ from the corresponding intrinsic\noperators `.GE.`, `.GT.`, `.LE.`, and `.LT.`, in\nthat the latter use the processor's character ordering (which is not\nASCII on some targets), whereas the former always use the ASCII\nordering.\n\n\n\n\n### Syntax\n`RESULT = LGE(STRING_A, STRING_B)`\n\n\n### Arguments\n\n \n type. \n\n | `STRING_B` | Shall be of default `CHARACTER` type.\n\n\n\n\n\n\n### Return value\nReturns `.TRUE.` if `STRING_A >= STRING_B`, and `.FALSE.`otherwise, based on the ASCII ordering.\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `LGE(STRING_A, STRING_B)` | `CHARACTER` | `LOGICAL` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nLGT, LLE, LLT\n"
+ },
+ "RESHAPE": {
+ "doc": "`RESHAPE` \u2014 Function to reshape an array\n\n### Description\nReshapes `SOURCE` to correspond to `SHAPE`. If necessary,\nthe new array may be padded with elements from `PAD` or permuted\nas defined by `ORDER`.\n\n\n\n### Syntax\n`RESULT = RESHAPE(SOURCE, SHAPE[, PAD, ORDER])`\n\n\n### Arguments\n\n \n | `SOURCE` | Shall be an array of any type. \n\n | `SHAPE` | Shall be of type `INTEGER` and an\narray of rank one. Its values must be positive or zero. \n\n | `PAD` | (Optional) shall be an array of the same\ntype as `SOURCE`. \n\n | `ORDER` | (Optional) shall be of type `INTEGER`and an array of the same shape as `SHAPE`. Its values shall\nbe a permutation of the numbers from 1 to n, where n is the size of\n`SHAPE`. If `ORDER` is absent, the natural ordering shall\nbe assumed.\n\n\n\n\n\n\n### Return value\nThe result is an array of shape `SHAPE` with the same type as\n`SOURCE`.\n\n\n\n### Example\n```\n\n\nPROGRAM test_reshape\n\n\u00a0\u00a0INTEGER, DIMENSION(4) :: x\n\n\u00a0\u00a0WRITE(*,*) SHAPE(x) ! prints \"4\"\n\n\u00a0\u00a0WRITE(*,*) SHAPE(RESHAPE(x, (/2, 2/))) ! prints \"2 2\"\n\nEND PROGRAM\n\n```\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nSHAPE\n"
+ },
+ "LOGICAL": {
+ "doc": "`LOGICAL` \u2014 Convert to logical type\n\n### Description\nConverts one kind of `LOGICAL` variable to another.\n\n\n\n### Syntax\n`RESULT = LOGICAL(L [, KIND])`\n\n\n### Arguments\n\n \n. \n\n | `KIND` | (Optional) An `INTEGER` initialization\nexpression indicating the kind parameter of the result.\n\n\n\n\n\n\n### Return value\nThe return value is a `LOGICAL` value equal to `L`, with a\nkind corresponding to `KIND`, or of the default logical kind if\n`KIND` is not given.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, REAL, CMPLX\n"
+ },
+ "MCLOCK": {
+ "doc": "`MCLOCK` \u2014 Time function\n\n### Description\nReturns the number of clock ticks since the start of the process, based\non the function `clock(3)` in the C standard library.\n\n \nThis intrinsic is not fully portable, such as to systems with 32-bit\n`INTEGER` types but supporting times wider than 32 bits. Therefore,\nthe values returned by this intrinsic might be, or become, negative, or\nnumerically less than previous values, during a single run of the\ncompiled program.\n\n\n\n\n### Syntax\n`RESULT = MCLOCK()`\n\n\n### Return value\nThe return value is a scalar of type `INTEGER(4)`, equal to the\nnumber of clock ticks since the start of the process, or `-1` if\nthe system does not support `clock(3)`.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nFunction\n\n\n\n### See also\nCTIME, GMTIME, LTIME, MCLOCK, TIME\n\n "
+ },
+ "DCMPLX": {
+ "doc": "`DCMPLX` \u2014 Double complex conversion function\n\n### Description\n`DCMPLX(X [,Y])` returns a double complex number where `X` is\nconverted to the real component. If `Y` is present it is converted to the\nimaginary component. If `Y` is not present then the imaginary component is\nset to 0.0. If `X` is complex then `Y` must not be present.\n\n\n\n### Syntax\n`RESULT = DCMPLX(X [, Y])`\n\n\n### Arguments\n\n \n,\nor `COMPLEX`. \n\n | `Y` | (Optional if `X` is not `COMPLEX`.) May be\n`INTEGER` or `REAL`.\n\n\n\n\n\n\n### Return value\nThe return value is of type `COMPLEX(8)`\n\n\n### Example\n```\n\n\nprogram test_dcmplx\n\n\u00a0\u00a0\u00a0\u00a0integer :: i = 42\n\n\u00a0\u00a0\u00a0\u00a0real :: x = 3.14\n\n\u00a0\u00a0\u00a0\u00a0complex :: z\n\n\u00a0\u00a0\u00a0\u00a0z = cmplx(i, x)\n\n\u00a0\u00a0\u00a0\u00a0print *, dcmplx(i)\n\n\u00a0\u00a0\u00a0\u00a0print *, dcmplx(x)\n\n\u00a0\u00a0\u00a0\u00a0print *, dcmplx(z)\n\n\u00a0\u00a0\u00a0\u00a0print *, dcmplx(x,i)\n\nend program test_dcmplx\n\n```\n\n \n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ERFC_SCALED": {
+ "doc": "`ERFC_SCALED` \u2014 Error function\n\n### Description\n`ERFC_SCALED(X)` computes the exponentially-scaled complementary\nerror function of `X`.\n\n\n\n### Syntax\n`RESULT = ERFC_SCALED(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of type `REAL` and of the same kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_erfc_scaled\n\n\u00a0\u00a0real(8) :: x = 0.17_8\n\n\u00a0\u00a0x = erfc_scaled(x)\n\nend program test_erfc_scaled\n\n```\n\n \n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "INT2": {
+ "doc": "`INT2` \u2014 Convert to 16-bit integer type\n\n### Description\nConvert to a `KIND=2` integer type. This is equivalent to the\nstandard `INT` intrinsic with an optional argument of\n`KIND=2`, and is only included for backwards compatibility.\n\n \nThe `SHORT` intrinsic is equivalent to `INT2`.\n\n\n\n\n### Syntax\n`RESULT = INT2(A)`\n\n\n### Arguments\n\n \n,\n`REAL`, or `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is a `INTEGER(2)` variable.\n\n\n\n### Standard\nGNU extension\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nINT, INT8, LONG\n"
+ },
+ "SINH": {
+ "doc": "`SINH` \u2014 Hyperbolic sine function\n\n### Description\n`SINH(X)` computes the hyperbolic sine of `X`.\n\n\n\n### Syntax\n`RESULT = SINH(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value has same type and kind as `X`.\n\n\n\n### Example\n```\n\n\nprogram test_sinh\n\n\u00a0\u00a0real(8) :: x = - 1.0_8\n\n\u00a0\u00a0x = sinh(x)\n\nend program test_sinh\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `SINH(X)` | `REAL(4) X` | `REAL(4)` | Fortran 95 and later\n\n | `DSINH(X)` | `REAL(8) X` | `REAL(8)` | Fortran 95 and later\n\n\n\n\n\n\n### Standard\nFortran 95 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nASINH\n"
+ },
+ "FRACTION": {
+ "doc": "`FRACTION` \u2014 Fractional part of the model representation\n\n### Description\n`FRACTION(X)` returns the fractional part of the model\nrepresentation of `X`.\n\n\n\n### Syntax\n`Y = FRACTION(X)`\n\n\n### Arguments\n\n \n.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as the argument. \nThe fractional part of the model representation of `X` is returned;\nit is `X * RADIX(X)**(-EXPONENT(X))`.\n\n\n\n### Example\n```\n\n\nprogram test_fraction\n\n\u00a0\u00a0real :: x\n\n\u00a0\u00a0x = 178.1387e-4\n\n\u00a0\u00a0print *, fraction(x), x * radix(x)**(-exponent(x))\n\nend program test_fraction\n\n```\n\n \n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nElemental function\n\n\n"
+ },
+ "ALLOCATED": {
+ "doc": "`ALLOCATED` \u2014 Status of an allocatable entity\n\n### Description\n`ALLOCATED(ARRAY)` and `ALLOCATED(SCALAR)` check the allocation\nstatus of `ARRAY` and `SCALAR`, respectively.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = ALLOCATED(SCALAR)` \n\n\n\n\n\n### Arguments\n\n \n array. \n\n | `SCALAR` | The argument shall be an `ALLOCATABLE` scalar.\n\n\n\n\n\n\n### Return value\nThe return value is a scalar `LOGICAL` with the default logical\nkind type parameter. If the argument is allocated, then the result is\n`.TRUE.`; otherwise, it returns `.FALSE.`\n\n\n### Example\n```\n\n\nprogram test_allocated\n\n\u00a0\u00a0integer :: i = 4\n\n\u00a0\u00a0real(4), allocatable :: x(:)\n\n\u00a0\u00a0if (.not. allocated(x)) allocate(x(i))\n\nend program test_allocated\n\n```\n\n \n\n### Standard\nFortran 95 and later. Note, the `SCALAR=` keyword and allocatable\nscalar entities are available in Fortran 2003 and later.\n\n\n\n### Class\nInquiry function\n\n\n"
+ },
+ "ACOS": {
+ "doc": "`ACOS` \u2014 Arccosine function\n\n### Description\n`ACOS(X)` computes the arccosine of `X` (inverse of `COS(X)`).\n\n\n\n### Syntax\n`RESULT = ACOS(X)`\n\n\n### Arguments\n\n \n with a magnitude that is\nless than or equal to one - or the type shall be `COMPLEX`.\n\n\n\n\n\n\n### Return value\nThe return value is of the same type and kind as `X`. \nThe real part of the result is in radians and lies in the range\n0 \\leq \\Re \\acos(x) \\leq \\pi.\n\n\n\n### Example\n```\n\n\nprogram test_acos\n\n\u00a0\u00a0real(8) :: x = 0.866_8\n\n\u00a0\u00a0x = acos(x)\n\nend program test_acos\n\n```\n\n\n\n### Specific names\n\n \n | Name | Argument | Return type | Standard\n\n | `ACOS(X)` | `REAL(4) X` | `REAL(4)` | Fortran 77 and later\n\n | `DACOS(X)` | `REAL(8) X` | `REAL(8)` | Fortran 77 and later\n\n\n\n\n\n\n### Standard\nFortran 77 and later, for a complex argument Fortran 2008 or later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nInverse function: COS\n\n "
+ },
+ "MAXVAL": {
+ "doc": "`MAXVAL` \u2014 Maximum value of an array\n\n### Description\nDetermines the maximum value of the elements in an array value, or, if\nthe `DIM` argument is supplied, determines the maximum value along\neach row of the array in the `DIM` direction. If `MASK` is\npresent, only the elements for which `MASK` is `.TRUE.` are\nconsidered. If the array has zero size, or all of the elements of\n`MASK` are `.FALSE.`, then the result is `-HUGE(ARRAY)`if `ARRAY` is numeric, or a string of nulls if `ARRAY` is of character\ntype.\n\n\n\n### Syntax\n\n \n\n\n | `RESULT = MAXVAL(ARRAY [, MASK])` \n\n\n\n\n\n### Arguments\n\n \n or\n`REAL`. \n\n | `DIM` | (Optional) Shall be a scalar of type\n`INTEGER`, with a value between one and the rank of `ARRAY`,\ninclusive. It may not be an optional dummy argument. \n\n | `MASK` | Shall be an array of type `LOGICAL`,\nand conformable with `ARRAY`.\n\n\n\n\n\n\n### Return value\nIf `DIM` is absent, or if `ARRAY` has a rank of one, the result\nis a scalar. If `DIM` is present, the result is an array with a\nrank one less than the rank of `ARRAY`, and a size corresponding to\nthe size of `ARRAY` with the `DIM` dimension removed. In all\ncases, the result is of the same type and kind as `ARRAY`.\n\n\n\n### Standard\nFortran 95 and later\n\n\n\n### Class\nTransformational function\n\n\n\n### See also\nMAX, MAXLOC\n"
+ },
+ "DSHIFTR": {
+ "doc": "`DSHIFTR` \u2014 Combined right shift\n\n### Description\n`DSHIFTR(I, J, SHIFT)` combines bits of `I` and `J`. The\nleftmost `SHIFT` bits of the result are the rightmost `SHIFT`\nbits of `I`, and the remaining bits are the leftmost bits of\n`J`.\n\n\n\n### Syntax\n`RESULT = DSHIFTR(I, J, SHIFT)`\n\n\n### Arguments\n\n \n or a BOZ constant. \n\n | `J` | Shall be of type `INTEGER` or a BOZ constant. \nIf both `I` and `J` have integer type, then they shall have\nthe same kind type parameter. `I` and `J` shall not both be\nBOZ constants. \n\n | `SHIFT` | Shall be of type `INTEGER`. It shall\nbe nonnegative. If `I` is not a BOZ constant, then `SHIFT`\nshall be less than or equal to `BIT_SIZE(I)`; otherwise,\n`SHIFT` shall be less than or equal to `BIT_SIZE(J)`.\n\n\n\n\n\n\n### Return value\nIf either `I` or `J` is a BOZ constant, it is first converted\nas if by the intrinsic function `INT` to an integer type with the\nkind type parameter of the other.\n\n\n\n### Standard\nFortran 2008 and later\n\n\n\n### Class\nElemental function\n\n\n\n### See also\nDSHIFTL\n"
+ }
+}
diff --git a/src/lib/fortran-intrinsics.ts b/src/lib/fortran-intrinsics.ts
deleted file mode 100644
index 3335f9d0..00000000
--- a/src/lib/fortran-intrinsics.ts
+++ /dev/null
@@ -1,287 +0,0 @@
-export default [
- 'ABORT',
- 'ABS',
- 'ACCESS',
- 'ACHAR',
- 'ACOS',
- 'ACOSD',
- 'ACOSH',
- 'ADJUSTL',
- 'ADJUSTR',
- 'AIMAG',
- 'AINT',
- 'ALARM',
- 'ALL',
- 'ALLOCATED',
- 'AND',
- 'ANINT',
- 'ANY',
- 'ASIN',
- 'ASIND',
- 'ASINH',
- 'ASSOCIATED',
- 'ATAN',
- 'ATAND',
- 'ATAN2',
- 'ATAN2D',
- 'ATANH',
- 'ATOMIC_ADD',
- 'ATOMIC_AND',
- 'ATOMIC_CAS',
- 'ATOMIC_DEFINE',
- 'ATOMIC_FETCH_ADD',
- 'ATOMIC_FETCH_AND',
- 'ATOMIC_FETCH_OR',
- 'ATOMIC_FETCH_XOR',
- 'ATOMIC_OR',
- 'ATOMIC_REF',
- 'ATOMIC_XOR',
- 'BACKTRACE',
- 'BESSEL_J0',
- 'BESSEL_J1',
- 'BESSEL_JN',
- 'BESSEL_Y0',
- 'BESSEL_Y1',
- 'BESSEL_YN',
- 'BGE',
- 'BGT',
- 'BIT_SIZE',
- 'BLE',
- 'BLT',
- 'BTEST',
- 'C_ASSOCIATED',
- 'C_F_POINTER',
- 'C_F_PROCPOINTER',
- 'C_FUNLOC',
- 'C_LOC',
- 'C_SIZEOF',
- 'CEILING',
- 'CHAR',
- 'CHDIR',
- 'CHMOD',
- 'CMPLX',
- 'CO_BROADCAST',
- 'CO_MAX',
- 'CO_MIN',
- 'CO_REDUCE',
- 'CO_SUM',
- 'COMMAND_ARGUMENT_COUNT',
- 'COMPILER_OPTIONS',
- 'COMPILER_VERSION',
- 'COMPLEX',
- 'CONJG',
- 'COS',
- 'COSD',
- 'COSH',
- 'COTAN',
- 'COTAND',
- 'COUNT',
- 'CPU_TIME',
- 'CSHIFT',
- 'CTIME',
- 'DATE_AND_TIME',
- 'DBLE',
- 'DCMPLX',
- 'DIGITS',
- 'DIM',
- 'DOT_PRODUCT',
- 'DPROD',
- 'DREAL',
- 'DSHIFTL',
- 'DSHIFTR',
- 'DTIME',
- 'ELSE',
- 'EOSHIFT',
- 'EPSILON',
- 'ERF',
- 'ERFC',
- 'ERFC_SCALED',
- 'ETIME',
- 'EVENT_QUERY',
- 'EXECUTE_COMMAND_LINE',
- 'EXIT',
- 'EXP',
- 'EXPONENT',
- 'EXTENDS_TYPE_OF',
- 'FDATE',
- 'FGET',
- 'FGETC',
- 'FINDLOC',
- 'FLOOR',
- 'FLUSH',
- 'FNUM',
- 'FPUT',
- 'FPUTC',
- 'FRACTION',
- 'FREE',
- 'FSEEK',
- 'FSTAT',
- 'FTELL',
- 'GAMMA',
- 'GERROR',
- 'GETARG',
- 'GET_COMMAND',
- 'GET_COMMAND_ARGUMENT',
- 'GETCWD',
- 'GETENV',
- 'GET_ENVIRONMENT_VARIABLE',
- 'GETGID',
- 'GETLOG',
- 'GETPID',
- 'GETUID',
- 'GMTIME',
- 'HOSTNM',
- 'HUGE',
- 'HYPOT',
- 'IACHAR',
- 'IALL',
- 'IAND',
- 'IANY',
- 'IARGC',
- 'IBCLR',
- 'IBITS',
- 'IBSET',
- 'ICHAR',
- 'IDATE',
- 'IEOR',
- 'IERRNO',
- 'IMAGE_INDEX',
- 'INDEX',
- 'INT',
- 'INT2',
- 'INT8',
- 'IOR',
- 'IPARITY',
- 'IRAND',
- 'IS_CONTIGUOUS',
- 'IS_IOSTAT_END',
- 'IS_IOSTAT_EOR',
- 'ISATTY',
- 'ISHFT',
- 'ISHFTC',
- 'ISNAN',
- 'ITIME',
- 'KILL',
- 'KIND',
- 'LBOUND',
- 'LCOBOUND',
- 'LEADZ',
- 'LEN',
- 'LEN_TRIM',
- 'LGE',
- 'LGT',
- 'LINK',
- 'LLE',
- 'LLT',
- 'LNBLNK',
- 'LOC',
- 'LOG',
- 'LOG10',
- 'LOG_GAMMA',
- 'LOGICAL',
- 'LONG',
- 'LSHIFT',
- 'LSTAT',
- 'LTIME',
- 'MALLOC',
- 'MASKL',
- 'MASKR',
- 'MATMUL',
- 'MAX',
- 'MAXEXPONENT',
- 'MAXLOC',
- 'MAXVAL',
- 'MCLOCK',
- 'MCLOCK8',
- 'MERGE',
- 'MERGE_BITS',
- 'MIN',
- 'MINEXPONENT',
- 'MINLOC',
- 'MINVAL',
- 'MOD',
- 'MODULO',
- 'MOVE_ALLOC',
- 'MVBITS',
- 'NEAREST',
- 'NEW_LINE',
- 'NINT',
- 'NORM2',
- 'NOT',
- 'NULL',
- 'NUM_IMAGES',
- 'OR',
- 'PACK',
- 'PARITY',
- 'PERROR',
- 'POPCNT',
- 'POPPAR',
- 'PRECISION',
- 'PRESENT',
- 'PRODUCT',
- 'RADIX',
- 'RAN',
- 'RAND',
- 'RANDOM_INIT',
- 'RANDOM_NUMBER',
- 'RANDOM_SEED',
- 'RANGE',
- 'RANK',
- 'REAL',
- 'RENAME',
- 'REPEAT',
- 'RESHAPE',
- 'RRSPACING',
- 'RSHIFT',
- 'SAME_TYPE_AS',
- 'SCALE',
- 'SCAN',
- 'SECNDS',
- 'SECOND',
- 'SELECTED_CHAR_KIND',
- 'SELECTED_INT_KIND',
- 'SELECTED_REAL_KIND',
- 'SET_EXPONENT',
- 'SHAPE',
- 'SHIFTA',
- 'SHIFTL',
- 'SHIFTR',
- 'SIGN',
- 'SIGNAL',
- 'SIN',
- 'SIND',
- 'SINH',
- 'SIZE',
- 'SIZEOF',
- 'SLEEP',
- 'SPACING',
- 'SPREAD',
- 'SQRT',
- 'SRAND',
- 'STAT',
- 'STOP',
- 'STORAGE_SIZE',
- 'SUM',
- 'SYMLNK',
- 'SYSTEM',
- 'SYSTEM_CLOCK',
- 'TAN',
- 'TAND',
- 'TANH',
- 'THIS_IMAGE',
- 'TIME',
- 'TIME8',
- 'TINY',
- 'TRAILZ',
- 'TRANSFER',
- 'TRANSPOSE',
- 'TRIM',
- 'TTYNAM',
- 'UBOUND',
- 'UCOBOUND',
- 'UMASK',
- 'UNLINK',
- 'UNPACK',
- 'VERIFY',
- 'XOR',
-];
diff --git a/src/lib/helper.ts b/src/lib/helper.ts
index f6bb678f..6d948679 100644
--- a/src/lib/helper.ts
+++ b/src/lib/helper.ts
@@ -1,10 +1,5 @@
import * as fs from 'fs';
import * as vscode from 'vscode';
-import { installPythonTool } from './tools';
-import intrinsics from './fortran-intrinsics';
-import { LoggingService } from '../services/logging-service';
-
-export { intrinsics };
export const FORTRAN_KEYWORDS = [
'FUNCTION',
@@ -20,23 +15,6 @@ export const FORTRAN_KEYWORDS = [
'IMPLICIT',
];
-export const isIntrinsic = (keyword: string) => {
- return intrinsics.findIndex(intrinsic => intrinsic === keyword.toUpperCase()) !== -1;
-};
-
-interface Doc {
- keyword: string;
- docstr: string;
-}
-
-export const loadDocString = (keyword: string) => {
- keyword = keyword.toUpperCase();
- const filepath = __dirname + '/../doc/intrinsics/' + keyword + '.json';
- const docstr = fs.readFileSync(filepath).toString();
- const doc: Doc = JSON.parse(docstr);
- return doc.docstr;
-};
-
export const _loadDocString = (keyword: string) => {
keyword = keyword.toUpperCase();
diff --git a/tsconfig.json b/tsconfig.json
index e9fd6544..2c7f16f4 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -10,6 +10,6 @@
"removeComments": true,
"rootDir": "."
},
- "include": ["src/**/*.ts"],
+ "include": ["src/**/*.ts", "src/**/*.json"],
"exclude": ["node_modules", ".vscode-test", "assets/videos"]
}
|