https://www.cdslab.org/paramonte/fortran/2
Current view: top level - main - pm_io.F90 (source / functions) Hit Total Coverage
Test: ParaMonte 2.0.0 :: Serial Fortran - Code Coverage Report Lines: 13 54 24.1 %
Date: 2024-04-08 03:18:57 Functions: 3 16 18.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       2             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       3             : !!!!                                                                                                                            !!!!
       4             : !!!!    ParaMonte: Parallel Monte Carlo and Machine Learning Library.                                                           !!!!
       5             : !!!!                                                                                                                            !!!!
       6             : !!!!    Copyright (C) 2012-present, The Computational Data Science Lab                                                          !!!!
       7             : !!!!                                                                                                                            !!!!
       8             : !!!!    This file is part of the ParaMonte library.                                                                             !!!!
       9             : !!!!                                                                                                                            !!!!
      10             : !!!!    LICENSE                                                                                                                 !!!!
      11             : !!!!                                                                                                                            !!!!
      12             : !!!!       https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md                                                          !!!!
      13             : !!!!                                                                                                                            !!!!
      14             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      15             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      16             : 
      17             : !>  \brief
      18             : !>  This module contains classes and procedures for input/output (IO) or generic display operations on standard displays or internal/external files.
      19             : !>
      20             : !>  \details
      21             : !>
      22             : !>  Quick start
      23             : !>  -----------
      24             : !>
      25             : !>  The following is a (non-exhaustive) list of the most useful functionalities in this module:<br>
      26             : !>  <ol>
      27             : !>      <li>    [display_type](@ref pm_io::display_type) is a derived type for creating objects
      28             : !>              whose methods (`show`, `wrap`, `skip`, ...) can display all sorts of scalar and array objects of
      29             : !>              intrinsic type and kind as well as [containers](@ref pm_container) of various intrinsic types and kinds.<br>
      30             : !>      <li>    [getContentsFrom](@ref pm_io::getContentsFrom) and [setContentsFrom](@ref pm_io::setContentsFrom) are functional
      31             : !>              and subroutine interfaces for reading the entire contents of a given file or connect unit into a scalar string.<br>
      32             : !>      <li>    [getErrTableWrite](@ref pm_io::getErrTableWrite) writes a data matrix as a csv, list-directed or other arbitrarily-delimited table of data to a specified file or unit.<br>
      33             : !>      <li>    [getErrTableRead](@ref pm_io::getErrTableRead) reads a csv, list-directed or other arbitrarily-delimited table of data from a specified file or unit.<br>
      34             : !>      <li>    [getCountRecord](@ref pm_io::getCountRecord) counts the number of records (optionally matching a user-specified pattern) in a `sequential` access file or unit.<br>
      35             : !>      <li>    [getCountRecordLeft](@ref pm_io::getCountRecordLeft) counts the number of records **left**, optionally matching a user-specified pattern, in a `sequential` access connected-file unit.<br>
      36             : !>      <li>    [getRecordFrom](@ref pm_io::getRecordFrom) and [setRecordFrom](@ref pm_io::setRecordFrom) read a single line from a specified `sequential` access file or unit into an `allocatable` string.<br>
      37             : !>      <li>    [getFieldSep](@ref pm_io::getFieldSep) identifies the most likely separator used in a file to separate fields of a record-oriented file from a list of possible separators of arbitrary length.<br>
      38             : !>      <li>    [getFormat](@ref pm_io::getFormat) seamlessly creates a suitable format for outputting a record of fields of
      39             : !>              arbitrary type and kind, each field of which can be delimited and optionally contain multiple subfields.<br>
      40             : !>      <li>    [setContentsTo](@ref pm_io::setContentsTo) outputs a scalar string to an unconnected file as a binary stream.<br>
      41             : !>      <li>    [isOpen](@ref pm_io::isOpen) checks if a file or unit is already connected (opened).<br>
      42             : !>      <li>    etc.<br>
      43             : !>
      44             : !>  </ol>
      45             : !>
      46             : !>  IO terminology
      47             : !>  --------------
      48             : !>
      49             : !>  The following is a collection of terms and phrases frequently used in the documentation of this module.<br>
      50             : !>      -#  A **file** is a logical unit of information created by processes and are managed by the operating system.<br>
      51             : !>      -#  The part of the operating system that deals with files is known as the **file system**.<br>
      52             : !>      -#  An I/O **record** is a collection of characters or values that are logically related and are frequently processed together.<br>
      53             : !>          Three common types of records are:<br>
      54             : !>          -#  **formatted**
      55             : !>              -#  A formatted record consists of a sequence of ASCII characters that can print in a readable format.
      56             : !>              -#  Reading a formatted record converts the data values from readable characters into an internal representation.
      57             : !>              -#  Writing a formatted record converts the data from the internal representation into characters.
      58             : !>          -#  **unformatted**
      59             : !>              -#  An unformatted record contains a sequence of values in an internal representation that can contain both character and noncharacter data.
      60             : !>              -#  Reading or writing an unformatted record does not convert any data the record contains from the internal representation.
      61             : !>              -#  An unformatted record can also contain no data.
      62             : !>          -#  **endfile**
      63             : !>              -#  If it exists, an `endfile` record is the last record of a file.
      64             : !>              -#  The `endfile` record has no length.
      65             : !>              -#  The `endfile` record can be **written explicitly** by the `endfile()` Fortran intrinsic statement.
      66             : !>              -#  The `endfile` record can be **written implicitly** to a file connected for sequential access **when**,
      67             : !>                  -#  the last data transfer statement was a `write()` statement,
      68             : !>                  -#  no intervening file positioning statement referring to the file has been executed,
      69             : !>                  -#  and the following is true:
      70             : !>                      -#  A `rewind()` or `backspace()` statement references the unit to which the file is connected; or
      71             : !>                      -#  The file is closed, either<br>
      72             : !>                          -#  explicitly by a `close()` statement, or<br>
      73             : !>                          -#  implicitly by a program termination not caused by an error condition, or<br>
      74             : !>                          -#  implicitly by another `open()` statement for the same unit.<br>
      75             : !>      -#  **File organization** refers to the way records are physically arranged on a storage device.<br>
      76             : !>          -#  The main types of file organization in Fortran are the following,<br>
      77             : !>                  -#  **Sequential**<br>
      78             : !>                      -#  A sequentially organized file consists of records arranged in the sequence in which they are written to the file.
      79             : !>                      -#  As a result, records can be added only at the end of the file.
      80             : !>                      -#  Attempting to add records at some place other than the end of the file will result in the file begin truncated at the end of the record just written.
      81             : !>                      -#  Sequential files can be stored on magnetic tape or disk devices.<br>
      82             : !>                      -#  Other peripheral devices, such as terminals, pipes, and line printers as sequential files.
      83             : !>                      -#  Sequential files are usually read sequentially, starting with the first record in the file.
      84             : !>                      -#  Sequential files with a fixed-length record-type stored on disk can also be accessed by relative record number (**direct access**).
      85             : !>                  -#  **Relative (direct access)**<br>
      86             : !>                      -#  Relative files are just like arrays [of structures], but instead of residing in the main memory, they are recorded on a disk device.
      87             : !>                      -#  Relative files can only be stored on a disk device (e.g., not on magnetic tapes).
      88             : !>                      -#  Within a relative file are numbered positions, called **cells**.
      89             : !>                      -#  These cells are of fixed equal length and are consecutively numbered from `1` to `n`, corresponding to the first and last cells in the file.
      90             : !>                      -#  Each cell either contains either a single record or is empty.
      91             : !>                      -#  Records in a relative file are accessed according to the cell number.
      92             : !>                      -#  The cell number is the record number relative to the beginning of the file.
      93             : !>                      -#  By specifying relative record numbers, one can directly retrieve, add, or delete records regardless of their locations.
      94             : !>                      -#  When creating a relative file, the `RECL` can be `inquire`d to determine the size of the fixed-length cells.
      95             : !>                      -#  Within the cells, one can store records of varying length, as long as their size does not exceed the cell size.
      96             : !>                  -#  **Indexed (not in the Fortran standard)**<br>
      97             : !>                      -#  An indexed file is made of "data cells", not necessarily of the same size, and contain **indexes**, lists of **pointers** to these cells arranged by some order.
      98             : !>                      -#  The Fortran Standard does not require support for indexed files (although some compilers do).<br>
      99             : !>      -#  The two major types of file systems are the following:<br>
     100             : !>          -#  A stream of bytes (**byte Sequence**) known as the **stream access** in Fortran.<br>
     101             : !>          -#  A stream of records (**record sequence**).<br>
     102             : !>              Depending on the lengths of individual record in the file, two separate internal structures are commonly used.<br>
     103             : !>              -#  A stream of **equal-length records**, also known as the **direct access** files in Fortran.<br>
     104             : !>                  The position in the direct access file in Fortran is specified in terms of **records**.<br>
     105             : !>                  All records have the same length (specified by the `RECL=` specifier in call to `open()` statement).<br>
     106             : !>                  For example, if a file contains 20 records and has record length equal to 30, then<br>
     107             : !>                  -#  the total size of data the program can access from the file is 600 bytes and,<br>
     108             : !>                  -#  every read or write operation will access a record containing 30 bytes.<br>
     109             : !>              -#  A stream of **arbitrary-length records**, also known as the **sequental access** files in Fortran.<br>
     110             : !>      -#  The **record-type** refers to the convention used for storing fields in records.<br>
     111             : !>          The record-type of the data within a file is not maintained as an attribute of the file.<br>
     112             : !>          The results of using a record type other than the one used to create the file are **indeterminate**.<br>
     113             : !>      -#  The **record overhead** is the number of bytes associated with each record used internally by the file system and are not available when a record is read or written.
     114             : !>      -#  The following table list the commonly available record types.
     115             : !>          Record Type     |   Available File Organizations and Portability Considerations                                 |   Record Overhead
     116             : !>          ----------------|-----------------------------------------------------------------------------------------------|------------------
     117             : !>          Fixed-length    |   Relative or sequential file organizations.                                                  |   None for sequential.
     118             : !>          Variable-length |   Sequential file organization only.                                                          |   Eight bytes per record. The most portable record type.
     119             : !>          Stream          |   Sequential file organization only. No record terminator needed.                             |   zero.
     120             : !>          Stream_CR       |   Sequential file organization only. It uses `CR` (carriage return) as record terminator.     |   One byte per record.
     121             : !>          Stream_LF       |   Sequential file organization only. It uses `LF` (line feed) as record terminator).          |   One byte per record.
     122             : !>          Stream_CRLF     |   Sequential file organization only. It uses both `CR` and `LF` as record terminator.         |   Two bytes per record.
     123             : !>          Given the above record overheads, `stream` record type yields the smallest possible file sizes.
     124             : !>      -#  **Fixed-Length Records** require that all records in the file contain the same number of bytes.<br>
     125             : !>          When  a file is opened to contain fixed-length records, the record size must be specified using the `RECL` specified of the `open()` statement.<br>
     126             : !>          A sequentially-organized opened file for **direct access** must contain fixed-length records to allow the record position in the file to be computed correctly.
     127             : !>      -#  **Variable-Length Records** can contain any number of bytes up to a specified **maximum record length** and apply only to sequential files.<br>
     128             : !>          Variable-length records are prefixed and suffixed by 4 bytes of control information containing length fields.<br>
     129             : !>          The trailing length field allows a `backspace()` request to skip back over records efficiently.<br>
     130             : !>          The 4-byte integer value stored in each length field indicates the number of data bytes (excluding overhead bytes) in that particular variable-length record.<br>
     131             : !>          For a record length greater than `2,147,483,639` bytes, the record is divided into **subrecords**. The subrecord can be of any length from `1` to `2,147,483,639`, inclusive.<br>
     132             : !>          The sign bit of the leading length field indicates whether the record is continued or not.<br>
     133             : !>          The sign bit of the trailing length field indicates the presence of a preceding subrecord.<br>
     134             : !>          The position of the sign bit is determined by the endian format of the file.<br>
     135             : !>          The following rules describe sign bit values:
     136             : !>          -#  A subrecord that is continued has a leading length field with a sign bit value of `1`.
     137             : !>          -#  The last subrecord that makes up a record has a leading length field with a sign bit value of `0`.
     138             : !>          -#  A subrecord that has a preceding subrecord has a trailing length field with a sign bit value of `1`.
     139             : !>          -#  The first subrecord that makes up a record has a trailing length field with a sign bit value of `0`.
     140             : !>          -#  If the value of the sign bit is `1`, the length of the record is stored in twos-complement notation.
     141             : !>      -#  **Stream files** contain no control information and their contents is not grouped into records.<br>
     142             : !>          -#  Stream-access I/O is a method of accessing a file without reference to a record structure.<br>
     143             : !>          -#  With stream access, a file is seen as a continuous sequence of bytes and is addressed by a positive integer starting from `1`.<br>
     144             : !>          -#  To enable stream access, one should specify `access = "stream"` in the `open()` statement for the file.<br>
     145             : !>          -#  A file enabled for stream access is positioned by file storage units (normally bytes) starting at position `1`.<br>
     146             : !>          -#  To determine the current position, one must use the `pos` specifier in an `inquire()` statement for the unit.<br>
     147             : !>          -#  One can also indicate a required position in a read or write statement with a `pos` specifier.<br>
     148             : !>          -#  Stream files can contain character or binary data that is read or written only to the extent of the variables specified on the input or output statement.
     149             : !>          -#  Stream files can be connected to external files for stream access as either `formatted` or `unformatted`.
     150             : !>          -#  Both `formatted` and `unformatted` forms use external stream files composed of one byte file storage units.
     151             : !>          -#  A file connected for `unformatted` stream access has only a stream structure.
     152             : !>          -#  By contrast, files connected for `formatted` stream access have both a **record** and a **stream structure**.
     153             : !>          -#  These dual structure files have the following characteristics:
     154             : !>              -#  Some file storage units represent record markers.
     155             : !>              -#  The record structure is inferred from the record markers stored in the file.
     156             : !>              -#  There is no theoretical limit on record length.
     157             : !>              -#  Writing an empty record without a record marker has no effect.
     158             : !>              -#  If there is no record marker at the end of a file, the final record is incomplete but not empty.
     159             : !>              -#  The endfile record in a file previously connected for sequential access is not considered part of the file when you connect that file for stream access.
     160             : !>          -#  When connected for **formatted stream access**, an external file has the following characteristics:
     161             : !>              -#  The first file storage unit in the file is at position `1`.
     162             : !>              -#  The relationship between positions of successive file storage units is processor dependent; not all positive integers need to correspond to valid positions.
     163             : !>              -#  Some file storage units may contain record markers that impose a record structure on the file in addition to its stream structure.
     164             : !>              -#  If there is no record marker at the end of the file, the final record is incomplete. Writing an empty record with no record marker has no effect.
     165             : !>          -#  When connected for **unformatted stream access**, an external file has the following characteristics:
     166             : !>              -#  The first file storage unit in the file is at position `1`.
     167             : !>              -#  The position of each subsequent file storage unit is one greater than the position of the preceding file storage unit.
     168             : !>              -#  If it is possible to position the file, the file storage units do not need to be read or written in order of their position.
     169             : !>              -#  For example, you may be able to write the file storage unit at position 2, even though the file storage unit at position 1 has not been written.
     170             : !>              -#  Any file storage unit can be read from the file while it is connected to a unit, if the file storage unit has been written since the file was created, and a `read()` statement for this connection is allowed.
     171             : !>              -#  One **cannot** use `backspace()` in an unformatted stream.
     172             : !>      -#  **Sequential-access files** can be either **internal** and **external** files.
     173             : !>          -#  **Internal files**
     174             : !>              -#  An internal file always has sequential access.
     175             : !>              -#  An internal file is a character variable that is not an array section with a vector subscript.
     176             : !>              -#  If an internal file is a scalar character variable, the file consists of one record with a length equal to that of the scalar variable.
     177             : !>              -#  If an internal file is a character array, each element of the array is a record of the file, with each record having the same length.
     178             : !>              -#  An internal file **must contain only formatted records**. `read()` and `write()` are the only statements that can specify an internal file.
     179             : !>              -#  If a `write()` statement writes less than an entire record, **blanks fill the remainder of that record**.
     180             : !>          -#  **External files**
     181             : !>              -#  A file connected for sequential access contains records in the order they were written.
     182             : !>              -#  The records must be either **all formatted** or **all unformatted**.
     183             : !>              -#  The last record of the file must be an **endfile record**.
     184             : !>              -#  The records must not be read or written by `direct` or `stream` access I/O statements **as long as** the file is connected for `sequential` access.
     185             : !>      -#  **Direct-access files** allow the records of an external file to be read or written in any order.
     186             : !>          -#  The records must be either all formatted or all unformatted.
     187             : !>          -#  The records must **not** be read or written using `sequential` or `stream` access, list-directed or namelist formatting, or a nonadvancing input/output statement.
     188             : !>          -#  If the file was previously connected for sequential access, the last record of the file is an endfile record.
     189             : !>          -#  The endfile record is not considered a part of the file connected for direct access.
     190             : !>          -#  Each record in a file connected for direct access has a record number that identifies its order in the file.
     191             : !>          -#  The record number is an integer value that must be specified when the record is read or written.
     192             : !>          -#  Records are numbered sequentially. The first record is number 1.
     193             : !>          -#  Records need not be read or written in the order of their record numbers. For example, records `9`, `5`, and `11` can be written in that order without writing the intermediate records.
     194             : !>          -#  All records in a file connected for direct access **must have the same length**, which is specified in the `open()` statement when the file is connected.
     195             : !>          -#  Records in a file connected for direct access **cannot be deleted**, but they **can be rewritten** with a new value.
     196             : !>          -#  A record cannot be read unless it has first been written.
     197             : !>
     198             : !>  \note
     199             : !>  There are a number of other points to note with respect to files.
     200             : !>  -#  The set of allowed names for a file is processor dependent.
     201             : !>  -#  Both `sequential` and `direct` access may be available for some files, but normally a file is limited to `sequential`, `direct`, or `stream` access.
     202             : !>  -#  A file **never** contains both formatted and unformatted records.
     203             : !>
     204             : !>  \note
     205             : !>  Typical file operations that are also partly covered in this module and partly in [pm_sysPath](@ref pm_sysPath) are,
     206             : !>  -#  Create
     207             : !>  -#  Delete
     208             : !>  -#  Open
     209             : !>  -#  Close
     210             : !>  -#  Read
     211             : !>  -#  Write
     212             : !>  -#  Append (This call is a restricted form of write. It can add data only to the end of the file.)
     213             : !>  -#  Seek (Repositions the file pointer to a specific place in the file.)
     214             : !>  -#  Get Attributes (Processes often need to read file attributes to do their work.)
     215             : !>  -#  Set Attributes (Some of the attributes are user settable and can be changed after the file has been created.)
     216             : !>  -#  Rename (changes the name of the file.)
     217             : !>
     218             : !>  \note
     219             : !>  Previous versions of this modules contained functions for inquiring various attributes of files via the intrinsic `inquire()` statement.<br>
     220             : !>  The current version has deprecated and deleted all such functions as their maintenance is more costly than any potential benefits they may offer.<br>
     221             : !>  Such functions cannot be `pure` due to the call to the `inquire()` statement. As such, they are unlikely to be inlined by the compiler.<br>
     222             : !>  Furthermore, any call to such functions from outside their parent module requires a `use` statement, followed by the function call,
     223             : !>  which effectively yields the same amount of verbosity caused by directly calling the `inquire()` statement.<br>
     224             : !>  Additionally, a single call to the Fortran `inquire()` statement can return multiple attributes of a file or unit,
     225             : !>  which makes this statement much more concise and efficient as opposed to any user-defined function.<br>
     226             : !>
     227             : !>  \see
     228             : !>  [IBM documentation of Fortran File access methods](https://www.ibm.com/docs/en/xffbg/121.141?topic=files-file-access-methods)<br>
     229             : !>  [Intel documentation of Fortran File access methods](https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2023-2/fortran-i-o.html)<br>
     230             : !>  [Intel Fortran compiler documentation for **OPEN - RECL Specifier**](https://www.intel.com/content/www/us/en/develop/documentation/fortran-compiler-oneapi-dev-guide-and-reference/top/language-reference/file-operation-i-o-statements/open-statement-specifiers/open-recl-specifier.html)<br>
     231             : !>  [Metcalf et al., Modern Fortran Explained - Incorporating Fortran 2018](https://books.google.com/books?id=sB1rDwAAQBAJ&lpg=PP1&pg=PP1#v=onepage&q&f=false)<br>
     232             : !>  [Files and records](https://www.ibiblio.org/pub/languages/fortran/ch5-4.html)<br>
     233             : !>
     234             : !>  \test
     235             : !>  [test_pm_io](@ref test_pm_io)
     236             : !>
     237             : !>  \finmain{pm_io}
     238             : !>
     239             : !>  \author
     240             : !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     241             : 
     242             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     243             : 
     244             : !>  \cond excluded
     245             : #if 1
     246             : #define __CONTIGUOUS
     247             : #else
     248             : #define __CONTIGUOUS, contiguous
     249             : #endif
     250             : !>  \endcond excluded
     251             : 
     252             : module pm_io
     253             : 
     254             :     use pm_err, only: mark_type
     255             :     use pm_err, only: note_type
     256             :     use pm_err, only: warn_type
     257             :     use pm_err, only: stop_type
     258             :     use pm_val2str, only: getStr
     259             :     use pm_kind, only: SK, IK, LK
     260             :     use pm_option, only: getOption
     261             :     use pm_container, only: css_type
     262             :     use iso_fortran_env, only: output_unit
     263             :     use pm_matrixTrans, only: trans, trans_type
     264             : 
     265             :     implicit none
     266             : 
     267             :     character(*, SK), parameter :: MODULE_NAME = "@pm_io"
     268             : 
     269             :     !>  \brief
     270             :     !>  This is the derived type for generating objects containing the source
     271             :     !>  file extensions used by different programming language environments.
     272             :     !>
     273             :     !>  \details
     274             :     !>  This derived type is of minimal usage outside the ParaMonte library internal routines.<br>
     275             :     !>  If needed, the constant object instances of this derived type [filext](@ref pm_io::filext) can be used.<br>
     276             :     !>
     277             :     !>  \see
     278             :     !>  [filext](@ref pm_io::filext)<br>
     279             :     !>
     280             :     !>  \finmain{filext_type}
     281             :     !>
     282             :     !>  \author
     283             :     !>  \AmirShahmoradi, September 1, 2017, 11:35 PM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     284             :     type :: filext_type
     285             :         character(4, SK)    :: ascii        = SK_".txt"
     286             :         character(4, SK)    :: binary       = SK_".bin"
     287             :         character(2, SK)    :: c            = SK_".c"
     288             :         character(4, SK)    :: cobol        = SK_".cbl"
     289             :         character(4, SK)    :: cpp          = SK_".cpp"
     290             :         character(3, SK)    :: csharp       = SK_".cs"
     291             :         character(3, SK)    :: go           = SK_".go"
     292             :         character(4, SK)    :: fortran      = SK_".F90"
     293             :         character(5, SK)    :: java         = SK_".java"
     294             :         character(3, SK)    :: javascript   = SK_".js"
     295             :         character(3, SK)    :: julia        = SK_".jl"
     296             :         character(2, SK)    :: matlab       = SK_".m"
     297             :         character(4, SK)    :: mathematica  = SK_".wls"
     298             :         character(3, SK)    :: python       = SK_".py"
     299             :         character(2, SK)    :: r            = SK_".R"
     300             :         character(3, SK)    :: rust         = SK_".rs"
     301             :         character(4, SK)    :: sas          = SK_".sas"
     302             :         character(6, SK)    :: swift        = SK_".swift"
     303             :     end type
     304             : 
     305             :     !>  \brief
     306             :     !>  The scalar constant object of type [filext_type](@ref pm_io::filext_type)
     307             :     !>  containing file extensions used by different programming language environments.
     308             :     !>
     309             :     !>  \see
     310             :     !>  [filext_type](@ref pm_io::filext_type)<br>
     311             :     !>
     312             :     !>  \finmain{filext}
     313             :     !>
     314             :     !>  \author
     315             :     !>  \AmirShahmoradi, September 1, 2017, 11:35 PM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     316             :     type(filext_type), parameter :: filext = filext_type()
     317             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     318             :     !DIR$ ATTRIBUTES DLLEXPORT :: filext
     319             : #endif
     320             : 
     321             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     322             : 
     323             :     !integer(IK)     , parameter :: DISPLAY_WIDTH = 132_IK
     324             :     !integer(IK)     , parameter :: DISPLAY_THICKNESS_HORZ = 4_IK
     325             :     !integer(IK)     , parameter :: DISPLAY_THICKNESS_VERT = 1_IK
     326             : 
     327             :     !>  \brief
     328             :     !>  The scalar `character` of default kind \SK  of `len = 1` representing the default string that is used for filling the margins of the display or wrapped texts.
     329             :     character(*, SK), parameter :: MFILL = SK_"%"
     330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     331             :     !DIR$ ATTRIBUTES DLLEXPORT :: MFILL
     332             : #endif
     333             : 
     334             :     !>  \brief
     335             :     !>  The scalar `character` of default kind \SK of `len = 4` representing representing ASCII character: Horizontal Tab, which is frequently used in external files as column or field separators.
     336             :     character(1, SK), parameter :: TAB = achar(9, SK)
     337             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     338             :     !DIR$ ATTRIBUTES DLLEXPORT :: TAB
     339             : #endif
     340             : 
     341             :     !>  \brief
     342             :     !>  The scalar `character` of default kind \SK of `len = 4` representing the default string that is used in place of the tab character in the display.
     343             :     character(*, SK), parameter :: TABEQV = repeat(SK_" ", 4)
     344             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     345             :     !DIR$ ATTRIBUTES DLLEXPORT :: TABEQV
     346             : #endif
     347             : 
     348             :     !>  \brief
     349             :     !>  The scalar `character` of default kind \SK of the same value as [TABEQV](@ref pm_io::TABEQV) representing the default indentation of text in the display, when indentation is needed.
     350             :     character(*, SK), parameter :: INDENT = TABEQV !//TABEQV
     351             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     352             :     !DIR$ ATTRIBUTES DLLEXPORT :: INDENT
     353             : #endif
     354             : 
     355             :     !>  \brief
     356             :     !>  The scalar `character` of default kind \SK containing the generic IO whitespace-separated IO format.
     357             :     character(*, SK), parameter :: FORMAT_GENERIC_BLANK = SK_"(*(g0,:,' '))"
     358             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     359             :     !DIR$ ATTRIBUTES DLLEXPORT :: FORMAT_GENERIC_BLANK
     360             : #endif
     361             : 
     362             :     !>  \brief
     363             :     !>  The scalar `character` of default kind \SK containing the generic IO whitespace-separated IO format with in an initial [INDENT](@ref pm_io::INDENT).
     364             :     character(*, SK), parameter :: FORMAT_GENERIC_BLANK_TABBED = SK_"('"//INDENT//SK_"',*(g0,:,' '))"
     365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     366             :     !DIR$ ATTRIBUTES DLLEXPORT :: FORMAT_GENERIC_BLANK_TABBED
     367             : #endif
     368             : 
     369             :     !>  \brief
     370             :     !>  The scalar `character` of default kind \SK containing the generic signed comma-space-separated format used as the default within objects of [display_type](@ref pm_io::display_type).
     371             :     character(*, SK), parameter :: FORMAT_GENERIC_DISPLAY = SK_"(sp,*(g0,:,', '))"
     372             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     373             :     !DIR$ ATTRIBUTES DLLEXPORT :: FORMAT_GENERIC_DISPLAY
     374             : #endif
     375             : 
     376             :     !>  \brief
     377             :     !>  The scalar `character` of default kind \SK containing the generic signed comma-space-separated format that
     378             :     !>  can be used as the math-style complex formatting when constructing objects of [display_type](@ref pm_io::display_type).
     379             :     character(*, SK), parameter :: FORMAT_GENERIC_DISPLAY_COMPLEX_MATH = SK_"(sp,*(2g0,'i',:,', '))"
     380             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     381             :     !DIR$ ATTRIBUTES DLLEXPORT :: FORMAT_GENERIC_DISPLAY_COMPLEX_MATH
     382             : #endif
     383             : 
     384             :     !>  \brief
     385             :     !>  The scalar `character` of default kind \SK containing the generic signed comma-space-separated format that
     386             :     !>  can be used as the Fortran-style complex formatting when constructing objects of [display_type](@ref pm_io::display_type).
     387             :     character(*, SK), parameter :: FORMAT_GENERIC_DISPLAY_COMPLEX_FORTRAN = SK_"(sp,*('(',g0,', ',g0,')',:,', '))"
     388             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     389             :     !DIR$ ATTRIBUTES DLLEXPORT :: FORMAT_GENERIC_DISPLAY_COMPLEX_FORTRAN
     390             : #endif
     391             : 
     392             :     !>  \brief
     393             :     !>  The scalar `character(1, SK)` of default kind \SK of size `4`, containing the four characters used to display a spinning command line cursor.
     394             :     character(1, SK), parameter :: SPINNER(4) = [ "|" , "/" , "-" , "\" ]
     395             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     396             :     !DIR$ ATTRIBUTES DLLEXPORT :: SPINNER
     397             : #endif
     398             : 
     399             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     400             : 
     401             :     integer(IK)     , parameter :: LEN_IOMSG = 511_IK   !<  \public The scalar `integer` of default kind \IK representing the maximum
     402             :                                                         !!          length of an IO error message returned by the Fortran intrinsic routines.
     403             :                                                         !!          Note that this an arbitrary length defined globally for consistency.
     404             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     405             :     !DIR$ ATTRIBUTES DLLEXPORT :: LEN_IOMSG
     406             : #endif
     407             : 
     408             :     integer(IK)     , parameter :: LEN_RECORD = 8191_IK !<  \public The scalar `integer` of default kind \IK representing the
     409             :                                                         !!          effective maximum length of a record in a record-oriented file.
     410             :                                                         !!          Note that this is an arbitrary length defined globally for consistency.
     411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     412             :     !DIR$ ATTRIBUTES DLLEXPORT :: LEN_RECORD
     413             : #endif
     414             : 
     415             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     416             : 
     417             :     !>  \brief
     418             :     !>  The derived type that can be used for constructing containers of `format`
     419             :     !>  or left and right delimiters for the (five) intrinsic Fortran field types.
     420             :     !>
     421             :     !>  \details
     422             :     !>  Object of this derived type can be either,
     423             :     !>  <ol>
     424             :     !>      <li>    passed as input arguments to the constructor of [display_type](@ref pm_io::display_type)
     425             :     !>              to specify the IO formatting of fields of objects of various intrinsic types that are to be subsequently displayed by the methods of [display_type](@ref pm_io::display_type).<br>
     426             :     !>      <li>    used in other situations to specify properties of IO fields of various intrinsic types, for example, to specify the left and right delimiters of fields of objects of intrinsic types.<br>
     427             :     !>  </ol>
     428             :     !>
     429             :     !>  \param[in]  string      :   The input `allocatable` scalar `character` of default kind \SK containing a specific formatting property of a field of type `character`.<br>
     430             :     !>                              (**optional**. If missing, the corresponding component of the output `field` object remains unallocated.)
     431             :     !>  \param[in]  integer     :   The input `allocatable` scalar `character` of default kind \SK containing a specific formatting property of a field of type `integer`.<br>
     432             :     !>                              (**optional**. If missing, the corresponding component of the output `field` object remains unallocated.)
     433             :     !>  \param[in]  logical     :   The input `allocatable` scalar `character` of default kind \SK containing a specific formatting property of a field of type `logical`.<br>
     434             :     !>                              (**optional**. If missing, the corresponding component of the output `field` object remains unallocated.)
     435             :     !>  \param[in]  complex     :   The input `allocatable` scalar `character` of default kind \SK containing a specific formatting property of a field of type `complex`.<br>
     436             :     !>                              (**optional**. If missing, the corresponding component of the output `field` object remains unallocated.)
     437             :     !>  \param[in]  real        :   The input `allocatable` scalar `character` of default kind \SK containing a specific formatting property of a field of type `real`.<br>
     438             :     !>                              (**optional**. If missing, the corresponding component of the output `field` object remains unallocated.)
     439             :     !>
     440             :     !>  \return
     441             :     !>  `field`                 :   The output scalar object of type [field_type](@ref pm_io::field_type)
     442             :     !>                              containing `allocatable` scalar `character` components corresponding to the input arguments.<br>
     443             :     !>                              Any component of the output `field` corresponding to a **missing** input argument remains **unallocated** on output.<br>
     444             :     !>
     445             :     !>  \interface{field_type}
     446             :     !>  \code{.F90}
     447             :     !>
     448             :     !>      use pm_io, only: field_type
     449             :     !>      type(field_type) :: field
     450             :     !>
     451             :     !>      field = field_type(string = string, integer = integer, logical = logical, complex = complex, real = real)
     452             :     !>
     453             :     !>  \endcode
     454             :     !>
     455             :     !>  \pure
     456             :     !>
     457             :     !>  \elemental
     458             :     !>
     459             :     !>  \see
     460             :     !>  [wrap_type%%wrap()](@ref pm_io::wrap)<br>
     461             :     !>  [display_type%%show()](@ref pm_io::show)<br>
     462             :     !>  [display_type%%skip()](@ref pm_io::skip)<br>
     463             :     !>  [getStrWrapped](@ref pm_str::getStrWrapped)<br>
     464             :     !>  [getCentered](@ref pm_arrayCenter::getCentered)<br>
     465             :     !>  [setCentered](@ref pm_arrayCenter::setCentered)<br>
     466             :     !>  [isFailedGetShellWidth](@ref pm_sysShell::isFailedGetShellWidth)<br>
     467             :     !>  [isFailedGetShellHeight](@ref pm_sysShell::isFailedGetShellHeight)<br>
     468             :     !>
     469             :     !>  \example{field_type}
     470             :     !>  \include{lineno} example/pm_io/field_type/main.F90
     471             :     !>  \compilef{field_type}
     472             :     !>  \output{field_type}
     473             :     !>  \include{lineno} example/pm_io/field_type/main.out.F90
     474             :     !>
     475             :     !>  \test
     476             :     !>  [test_pm_io](@ref test_pm_io)
     477             :     !>
     478             :     !>  \finmain{field_type}
     479             :     !>
     480             :     !>  \author
     481             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     482             :     type :: field_type
     483             :         character(:, SK), allocatable :: string     !<  \public The scalar `character` of default kind \SK representing the **default left or right delimiter** to be used for wrapping `character` fields before displaying them.
     484             :         character(:, SK), allocatable :: integer    !<  \public The scalar `character` of default kind \SK representing the **default left or right delimiter** to be used for wrapping `integer` fields before displaying them.
     485             :         character(:, SK), allocatable :: logical    !<  \public The scalar `character` of default kind \SK representing the **default left or right delimiter** to be used for wrapping `logical` fields before displaying them.
     486             :         character(:, SK), allocatable :: complex    !<  \public The scalar `character` of default kind \SK representing the **default left or right delimiter** to be used for wrapping `complex` fields before displaying them.
     487             :         character(:, SK), allocatable :: real       !<  \public The scalar `character` of default kind \SK representing the **default left or right delimiter** to be used for wrapping `real` fields before displaying them.
     488             :     end type
     489             : 
     490             :     !>  \cond excluded
     491             :     interface field_type
     492             :     pure elemental module function constructField(string, integer, logical, complex, real) result(field)
     493             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     494             :         !DEC$ ATTRIBUTES DLLEXPORT :: constructField
     495             : #endif
     496             :         character(*, SK), intent(in), optional :: string, integer, logical, complex, real
     497             :         type(field_type) :: field
     498             :     end function
     499             :     end interface
     500             :     !>  \endcond excluded
     501             : 
     502             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     503             : 
     504             :     !>  \brief
     505             :     !>  This is an `abstract` derived type for constructing concrete derived types to
     506             :     !>  distinguish various procedure signatures that require different file forms (e.g., csv, binary, ...).<br>
     507             :     !>
     508             :     !>  \details
     509             :     !>  This `abstract` derived type is not meant to be directly accessed by the end users.<br>
     510             :     !>  Instead, the end users must use `parameter` objects instantiated from the concrete subclasses of this parent `abstract` derived type.<br>
     511             :     !>
     512             :     !>  \see
     513             :     !>  [csv](@ref pm_io::csv)<br>
     514             :     !>  [fld](@ref pm_io::fld)<br>
     515             :     !>  [unknown](@ref pm_io::unknown)<br>
     516             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     517             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     518             :     !>  [form_type](@ref pm_io::form_type)<br>
     519             :     !>  [formatted](@ref pm_io::formatted)<br>
     520             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     521             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     522             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     523             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     524             :     !>
     525             :     !>  \finmain{form_type}
     526             :     !>
     527             :     !>  \author
     528             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     529             :     type, abstract :: form_type
     530             :     end type
     531             : 
     532             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     533             : 
     534             :     !>  \brief
     535             :     !>  This is a concrete derived type whose instances are exclusively used
     536             :     !>  to signify the unknown file form within an interface of a procedure of the ParaMonte library.<br>
     537             :     !>
     538             :     !>  \details
     539             :     !>  Objects instantiated from this derived type are exclusively used to differentiate
     540             :     !>  the procedures within the various generic interfaces of the ParaMonte library.<br>
     541             :     !>  As such, this concrete derived type does not contain any attributes.<br>
     542             :     !>
     543             :     !>  \note
     544             :     !>  This concrete derived type is not meant to be directly accessed by the end users.<br>
     545             :     !>  Instead, the end users should use the specific object parameter instance of this derived type
     546             :     !>  (e.g., [unknown](@ref pm_io::unknown)) as directed by the documentation of the specific procedure they intend to use.<br>
     547             :     !>
     548             :     !>  \see
     549             :     !>  [csv](@ref pm_io::csv)<br>
     550             :     !>  [fld](@ref pm_io::fld)<br>
     551             :     !>  [unknown](@ref pm_io::unknown)<br>
     552             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     553             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     554             :     !>  [form_type](@ref pm_io::form_type)<br>
     555             :     !>  [formatted](@ref pm_io::formatted)<br>
     556             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     557             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     558             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     559             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     560             :     !>
     561             :     !>  \finmain{unknown_type}
     562             :     !>
     563             :     !>  \author
     564             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     565             :     type, extends(form_type) :: unknown_type
     566             :     end type
     567             : 
     568             :     !>  \brief
     569             :     !>  This is a scalar `parameter` object of type [unknown_type](@ref pm_io::unknown_type) that is exclusively used
     570             :     !>  to signify the unknown file form within an interface of a procedure of the ParaMonte library.<br>
     571             :     !>
     572             :     !>  \details
     573             :     !>  For example usage, see the documentation of the target procedure requiring this object.<br>
     574             :     !>
     575             :     !>  \see
     576             :     !>  [csv](@ref pm_io::csv)<br>
     577             :     !>  [fld](@ref pm_io::fld)<br>
     578             :     !>  [unknown](@ref pm_io::unknown)<br>
     579             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     580             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     581             :     !>  [form_type](@ref pm_io::form_type)<br>
     582             :     !>  [formatted](@ref pm_io::formatted)<br>
     583             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     584             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     585             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     586             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     587             :     !>
     588             :     !>  \finmain{unknown}
     589             :     !>
     590             :     !>  \author
     591             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     592             :     type(unknown_type), parameter :: unknown = unknown_type()
     593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     594             :     !DIR$ ATTRIBUTES DLLEXPORT :: unknown
     595             : #endif
     596             : 
     597             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     598             : 
     599             :     !>  \brief
     600             :     !>  This is a concrete derived type whose instances are exclusively used
     601             :     !>  to signify the unformatted (binary) file form within an interface of a procedure of the ParaMonte library.<br>
     602             :     !>
     603             :     !>  \details
     604             :     !>  Objects instantiated from this derived type are exclusively used to differentiate
     605             :     !>  the procedures within the various generic interfaces of the ParaMonte library.<br>
     606             :     !>  As such, this concrete derived type does not contain any attributes.<br>
     607             :     !>
     608             :     !>  \note
     609             :     !>  This concrete derived type is not meant to be directly accessed by the end users.<br>
     610             :     !>  Instead, the end users should use the specific object parameter instance of this derived type
     611             :     !>  (e.g., [unformatted](@ref pm_io::unformatted)) as directed by the documentation of the specific procedure they intend to use.<br>
     612             :     !>
     613             :     !>  \see
     614             :     !>  [csv](@ref pm_io::csv)<br>
     615             :     !>  [fld](@ref pm_io::fld)<br>
     616             :     !>  [unknown](@ref pm_io::unknown)<br>
     617             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     618             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     619             :     !>  [form_type](@ref pm_io::form_type)<br>
     620             :     !>  [formatted](@ref pm_io::formatted)<br>
     621             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     622             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     623             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     624             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     625             :     !>
     626             :     !>  \finmain{unformatted_type}
     627             :     !>
     628             :     !>  \author
     629             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     630             :     type, extends(form_type) :: unformatted_type
     631             :     end type
     632             : 
     633             :     !>  \brief
     634             :     !>  This is a scalar `parameter` object of type [unformatted_type](@ref pm_io::unformatted_type) that is exclusively used
     635             :     !>  to signify the unformatted (binary) file form within an interface of a procedure of the ParaMonte library.<br>
     636             :     !>
     637             :     !>  \details
     638             :     !>  For example usage, see the documentation of the target procedure requiring this object.<br>
     639             :     !>
     640             :     !>  \see
     641             :     !>  [csv](@ref pm_io::csv)<br>
     642             :     !>  [fld](@ref pm_io::fld)<br>
     643             :     !>  [unknown](@ref pm_io::unknown)<br>
     644             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     645             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     646             :     !>  [form_type](@ref pm_io::form_type)<br>
     647             :     !>  [formatted](@ref pm_io::formatted)<br>
     648             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     649             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     650             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     651             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     652             :     !>
     653             :     !>  \finmain{unformatted}
     654             :     !>
     655             :     !>  \author
     656             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     657             :     type(unformatted_type), parameter :: unformatted = unformatted_type()
     658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     659             :     !DIR$ ATTRIBUTES DLLEXPORT :: unformatted
     660             : #endif
     661             : 
     662             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     663             : 
     664             :     !>  \brief
     665             :     !>  This is a concrete derived type whose instances are exclusively used
     666             :     !>  to signify the formatted file form within an interface of a procedure of the ParaMonte library.<br>
     667             :     !>
     668             :     !>  \details
     669             :     !>  Objects instantiated from this derived type are exclusively used to differentiate
     670             :     !>  the procedures within the various generic interfaces of the ParaMonte library.<br>
     671             :     !>  As such, this concrete derived type does not contain any attributes.<br>
     672             :     !>
     673             :     !>  \note
     674             :     !>  This concrete derived type is not meant to be directly accessed by the end users.<br>
     675             :     !>  Instead, the end users should use the specific object parameter instance of this derived type
     676             :     !>  (e.g., [formatted](@ref pm_io::formatted)) as directed by the documentation of the specific procedure they intend to use.<br>
     677             :     !>
     678             :     !>  \see
     679             :     !>  [csv](@ref pm_io::csv)<br>
     680             :     !>  [fld](@ref pm_io::fld)<br>
     681             :     !>  [unknown](@ref pm_io::unknown)<br>
     682             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     683             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     684             :     !>  [form_type](@ref pm_io::form_type)<br>
     685             :     !>  [formatted](@ref pm_io::formatted)<br>
     686             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     687             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     688             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     689             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     690             :     !>
     691             :     !>  \finmain{formatted_type}
     692             :     !>
     693             :     !>  \author
     694             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     695             :     type, extends(form_type) :: formatted_type
     696             :     end type
     697             : 
     698             :     !>  \brief
     699             :     !>  This is a scalar `parameter` object of type [formatted_type](@ref pm_io::formatted_type) that is exclusively used
     700             :     !>  to signify the formatted file form within an interface of a procedure of the ParaMonte library.<br>
     701             :     !>
     702             :     !>  \details
     703             :     !>  For example usage, see the documentation of the target procedure requiring this object.<br>
     704             :     !>
     705             :     !>  \see
     706             :     !>  [csv](@ref pm_io::csv)<br>
     707             :     !>  [fld](@ref pm_io::fld)<br>
     708             :     !>  [unknown](@ref pm_io::unknown)<br>
     709             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     710             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     711             :     !>  [form_type](@ref pm_io::form_type)<br>
     712             :     !>  [formatted](@ref pm_io::formatted)<br>
     713             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     714             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     715             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     716             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     717             :     !>
     718             :     !>  \finmain{formatted}
     719             :     !>
     720             :     !>  \author
     721             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     722             :     type(formatted_type), parameter :: formatted = formatted_type()
     723             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     724             :     !DIR$ ATTRIBUTES DLLEXPORT :: formatted
     725             : #endif
     726             : 
     727             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     728             : 
     729             :     !>  \brief
     730             :     !>  This is a concrete derived type whose instances are exclusively used
     731             :     !>  to signify the CSV file form within an interface of a procedure of the ParaMonte library.<br>
     732             :     !>
     733             :     !>  \details
     734             :     !>  Objects instantiated from this derived type are exclusively used to differentiate
     735             :     !>  the procedures within the various generic interfaces of the ParaMonte library.<br>
     736             :     !>  As such, this concrete derived type does not contain any attributes.<br>
     737             :     !>
     738             :     !>  \note
     739             :     !>  This concrete derived type is not meant to be directly accessed by the end users.<br>
     740             :     !>  Instead, the end users should use the specific object parameter instance of this derived type
     741             :     !>  (e.g., [csv](@ref pm_io::csv)) as directed by the documentation of the specific procedure they intend to use.<br>
     742             :     !>
     743             :     !>  \see
     744             :     !>  [csv](@ref pm_io::csv)<br>
     745             :     !>  [fld](@ref pm_io::fld)<br>
     746             :     !>  [unknown](@ref pm_io::unknown)<br>
     747             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     748             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     749             :     !>  [form_type](@ref pm_io::form_type)<br>
     750             :     !>  [formatted](@ref pm_io::formatted)<br>
     751             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     752             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     753             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     754             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     755             :     !>
     756             :     !>  \finmain{csv_type}
     757             :     !>
     758             :     !>  \author
     759             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     760             :     type, extends(formatted_type) :: csv_type
     761             :     end type
     762             : 
     763             :     !>  \brief
     764             :     !>  This is a scalar `parameter` object of type [csv_type](@ref pm_io::csv_type) that is exclusively used
     765             :     !>  to signify the CSV file form within an interface of a procedure of the ParaMonte library.<br>
     766             :     !>
     767             :     !>  \details
     768             :     !>  For example usage, see the documentation of the target procedure requiring this object.<br>
     769             :     !>
     770             :     !>  \see
     771             :     !>  [csv](@ref pm_io::csv)<br>
     772             :     !>  [fld](@ref pm_io::fld)<br>
     773             :     !>  [unknown](@ref pm_io::unknown)<br>
     774             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     775             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     776             :     !>  [form_type](@ref pm_io::form_type)<br>
     777             :     !>  [formatted](@ref pm_io::formatted)<br>
     778             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     779             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     780             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     781             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     782             :     !>
     783             :     !>  \finmain{csv}
     784             :     !>
     785             :     !>  \author
     786             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     787             :     type(csv_type), parameter :: csv = csv_type()
     788             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     789             :     !DIR$ ATTRIBUTES DLLEXPORT :: csv
     790             : #endif
     791             : 
     792             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     793             : 
     794             :     !>  \brief
     795             :     !>  This is a concrete derived type whose instances are exclusively used
     796             :     !>  to signify the Fortran-list-directed file form within an interface of a procedure of the ParaMonte library.<br>
     797             :     !>
     798             :     !>  \details
     799             :     !>  Objects instantiated from this derived type are exclusively used to differentiate
     800             :     !>  the procedures within the various generic interfaces of the ParaMonte library.<br>
     801             :     !>  As such, this concrete derived type does not contain any attributes.<br>
     802             :     !>
     803             :     !>  \note
     804             :     !>  This concrete derived type is not meant to be directly accessed by the end users.<br>
     805             :     !>  Instead, the end users should use the specific object parameter instance of this derived type
     806             :     !>  (e.g., [fld](@ref pm_io::fld)) as directed by the documentation of the specific procedure they intend to use.<br>
     807             :     !>
     808             :     !>  \see
     809             :     !>  [csv](@ref pm_io::csv)<br>
     810             :     !>  [fld](@ref pm_io::fld)<br>
     811             :     !>  [unknown](@ref pm_io::unknown)<br>
     812             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     813             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     814             :     !>  [form_type](@ref pm_io::form_type)<br>
     815             :     !>  [formatted](@ref pm_io::formatted)<br>
     816             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     817             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     818             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     819             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     820             :     !>
     821             :     !>  \finmain{fld_type}
     822             :     !>
     823             :     !>  \author
     824             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     825             :     type, extends(formatted_type) :: fld_type
     826             :     end type
     827             : 
     828             :     !>  \brief
     829             :     !>  This is a scalar `parameter` object of type [fld_type](@ref pm_io::fld_type) that is exclusively used
     830             :     !>  to signify the Fortran-list-directed file form within an interface of a procedure of the ParaMonte library.<br>
     831             :     !>
     832             :     !>  \details
     833             :     !>  For example usage, see the documentation of the target procedure requiring this object.<br>
     834             :     !>
     835             :     !>  \see
     836             :     !>  [csv](@ref pm_io::csv)<br>
     837             :     !>  [fld](@ref pm_io::fld)<br>
     838             :     !>  [unknown](@ref pm_io::unknown)<br>
     839             :     !>  [csv_type](@ref pm_io::csv_type)<br>
     840             :     !>  [fld_type](@ref pm_io::fld_type)<br>
     841             :     !>  [form_type](@ref pm_io::form_type)<br>
     842             :     !>  [formatted](@ref pm_io::formatted)<br>
     843             :     !>  [unformatted](@ref pm_io::unformatted)<br>
     844             :     !>  [unknown_type](@ref pm_io::unknown_type)<br>
     845             :     !>  [formatted_type](@ref pm_io::formatted_type)<br>
     846             :     !>  [unformatted_type](@ref pm_io::unformatted_type)<br>
     847             :     !>
     848             :     !>  \finmain{fld}
     849             :     !>
     850             :     !>  \author
     851             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     852             :     type(fld_type), parameter :: fld = fld_type()
     853             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     854             :     !DIR$ ATTRIBUTES DLLEXPORT :: fld
     855             : #endif
     856             : 
     857             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     858             : 
     859             : !   >  \brief
     860             : !   >  Generate and return the maximum record length (`recl`) attribute of a `sequential` access file,
     861             : !   >  or a user-specified connected file (or unit).
     862             : !   >
     863             : !   >  \param[in]  file    :   The input scalar of type `character` of default kind \SK representing the
     864             : !   >                          path of a file whose `recl` is to be returned, if it is already opened.<br>
     865             : !   >                          (**optional**, must not be present if `unit` is present.)
     866             : !   >  \param[in]  unit    :   The input scalar of type `integer` of default kind \IK representing the
     867             : !   >                          unit of a file whose `recl` is to be returned, if it is already opened.<br>
     868             : !   >                          (**optional**, must not be present if `file` is present.)
     869             : !   >
     870             : !   >  \return
     871             : !   >  `recl`              :   The output scalar of type `integer` of default kind \IK representing the maximum record length of
     872             : !   >                          the file specified via the input `file` or `unit` arguments. If both `file` and `unit` are missing,
     873             : !   >                          then the `recl` of the a temporary `sequential` access file with `status = "scratch"` will be returned.
     874             : !   >
     875             : !   >  \interface{getRecl}
     876             : !   >  \code{.F90}
     877             : !   >
     878             : !   >      use pm_io, only: getRecl
     879             : !   >
     880             : !   >      recl = getRecl()
     881             : !   >      recl = getRecl(file)
     882             : !   >      recl = getRecl(unit)
     883             : !   >
     884             : !   >  \endcode
     885             : !   >
     886             : !   >  \remark
     887             : !   >  The default `recl` for a `sequential`-access `scratch` file is<br>
     888             : !   >      -#  `huge(0)` under the GNU Fortran compiler.
     889             : !   >      -#  `132` under the Intel Fortran compiler.
     890             : !   >
     891             : !   >  \impure
     892             : !   >
     893             : !   >  \elemental
     894             : !   >
     895             : !   >  \see
     896             : !   >  [getFileUnit](@ref pm_io::getFileUnit)<br>
     897             : !   >  [isPreconnected](@ref pm_io::isPreconnected)<br>
     898             : !   >
     899             : !   >  \example{getRecl}
     900             : !   >  \include{lineno} example/pm_io/getRecl/main.F90
     901             : !   >  \compile{getRecl}
     902             : !   >  \output{getRecl}
     903             : !   >  \include{lineno} example/pm_io/getRecl/main.out.F90
     904             : !   >  \test
     905             : !   >  [test_pm_io](@ref test_pm_io)
     906             : !   >
     907             : !   >  \finmain{getRecl}
     908             : !   >
     909             : !   >  \author
     910             : !   >  Amir Shahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     911             : !    interface getRecl
     912             : !
     913             : !    impure elemental function getRecl() result(recl)
     914             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     915             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getRecl
     916             : !#endif
     917             : !        use pm_kind, only: IK
     918             : !        integer(IK)                     :: recl
     919             : !    end function
     920             : !
     921             : !    impure elemental function getReclFile(file) result(recl)
     922             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     923             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getReclFile
     924             : !#endif
     925             : !        use pm_kind, only: IK
     926             : !        character(*, SK), intent(in)    :: file
     927             : !        integer(IK)                     :: recl
     928             : !    end function
     929             : !
     930             : !    impure elemental function getReclUnit(unit) result(recl)
     931             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     932             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getReclUnit
     933             : !#endif
     934             : !        use pm_kind, only: IK
     935             : !        integer(IK)     , intent(in)    :: unit
     936             : !        integer(IK)                     :: recl
     937             : !    end function
     938             : !
     939             : !    end interface
     940             : 
     941             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     942             : 
     943             :     !>  \brief
     944             :     !>  This is the [openArg_type](@ref pm_io::openArg_type) class containing
     945             :     !>  arguments that can be passed to the `open()` intrinsic Fortran statement.
     946             :     !>
     947             :     !>  \details
     948             :     !>  This type is merely meant to provide a convenient storage for file attributes that might be needed at the time of opening files for IO.<br>
     949             :     !>  This type is overloaded with `constructOpenArg()` to verify the consistency of the structure components values.<br>
     950             :     !>  The following optional arguments of the `open()` statement are deliberately excluded from this derived type:<br>
     951             :     !>  <ol>
     952             :     !>      <li>    `newunit`   :   There is no need for a dedicated component with this name since it is only relevant to calling the `open()` statement.<br>
     953             :     !>      <li>    `err`       :   There is no need for a dedicated component with this name since it is rarely used in modern Fortran.<br>
     954             :     !>  </ol>
     955             :     !>
     956             :     !>  \interface{openArg_type}
     957             :     !>  \code{.F90}
     958             :     !>
     959             :     !>      use pm_io, only: openArg_type
     960             :     !>      type(openArg_type) :: openArg
     961             :     !>
     962             :     !>      openArg = openArg_type  ( access        = access        &
     963             :     !>                              , action        = action        &
     964             :     !>                              , asynchronous  = asynchronous  &
     965             :     !>                              , blank         = blank         &
     966             :     !>                              , decimal       = decimal       &
     967             :     !>                              , delim         = delim         &
     968             :     !>                              , encoding      = encoding      &
     969             :     !>                              , form          = form          &
     970             :     !>                              , iostat        = iostat        &
     971             :     !>                              , pad           = pad           &
     972             :     !>                              , position      = position      &
     973             :     !>                              , recl          = recl          &
     974             :     !>                              , round         = round         &
     975             :     !>                              , sign          = sign          &
     976             :     !>                              , status        = status        &
     977             :     !>                              , unit          = unit          &
     978             :     !>                              , file          = file          &
     979             :     !>                              , iostat        = iostat        &
     980             :     !>                              , iomsg         = iomsg         &
     981             :     !>                              )
     982             :     !>
     983             :     !>  \endcode
     984             :     !>
     985             :     !>  \warning
     986             :     !>  All ASCII English alphabets in the input `character` arguments to the constructor of the class must be **lower-case**.<br>
     987             :     !>  This is critical as the cases of characters are not converted within the constructor before comparisons are made.<br>
     988             :     !>  The lower-case version of the input arguments can be obtained by calling [getStrLower](@ref pm_strASCII::getStrLower)
     989             :     !>  or [setStrLower](@ref pm_strASCII::setStrLower).<br>
     990             :     !>
     991             :     !>  \remark
     992             :     !>  The default `recl` for a `sequential`-access `scratch` file is<br>
     993             :     !>      -#  `huge(0)` under the GNU Fortran compiler.<br>
     994             :     !>      -#  `132` under the Intel Fortran compiler.<br>
     995             :     !>
     996             :     !>  \see
     997             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
     998             :     !>
     999             :     !>  \example{openArg_type}
    1000             :     !>  \include{lineno} example/pm_io/openArg_type/main.F90
    1001             :     !>  \compilef{openArg_type}
    1002             :     !>  \output{openArg_type}
    1003             :     !>  \include{lineno} example/pm_io/openArg_type/main.out.F90
    1004             :     !>
    1005             :     !>  \test
    1006             :     !>  [test_pm_io](@ref test_pm_io)
    1007             :     !>
    1008             :     !>  \bug
    1009             :     !>  \status \unresolved
    1010             :     !>  \source \ifort{< 2021.10.0 20230609}
    1011             :     !>  \desc
    1012             :     !>  The \ifort returns a runtime error in Microsoft WSL,
    1013             :     !>  \code{.sh}
    1014             :     !>      forrtl: severe (173): A pointer passed to DEALLOCATE points to an object that cannot be deallocated
    1015             :     !>  \endcode
    1016             :     !>  within the submodule procedure `isFalseAssertion()` which also persisted when the procedure was in the module.<br>
    1017             :     !>  This happens only when the library is built with script flag `--mem heap` enabling heap allocation and only when specified with `--build release`.<br>
    1018             :     !>  This implies the cause of the error likely has its roots in the compilers optimizations.<br>
    1019             :     !>  It turns out that the root cause of the runtime error was the `optional` argument `iomsg` with `intent(inout)`.<br>
    1020             :     !>  \remedy
    1021             :     !>  The procedure `isFalseAssertion()` is now commented out and all error handlings are done painfully manually.<br>
    1022             :     !>  However, this did not help as the same error persisted and the root cause was identified to be the `iomsg` argument.<br>
    1023             :     !>  As such, this optional argument is now removed and the error message, if any, is returned in the output object component `iomsg`.<br>
    1024             :     !>
    1025             :     !>  \bug
    1026             :     !>  \status \unresolved
    1027             :     !>  \source \gfortran{< 12}
    1028             :     !>  \desc
    1029             :     !>  The \gfortran cannot compile interfaces with dummy arguments `character(:), intent(out), allocatable, optional`.<br>
    1030             :     !>  This has created a redundancy for error handling in this procedure by requiring also to pass `iostat` to control the occurrence of an error.<br>
    1031             :     !>  Without this bug, the allocation status of `iomsg` could have been used to signal no occurrence of error.<br>
    1032             :     !>  \remedy
    1033             :     !>  All `iomsg` arguments are now assumed-length strings.<br>
    1034             :     !>
    1035             :     !>  \finmain{openArg_type}
    1036             :     !>
    1037             :     !>  \author
    1038             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1039             :     type :: openArg_type
    1040             :         character(10,SK)                :: access       = SK_"sequential"           !<  \public A scalar `character`    of default kind \SK of length `10`  containing the `access`         attribute of the file: `"sequential"` (default), `"direct"`, `"stream"`
    1041             :         character( 9,SK)                :: action       = SK_"readwrite"            !<  \public A scalar `character`    of default kind \SK of length `9`   containing the `action`         attribute of the file: `"readwrite"` (default), `"read"`, `"write"`
    1042             :         character( 3,SK)                :: asynchronous = SK_"no"                   !<  \public A scalar `character`    of default kind \SK of length `3`   containing the `asynchronous`   attribute of the file: `"no"` (default), `"yes"`
    1043             :         character( 4,SK)                :: blank        = SK_"null"                 !<  \public A scalar `character`    of default kind \SK of length `4`   containing the `blank`          attribute of the file: `"null"` (default), `"yes"`
    1044             :         character( 5,SK)                :: decimal      = SK_"point"                !<  \public A scalar `character`    of default kind \SK of length `5`   containing the `decimal`        attribute of the file: `"point"` (default), `"comma"`
    1045             :         character(10,SK)                :: delim        = SK_"none"                 !<  \public A scalar `character`    of default kind \SK of length `10`  containing the `delim`          attribute of the file: `"none"` (default), `"apostrophe"`, `"quote"`
    1046             :         character( 7,SK)                :: encoding     = SK_"default"              !<  \public A scalar `character`    of default kind \SK of length `7`   containing the `encoding`       attribute of the file: `"default"` (default), `"utf-8"`
    1047             :         character(11,SK)                :: form         = SK_"formatted"            !<  \public A scalar `character`    of default kind \SK of length `11`  containing the `delim`          attribute of the file: `"formatted"` (default), `"unformatted"`
    1048             :         integer(IK)                     :: iostat       = 0_IK                      !<  \public A scalar `integer`      of default kind \IK                 containing the `iostat`         attribute of the file: default = `0_IK`. The processor sets it to a positive value if a runtime IO error occurs.
    1049             :         character( 3,SK)                :: pad          = SK_"yes"                  !<  \public A scalar `character`    of default kind \SK of length `3`   containing the `pad`            attribute of the file: `"yes"` (default), `"no"`
    1050             :         character( 6,SK)                :: position     = SK_"asis"                 !<  \public A scalar `character`    of default kind \SK of length `6`   containing the `position`       attribute of the file: `"asis"` (default), `"rewind"`, `"append"`
    1051             :         integer(IK)                     :: recl         = huge(0_IK)                !<  \public A scalar `integer`      of default kind \IK                 containing the `recl`           attribute of the file. It is mandatory for direct access files.
    1052             :         character(17,SK)                :: round        = SK_"processor_defined"    !<  \public A scalar `character`    of default kind \SK of length `17`  containing the `round`          attribute of the file: `"processor_defined"` (default), `"compatible"`, `"nearest"`, `"zero"`, `"down"`, `"up"`
    1053             :         character(17,SK)                :: sign         = SK_"processor_defined"    !<  \public A scalar `character`    of default kind \SK of length `17`  containing the `sign`           attribute of the file: `"processor_defined"` (default), `"suppress"`, `"plus"`
    1054             :         character( 7,SK)                :: status       = SK_"unknown"              !<  \public A scalar `character`    of default kind \SK of length `7`   containing the `status`         attribute of the file: `"unkown"` (default), `"scratch"`, `"replace"`, `"new"`, `"old"`
    1055             :         integer(IK)                     :: unit         = -1_IK                     !<  \public A scalar `integer`      of default kind \IK                 containing the `unit`           attribute of the file. It is a negative number if set by the processor, otherwise it must be positive.
    1056             :         character(:, SK), allocatable   :: iomsg                                    !<  \public A scalar `character`    of default kind \SK of length `:`   containing the error message if an error occurs.
    1057             :         character(:, SK), allocatable   :: file                                     !<  \public A scalar `character`    of default kind \SK of length `:`   containing the file path.
    1058             :     end type
    1059             : 
    1060             : 
    1061             :     !>  \brief
    1062             :     !>  Generate and return an object of class [openArg_type](@ref pm_io::openArg_type)
    1063             :     !>  containing arguments that can be passed to the `open()` intrinsic Fortran statement.
    1064             :     !>
    1065             :     !>  \details
    1066             :     !>  This is the constructor of the type [openArg_type](@ref pm_io::openArg_type) to verify the consistency of the structure components values.<br>
    1067             :     !>  The following optional arguments of the `open()` statement are deliberately excluded from this derived type:<br>
    1068             :     !>  <ol>
    1069             :     !>      <li>    `newunit`   :   There is no need for a dedicated component with this name since it is only relevant to calling the `open()` statement.<br>
    1070             :     !>      <li>    `err`       :   There is no need for a dedicated component with this name since it is rarely used in modern Fortran.<br>
    1071             :     !>  </ol>
    1072             :     !>
    1073             :     !>  \param[in]      access          :   The input  scalar `character`   of default kind \SK containing the `access`        attribute of the file: `"sequential"` (default), `"direct"`, `"stream"`.<br>
    1074             :     !>                                      (**optional**, default = `SK_"sequential"`)
    1075             :     !>  \param[in]      action          :   The input  scalar `character`   of default kind \SK containing the `action`        attribute of the file: `"readwrite"` (default), `"read"`, `"write"`.<br>
    1076             :     !>                                      (**optional**, default = `SK_"readwrite"`)
    1077             :     !>  \param[in]      asynchronous    :   The input  scalar `character`   of default kind \SK containing the `asynchronous`  attribute of the file: `"no"` (default), `"yes"`.<br>
    1078             :     !>                                      (**optional**, default = `SK_"no"`)
    1079             :     !>  \param[in]      blank           :   The input  scalar `character`   of default kind \SK containing the `blank`         attribute of the file: `"null"` (default), `"yes"`.<br>
    1080             :     !>                                      (**optional**, default = `SK_"null"`)
    1081             :     !>  \param[in]      decimal         :   The input  scalar `character`   of default kind \SK containing the `decimal`       attribute of the file: `"point"` (default), `"comma"`.<br>
    1082             :     !>                                      (**optional**, default = `SK_"point"`)
    1083             :     !>  \param[in]      delim           :   The input  scalar `character`   of default kind \SK containing the `delim`         attribute of the file: `"none"` (default), `"apostrophe"`, `"quote"`.<br>
    1084             :     !>                                      (**optional**, default = `SK_"none"`)
    1085             :     !>  \param[in]      encoding        :   The input  scalar `character`   of default kind \SK containing the `encoding`      attribute of the file: `"default"` (default), `"utf-8"`.<br>
    1086             :     !>                                      (**optional**, default = `SK_"default"`)
    1087             :     !>  \param[in]      form            :   The input  scalar `character`   of default kind \SK containing the `delim`         attribute of the file: `"formatted"` (default), `"unformatted"`.<br>
    1088             :     !>                                      (**optional**, default = `SK_"formatted"`)
    1089             :     !>  \param[in]      pad             :   The input  scalar `character`   of default kind \SK containing the `pad`           attribute of the file: `"yes"` (default), `"no"`.<br>
    1090             :     !>                                      (**optional**, default = `SK_"yes"`)
    1091             :     !>  \param[in]      position        :   The input  scalar `character`   of default kind \SK containing the `position`      attribute of the file: `"asis"` (default), `"rewind"`, `"append"`.<br>
    1092             :     !>                                      (**optional**, default = `SK_"asis"`)
    1093             :     !>  \param[in]      recl            :   The input  scalar `integer`     of default kind \IK containing the `recl`          attribute of the file. It is mandatory for direct access files.<br>
    1094             :     !>                                      (**optional**, default = ``. It can be specified **if and only if** the condition `access == SK_"sequential"` for the specified input argument `access`.)
    1095             :     !>  \param[in]      round           :   The input  scalar `character`   of default kind \SK containing the `round`         attribute of the file: `"processor_defined"` (default), `"compatible"`, `"nearest"`, `"zero"`, `"down"`, `"up"`.<br>
    1096             :     !>                                      (**optional**, default = `SK_"processor_defined"`)
    1097             :     !>  \param[in]      sign            :   The input  scalar `character`   of default kind \SK containing the `sign`          attribute of the file: `"processor_defined"` (default), `"suppress"`, `"plus"`.<br>
    1098             :     !>                                      (**optional**, default = `SK_"processor_defined"`)
    1099             :     !>  \param[in]      status          :   The input  scalar `character`   of default kind \SK containing the `status`        attribute of the file: `"unkown"` (default), `"scratch"`, `"replace"`, `"new"`, `"old"`.<br>
    1100             :     !>                                      (**optional**, default = `SK_"unknown"`)
    1101             :     !>  \param[in]      unit            :   The input  scalar `integer`     of default kind \IK containing the `unit`          attribute of the file.<br>
    1102             :     !>                                      It is a negative number if set by the processor, otherwise it must be positive.<br>
    1103             :     !>                                      As per the Fortran standard, `-1` is reserved to represent a file that is not connected.<br>
    1104             :     !>                                      Therefore, if `-1` is specified as input value, it will be overwritten with a random preconnected unit number.<br>
    1105             :     !>                                      (**optional**, default = [getFileUnit()](@ref pm_io::getFileUnit))
    1106             :     !>  \param[in]      file            :   The input  scalar `character`   of default kind \SK containing the file path.<br>
    1107             :     !>                                      (**optional**. If missing, the `file` component of the output object remains unallocated.)
    1108             :     !>  \param[out]     iostat          :   The output scalar `integer`     of default kind \IK.<br>
    1109             :     !>                                      <ol>
    1110             :     !>                                          <li>    If present and no error occurs, it is set to `0` on output.<br>
    1111             :     !>                                          <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.<br>
    1112             :     !>                                                  In such a case, the input `optional` argument `iomsg`, or if missing, the component `iomsg` of the output object of type [openArg_type](@ref pm_io::openArg_type)
    1113             :     !>                                                  will be set to a descriptive message describing the nature of the error that has occurred.<br>
    1114             :     !>                                          <li>    If missing and an error occurs, then the program halts by calling `error stop`
    1115             :     !>                                                  followed by the relevant error message.<br>
    1116             :     !>                                      </ol>
    1117             :     !>                                      (**optional**.)
    1118             :     !>  \param[inout]   iomsg           :   The input/output scalar `character` of default kind \SK whose length type parameter and its contents will be used to set that of the corresponding component of the output object.<br>
    1119             :     !>                                      Additionally, if a runtime error occurs while constructing the output object, `iomsg` will be set to a descriptive message about the nature of the error occurred.<br>
    1120             :     !>                                      (**optional**, default = `repeat(" ", LEN_IOMSG)` where [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is compile-time constant.)
    1121             :     !>
    1122             :     !>  \return
    1123             :     !>  `openArg`                       :   The output scalar object of type [openArg_type](@ref pm_io::openArg_type) whose components
    1124             :     !>                                      are set to the corresponding input values or otherwise set to an appropriate default value.
    1125             :     !>
    1126             :     !>  \interface{constructOpenArg}
    1127             :     !>  \code{.F90}
    1128             :     !>
    1129             :     !>      use pm_io, only: openArg_type
    1130             :     !>      type(openArg_type) :: openArg
    1131             :     !>
    1132             :     !>      openArg = openArg_type  ( access        = access        &
    1133             :     !>                              , action        = action        &
    1134             :     !>                              , asynchronous  = asynchronous  &
    1135             :     !>                              , blank         = blank         &
    1136             :     !>                              , decimal       = decimal       &
    1137             :     !>                              , delim         = delim         &
    1138             :     !>                              , encoding      = encoding      &
    1139             :     !>                              , form          = form          &
    1140             :     !>                              , pad           = pad           &
    1141             :     !>                              , position      = position      &
    1142             :     !>                              , recl          = recl          &
    1143             :     !>                              , round         = round         &
    1144             :     !>                              , sign          = sign          &
    1145             :     !>                              , status        = status        &
    1146             :     !>                              , unit          = unit          &
    1147             :     !>                              , file          = file          &
    1148             :     !>                              , iostat        = iostat        &
    1149             :     !>                              , iomsg         = iomsg         &
    1150             :     !>                              )
    1151             :     !>
    1152             :     !>  \endcode
    1153             :     !>
    1154             :     !>  \warning
    1155             :     !>  All ASCII English alphabets in the input `character` arguments to this procedure must be **lower-case**.<br>
    1156             :     !>  This is critical as the cases of characters are not converted within the constructor before comparisons are made.<br>
    1157             :     !>  The lower-case version of the input arguments can be obtained by calling [getStrLower](@ref pm_strASCII::getStrLower)
    1158             :     !>  or [setStrLower](@ref pm_strASCII::setStrLower).<br>
    1159             :     !>
    1160             :     !>  \remark
    1161             :     !>  If the input argument `unit` is missing, then the `unit` component of the output object is set to the unit of the specified `file` if it is present, exists, and is connected.<br>
    1162             :     !>  Otherwise, the `unit` component is set to a unique positive number that is not already associated with any other connected file.<br>
    1163             :     !>
    1164             :     !>  \remark
    1165             :     !>  The default `recl` for a `sequential`-access `scratch` file is<br>
    1166             :     !>      -#  `huge(0)` under the GNU Fortran compiler.<br>
    1167             :     !>      -#  `132` under the Intel Fortran compiler.<br>
    1168             :     !>
    1169             :     !>  \impure
    1170             :     !>
    1171             :     !>  \elemental
    1172             :     !>
    1173             :     !>  \see
    1174             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1175             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1176             :     !>
    1177             :     !>  \example{constructOpenArg}
    1178             :     !>  \include{lineno} example/pm_io/openArg_type/main.F90
    1179             :     !>  \compilef{constructOpenArg}
    1180             :     !>  \output{constructOpenArg}
    1181             :     !>  \include{lineno} example/pm_io/openArg_type/main.out.F90
    1182             :     !>
    1183             :     !>  \test
    1184             :     !>  [test_pm_io](@ref test_pm_io)
    1185             :     !>
    1186             :     !>  \finmain{constructOpenArg}
    1187             :     !>
    1188             :     !>  \author
    1189             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1190             :     interface openArg_type
    1191             :     impure elemental module function constructOpenArg   ( access        &
    1192             :                                                         , action        &
    1193             :                                                         , asynchronous  &
    1194             :                                                         , blank         &
    1195             :                                                         , decimal       &
    1196             :                                                         , delim         &
    1197             :                                                         , encoding      &
    1198             :                                                         , form          &
    1199             :                                                         , pad           &
    1200             :                                                         , position      &
    1201             :                                                         , recl          &
    1202             :                                                         , round         &
    1203             :                                                         , sign          &
    1204             :                                                         , status        &
    1205             :                                                         , unit          &
    1206             :                                                         , file          &
    1207             :                                                         , iostat        &
    1208             :                                                         , iomsg         &
    1209             :                                                         ) result(openArg)
    1210             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1211             :         !DEC$ ATTRIBUTES DLLEXPORT :: constructOpenArg
    1212             : #endif
    1213             :         character(*, SK), intent(in)    , optional  :: access
    1214             :         character(*, SK), intent(in)    , optional  :: action
    1215             :         character(*, SK), intent(in)    , optional  :: asynchronous
    1216             :         character(*, SK), intent(in)    , optional  :: blank
    1217             :         character(*, SK), intent(in)    , optional  :: decimal
    1218             :         character(*, SK), intent(in)    , optional  :: delim
    1219             :         character(*, SK), intent(in)    , optional  :: encoding
    1220             :         character(*, SK), intent(in)    , optional  :: form
    1221             :         character(*, SK), intent(in)    , optional  :: pad
    1222             :         character(*, SK), intent(in)    , optional  :: position
    1223             :         integer(IK)     , intent(in)    , optional  :: recl
    1224             :         character(*, SK), intent(in)    , optional  :: round
    1225             :         character(*, SK), intent(in)    , optional  :: sign
    1226             :         character(*, SK), intent(in)    , optional  :: status
    1227             :         integer(IK)     , intent(in)    , optional  :: unit
    1228             :         character(*, SK), intent(in)    , optional  :: file
    1229             :         character(*, SK), intent(inout) , optional  :: iomsg
    1230             :         integer(IK)     , intent(out)   , optional  :: iostat
    1231             :         type(openArg_type)                          :: openArg
    1232             :     end function
    1233             :     end interface
    1234             : 
    1235             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1236             : 
    1237             :     !>  \brief
    1238             :     !>  Generate and return `.true.` if the input `file` (or `unit`) is connected to a `unit` (or `file`), and `.false.` otherwise.
    1239             :     !>
    1240             :     !>  \details
    1241             :     !>  This generic functional interface is a simple convenience wrapper around the Fortran intrinsic `inquire()` statement.
    1242             :     !>
    1243             :     !>  \param[in]  unit    :   The input scalar, or array of arbitrary rank, of type `integer` of default kind \IK representing the file unit whose connection status is to be checked.<br>
    1244             :     !>                          (**optional**, it must be present <b>if and only if</b> the input argument `file` is missing.)
    1245             :     !>  \param[in]  file    :   The input scalar, or array of arbitrary rank, of type `character` of default kind \SK representing the file path whose connection status is to be checked.<br>
    1246             :     !>                          (**optional**, it must be present <b>if and only if</b> the input argument `unit` is missing.)
    1247             :     !>
    1248             :     !>  \return
    1249             :     !>  `opened`            :   The output scalar, or array of same rank, shape, and size as the input array-like argument, of type `logical` of default kind \LK.<br>
    1250             :     !>                          It is `.true.` <b>if and only if</b> the input `unit` or `file` is already connected (opened).<br>
    1251             :     !>                          Otherwise, it is `.false.`.<br>
    1252             :     !>
    1253             :     !>  \interface{isOpen}
    1254             :     !>  \code{.F90}
    1255             :     !>
    1256             :     !>      use pm_io, only: isOpen
    1257             :     !>      use pm_kind, only: LK
    1258             :     !>      logical(LK) :: opened
    1259             :     !>
    1260             :     !>      opened = isOpen(unit)
    1261             :     !>      opened = isOpen(file)
    1262             :     !>
    1263             :     !>  \endcode
    1264             :     !>
    1265             :     !>  \warning
    1266             :     !>  This procedure does not gracefully handle unexpected runtime errors.<br>
    1267             :     !>  If error handling is needed, use the Fortran intrinsic `inquire()` with arguments `iostat` and `iomsg` present.<br>
    1268             :     !>
    1269             :     !>  \impure
    1270             :     !>
    1271             :     !>  \elemental
    1272             :     !>
    1273             :     !>  \see
    1274             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1275             :     !>
    1276             :     !>  \example{isOpen}
    1277             :     !>  \include{lineno} example/pm_io/isOpen/main.F90
    1278             :     !>  \compilef{isOpen}
    1279             :     !>  \output{isOpen}
    1280             :     !>  \include{lineno} example/pm_io/isOpen/main.out.F90
    1281             :     !>
    1282             :     !>  \test
    1283             :     !>  [test_pm_io](@ref test_pm_io)
    1284             :     !>
    1285             :     !>  \finmain{isOpen}
    1286             :     !>
    1287             :     !>  \author
    1288             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1289             :     interface isOpen
    1290             : 
    1291             :     impure elemental module function isOpenUnit(unit) result(opened)
    1292             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1293             :         !DEC$ ATTRIBUTES DLLEXPORT :: isOpenUnit
    1294             : #endif
    1295             :         integer(IK)     , intent(in)    :: unit
    1296             :         logical(LK)                     :: opened
    1297             :     end function
    1298             : 
    1299             :     impure elemental module function isOpenFile(file) result(opened)
    1300             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1301             :         !DEC$ ATTRIBUTES DLLEXPORT :: isOpenFile
    1302             : #endif
    1303             :         character(*, SK), intent(in)    :: file
    1304             :         logical(LK)                     :: opened
    1305             :     end function
    1306             : 
    1307             : !    impure elemental module function isOpenUnitII(unit, iostat, iomsg) result(opened)
    1308             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1309             : !        !DEC$ ATTRIBUTES DLLEXPORT :: isOpenUnitII
    1310             : !#endif
    1311             : !        integer(IK)     , intent(in)    :: unit
    1312             : !        integer(IK)     , intent(out)   :: iostat
    1313             : !        character(*, SK), intent(inout) :: iomsg
    1314             : !        logical(LK)                     :: opened
    1315             : !    end function
    1316             : !
    1317             : !    impure elemental module function isOpenFileII(file, iostat, iomsg) result(opened)
    1318             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1319             : !        !DEC$ ATTRIBUTES DLLEXPORT :: isOpenFileII
    1320             : !#endif
    1321             : !        character(*, SK), intent(in)    :: file
    1322             : !        integer(IK)     , intent(out)   :: iostat
    1323             : !        character(*, SK), intent(inout) :: iomsg
    1324             : !        logical(LK)                     :: opened
    1325             : !    end function
    1326             : 
    1327             :     end interface
    1328             : 
    1329             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1330             : 
    1331             :     !>  \brief
    1332             :     !>  Generate and return the `action` attribute of the input `file` or `unit`.
    1333             :     !>
    1334             :     !>  \details
    1335             :     !>  The `action` attribute of a connected `file` or `unit` is returned by the Fortran intrinsic `inquire()` statement.<br>
    1336             :     !>  Possible values are, `"READ"`, `"WRITE"`, `"READWRITE"`. If there is no connection, the value returned is `"UNDEFINED"`.<br>
    1337             :     !>
    1338             :     !>  \param[in]  unit    :   The input scalar, or array of arbitrary rank, of type `integer` of default kind \IK representing the file unit whose `action` attribute is to be returned.<br>
    1339             :     !>                          (**optional**, it must be present <b>if and only if</b> the input argument `file` is missing.)
    1340             :     !>  \param[in]  file    :   The input scalar, or array of arbitrary rank, of type `character` of default kind \SK representing the file path whose `action` attribute is to be returned.<br>
    1341             :     !>                          (**optional**, it must be present <b>if and only if</b> the input argument `unit` is missing.)
    1342             :     !>
    1343             :     !>  \return
    1344             :     !>  `action`            :   The output scalar, or array of same rank, shape, and size as the input array-like argument,
    1345             :     !>                          of type `character` of default kind \SK of length type parameter `9`, containing the `action` attribute of the input `file` or `unit`.<br>
    1346             :     !>                          If the length of the output value is less than `9`, it is left-adjusted and padded with blanks.<br>
    1347             :     !>
    1348             :     !>  \interface{getAction}
    1349             :     !>  \code{.F90}
    1350             :     !>
    1351             :     !>      use pm_kind, only: SK
    1352             :     !>      use pm_io, only: getAction
    1353             :     !>      character(9, SK) :: action
    1354             :     !>
    1355             :     !>      action = getAction(unit)
    1356             :     !>      action = getAction(file)
    1357             :     !>
    1358             :     !>  \endcode
    1359             :     !>
    1360             :     !>  \warning
    1361             :     !>  This procedure does not gracefully handle unexpected runtime errors.<br>
    1362             :     !>  If error handling is needed, use the Fortran intrinsic `inquire()` with arguments `iostat` and `iomsg` present.<br>
    1363             :     !>
    1364             :     !>  \impure
    1365             :     !>
    1366             :     !>  \elemental
    1367             :     !>
    1368             :     !>  \see
    1369             :     !>  [isOpen](@ref pm_io::isOpen)<br>
    1370             :     !>
    1371             :     !>  \example{getAction}
    1372             :     !>  \include{lineno} example/pm_io/getAction/main.F90
    1373             :     !>  \compilef{getAction}
    1374             :     !>  \output{getAction}
    1375             :     !>  \include{lineno} example/pm_io/getAction/main.out.F90
    1376             :     !>
    1377             :     !>  \test
    1378             :     !>  [test_pm_io](@ref test_pm_io)
    1379             :     !>
    1380             :     !>  \finmain{getAction}
    1381             :     !>
    1382             :     !>  \author
    1383             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1384             :     interface getAction
    1385             : 
    1386             :     impure elemental module function getActionUnit(unit) result(action)
    1387             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1388             :         !DEC$ ATTRIBUTES DLLEXPORT :: getActionUnit
    1389             : #endif
    1390             :         integer(IK)     , intent(in)                :: unit
    1391             :         character(9, SK)                            :: action
    1392             :     end function
    1393             : 
    1394             :     impure elemental module function getActionFile(file) result(action)
    1395             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1396             :         !DEC$ ATTRIBUTES DLLEXPORT :: getActionFile
    1397             : #endif
    1398             :         character(*, SK), intent(in)                :: file
    1399             :         character(9, SK)                            :: action
    1400             :     end function
    1401             : 
    1402             :     end interface
    1403             : 
    1404             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1405             : 
    1406             :     !>  \brief
    1407             :     !>  Generate and return the number of records in the <i>entire</i> **record-oriented** input file.
    1408             :     !>
    1409             :     !>  \details
    1410             :     !>  If any error occurs during the IO and the output `iostat` argument is missing, the program will halt by calling `error stop`.<br>
    1411             :     !>  Within the procedures,<br>
    1412             :     !>  <ol>
    1413             :     !>      <li>    If the input argument `file` is present, the file will be opened on input and closed before returning the control.<br>
    1414             :     !>      <li>    If the input argument `unit` is present, the file is assumed to opened already, **will be rewound to the file beginning**,
    1415             :     !>              and will be positioned after the last record in file **without being closed** on return.<br>
    1416             :     !>  </ol>
    1417             :     !>
    1418             :     !>  See [getCountRecordLeft](@ref pm_io::getCountRecordLeft) for counting the number of records **left** in an already-opened file.<br>
    1419             :     !>
    1420             :     !>  \param[in]      file        :   The input scalar `character` of default kind \SK containing the file path, whose number of records will be returned.<br>
    1421             :     !>                                  The input `file` <b>must not be connected</b> prior to calling this procedure.<br>
    1422             :     !>                                  If the file is already connected, specify the file unit as input `unit` argument.<br>
    1423             :     !>                                  (**optional**. It must be present <b>if and only if</b> the input argument `unit` is missing.)
    1424             :     !>  \param[in]      unit        :   The input scalar `integer` of default kind \IK containing the connected file unit, whose number of records will be returned.<br>
    1425             :     !>                                  The input `unit` <b>must be connected</b> prior to calling this procedure.<br>
    1426             :     !>                                  If the unit is not already connected, specify the file path as the input `file` argument.<br>
    1427             :     !>                                  (**optional**. It must be present <b>if and only if</b> the input argument `unit` is missing.)
    1428             :     !>  \param          isCountable :   The `external` user-specified function that takes one input **scalar** `character` of default kind \SK of arbitrary length type parameter
    1429             :     !>                                  containing the most recent record that has been read from the input file.<br>
    1430             :     !>                                  It returns a scalar `logical` of default kind \LK that is `.true.` <b>if and only if</b> the input `record` should be included in counting.<br>
    1431             :     !>                                  The following illustrates the generic interface of `isCountable`,
    1432             :     !>                                  \code{.F90}
    1433             :     !>                                      function isCountable(record) result(countable)
    1434             :     !>                                          use pm_kind, only: LK, SK
    1435             :     !>                                          character(*, SK), intent(in)    :: record
    1436             :     !>                                          logical(LK)                     :: countable
    1437             :     !>                                      end function
    1438             :     !>                                  \endcode
    1439             :     !>                                  This user-defined countability check is extremely useful where certain records in the file ought to be
    1440             :     !>                                  excluded from counting or only records with specific patterns should be included (for example, excluding
    1441             :     !>                                  or including only records that are empty or begin with or end with or have specific patterns).<br>
    1442             :     !>                                  (**optional**. If missing, all records are included in counting.)
    1443             :     !>  \param[in]      del         :   The input scalar `logical` of default kind \LK.<br>
    1444             :     !>                                  <ol>
    1445             :     !>                                      <li>    If `.true.`, the file will be deleted upon return.<br>
    1446             :     !>                                      <li>    If `.false.`, the file will only be closed (without deletion) upon return.<br>
    1447             :     !>                                  </ol>
    1448             :     !>                                  (**optional**, default = `.false.`)
    1449             :     !>  \param[out]     iostat      :   The **optional** output scalar `integer` of default kind \IK.<br>
    1450             :     !>                                  <ol>
    1451             :     !>                                      <li>    If present and no error occurs, it is set to `0` on output.<br>
    1452             :     !>                                      <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.<br>
    1453             :     !>                                      <li>    If missing and an error occurs, then the program halts by calling `error stop` followed by the relevant error message.<br>
    1454             :     !>                                  </ol>
    1455             :     !>                                  (**optional**.)
    1456             :     !>  \param[inout]   iomsg       :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    1457             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    1458             :     !>                                  (**optional**. Its presence is relevant only if the `iostat` output argument is also present.)
    1459             :     !>
    1460             :     !>  \return
    1461             :     !>  `nrecord`                   :   The output scalar `integer` of default kind \IK, representing the number of records in the input file.
    1462             :     !>
    1463             :     !>  \interface{getCountRecord}
    1464             :     !>  \code{.F90}
    1465             :     !>
    1466             :     !>      use pm_io, only: getCountRecord
    1467             :     !>
    1468             :     !>      nrecord = getCountRecord(file, isCountable = isCountable, del = del, iostat = iostat, iomsg = iomsg) ! file must not be connected.
    1469             :     !>      nrecord = getCountRecord(unit, isCountable = isCountable, del = del, iostat = iostat, iomsg = iomsg) ! unit must be already connected. `rewind(unit)` will occur.
    1470             :     !>
    1471             :     !>  \endcode
    1472             :     !>
    1473             :     !>  \warning
    1474             :     !>  The input `file` <b>must not be connected</b> prior to calling this procedure.<br>
    1475             :     !>  The input `unit` <b>must be already connected</b> prior to calling this procedure.<br>
    1476             :     !>  \vericons
    1477             :     !>
    1478             :     !>  \impure
    1479             :     !>
    1480             :     !>  \see
    1481             :     !>  [getCountRecordLeft](@ref pm_io::getCountRecordLeft)<br>
    1482             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1483             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1484             :     !>
    1485             :     !>  \example{getCountRecord}
    1486             :     !>  \include{lineno} example/pm_io/getCountRecord/main.F90
    1487             :     !>  \compilef{getCountRecord}
    1488             :     !>  \output{getCountRecord}
    1489             :     !>  \include{lineno} example/pm_io/getCountRecord/main.out.F90
    1490             :     !>
    1491             :     !>  \test
    1492             :     !>  [test_pm_io](@ref test_pm_io)
    1493             :     !>
    1494             :     !>  \todo
    1495             :     !>  This procedure can be converted to a generic interface to add the optional `iseq()`
    1496             :     !>  external comparison procedures for custom exclusion or inclusion of lines in the count.
    1497             :     !>
    1498             :     !>  \finmain{getCountRecord}
    1499             :     !>
    1500             :     !>  \author
    1501             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1502             :     interface getCountRecord
    1503             : 
    1504             :     module function getCountRecordFile(file, isCountable, del, iostat, iomsg) result(nrecord)
    1505             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1506             :         !DEC$ ATTRIBUTES DLLEXPORT :: getCountRecordFile
    1507             : #endif
    1508             :         use iso_fortran_env, only: iostat_end
    1509             :         character(*, SK), intent(in)                    :: file
    1510             :         procedure(logical(LK))          , optional      :: isCountable
    1511             :         logical(LK)     , intent(in)    , optional      :: del
    1512             :         integer(IK)     , intent(out)   , optional      :: iostat
    1513             :         character(*, SK), intent(inout) , optional      :: iomsg
    1514             :         integer(IK)                                     :: nrecord
    1515             :     end function
    1516             : 
    1517             :     module function getCountRecordUnit(unit, isCountable, del, iostat, iomsg) result(nrecord)
    1518             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1519             :         !DEC$ ATTRIBUTES DLLEXPORT :: getCountRecordUnit
    1520             : #endif
    1521             :         use iso_fortran_env, only: iostat_end
    1522             :         integer(IK)     , intent(in)                    :: unit
    1523             :         procedure(logical(LK))          , optional      :: isCountable
    1524             :         logical(LK)     , intent(in)    , optional      :: del
    1525             :         integer(IK)     , intent(out)   , optional      :: iostat
    1526             :         character(*, SK), intent(inout) , optional      :: iomsg
    1527             :         integer(IK)                                     :: nrecord
    1528             :     end function
    1529             : 
    1530             :     end interface
    1531             : 
    1532             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1533             : 
    1534             :     !>  \brief
    1535             :     !>  Generate and return the entire contents of the input unconnected `file` or the (remaining) contents of an already-connected file associated with the input `unit`.<br>
    1536             :     !>
    1537             :     !>  \param[in]  unit    :   The input scalar `integer` of default kind \IK containing the `unit` of an already-connected (opened) file whose (partial) contents will be returned.<br>
    1538             :     !>                          (**optional**. It must be present <b>if and only if</b> the input argument `file` is missing.)
    1539             :     !>  \param[in]  file    :   The input scalar `character` of default kind \SK containing the path of an unconnected (unopened) file whose entire contents will be returned.<br>
    1540             :     !>                          (**optional**. It must be present <b>if and only if</b> the input argument `unit` is missing.)
    1541             :     !>  \param[in]  del     :   See the documentation for the corresponding argument of [setContentsFrom()](@ref pm_io::setContentsFrom).<br>
    1542             :     !>                          (**optional**. The default behavior is set by [setContentsFrom()](@ref pm_io::setContentsFrom))
    1543             :     !>
    1544             :     !>  \return
    1545             :     !>  `contents`          :   The output `allocatable` scalar `character` of default kind \SK that will contain the file contents.<br>
    1546             :     !>                          The `allocation` status of `contents` or its value remain undefined if an error occurs.<br>
    1547             :     !>
    1548             :     !>  \interface{getContentsFrom}
    1549             :     !>  \code{.F90}
    1550             :     !>
    1551             :     !>      use pm_io, only: getContentsFrom
    1552             :     !>      character(:, SK), allocatable :: contents
    1553             :     !>
    1554             :     !>      contents = getContentsFrom(unit, del = del)
    1555             :     !>      contents = getContentsFrom(file, del = del)
    1556             :     !>
    1557             :     !>  \endcode
    1558             :     !>
    1559             :     !>  \warning
    1560             :     !>  All warnings associated with [setContentsFrom](@ref pm_io::setContentsFrom) also apply to the procedures under this generic interface.<br>
    1561             :     !>
    1562             :     !>  \warning
    1563             :     !>  If the procedure fails to fetch the contents of the file, the program may stop by signaling the occurrence of an error.<br>
    1564             :     !>  Use [setContentsFrom](@ref pm_io::setContentsFrom) for graceful error handling.<br>
    1565             :     !>
    1566             :     !>  \impure
    1567             :     !>
    1568             :     !>  \see
    1569             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1570             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1571             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    1572             :     !>
    1573             :     !>  \example{getContentsFrom}
    1574             :     !>  \include{lineno} example/pm_io/getContentsFrom/main.F90
    1575             :     !>  \compilef{getContentsFrom}
    1576             :     !>  \output{getContentsFrom}
    1577             :     !>  \include{lineno} example/pm_io/getContentsFrom/main.out.F90
    1578             :     !>
    1579             :     !>  \test
    1580             :     !>  [test_pm_io](@ref test_pm_io)
    1581             :     !>
    1582             :     !>  \finmain{getContentsFrom}
    1583             :     !>
    1584             :     !>  \author
    1585             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1586             :     interface getContentsFrom
    1587             : 
    1588             :     module function getContentsFromUnit_SK(unit, del) result(contents)
    1589             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1590             :         !DEC$ ATTRIBUTES DLLEXPORT :: getContentsFromUnit_SK
    1591             : #endif
    1592             :         use pm_kind, only: SKC => SK
    1593             :         integer(IK)     , intent(in)                    :: unit
    1594             :         logical(LK)     , intent(in)    , optional      :: del
    1595             :         character(:,SKC), allocatable                   :: contents
    1596             :     end function
    1597             : 
    1598             :     module function getContentsFromFile_SK(file, del) result(contents)
    1599             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1600             :         !DEC$ ATTRIBUTES DLLEXPORT :: getContentsFromFile_SK
    1601             : #endif
    1602             :         use pm_kind, only: SKC => SK
    1603             :         character(*, SK), intent(in)                    :: file
    1604             :         logical(LK)     , intent(in)    , optional      :: del
    1605             :         character(:,SKC), allocatable                   :: contents
    1606             :     end function
    1607             : 
    1608             :     end interface
    1609             : 
    1610             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1611             : 
    1612             :     !>  \brief
    1613             :     !>  Return the entire contents of the input unconnected `file` or the (remaining) contents of an already-connected file associated with the input `unit`.<br>
    1614             :     !>
    1615             :     !>  \param[in]      unit            :   The input scalar `integer` of default kind \IK containing the `unit` of an already-connected (opened) file whose (partial) contents will be returned.<br>
    1616             :     !>                                      (**optional**. It must be present <b>if and only if</b> the input argument `file` is missing.)
    1617             :     !>  \param[in]      file            :   The input scalar `character` of default kind \SK containing the path of an unconnected (unopened) file whose entire contents will be returned.<br>
    1618             :     !>                                      (**optional**. It must be present <b>if and only if</b> the input argument `unit` is missing.)
    1619             :     !>  \param[out]     contents        :   The output `allocatable` scalar `character` of default kind \SK that will contain the file contents.<br>
    1620             :     !>                                      The `allocation` status of `contents` or its value remain undefined if an error occurs.<br>
    1621             :     !>                                      **If `iostat` is present, always check the value of `iostat` before using `contents`.**
    1622             :     !>  \param[in]      del             :   The input scalar `logical` of default kind \LK.
    1623             :     !>                                      <ol>
    1624             :     !>                                          <li>    If `.true.`, the file will be deleted upon return. This is guaranteed only **if no runtime error occurs**.
    1625             :     !>                                          <li>    If `.false.`, the file will only be closed (without deletion) upon return.
    1626             :     !>                                      </ol>
    1627             :     !>                                      (**optional**, default = `.false.`)
    1628             :     !>  \param[out]     iostat          :   The output scalar `integer` of default kind \IK.<br>
    1629             :     !>                                      <ol>
    1630             :     !>                                          <li>    If present and no error occurs, it is set to `0` on output.
    1631             :     !>                                          <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.
    1632             :     !>                                          <li>    If missing and an error occurs, then the program halts by calling `error stop` followed by the relevant error message.
    1633             :     !>                                      </ol>
    1634             :     !>                                      (**optional**. It must be present <b>if and only if</b> the output argument `iomsg` is also present.)
    1635             :     !>  \param[inout]   iomsg           :   The input/output scalar `character` of default kind \SK of arbitrary length type parameter, containing the error message.<br>
    1636             :     !>                                      A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages in full.<br>
    1637             :     !>                                      (**optional**. It must be present <b>if and only if</b> the output argument `iostat` is also present.)
    1638             :     !>
    1639             :     !>  \interface{setContentsFrom}
    1640             :     !>  \code{.F90}
    1641             :     !>
    1642             :     !>      use pm_io, only: setContentsFrom
    1643             :     !>      character(:, SK), allocatable :: contents
    1644             :     !>
    1645             :     !>      call setContentsFrom(unit, contents, del = del)
    1646             :     !>      call setContentsFrom(file, contents, del = del)
    1647             :     !>      call setContentsFrom(unit, contents, iostat, iomsg, del = del)
    1648             :     !>      call setContentsFrom(file, contents, iostat, iomsg, del = del)
    1649             :     !>
    1650             :     !>  \endcode
    1651             :     !>
    1652             :     !>  \warning
    1653             :     !>  The condition [isOpen(unit)](@ref pm_io::isOpen) must hold for the corresponding input arguments.<br>
    1654             :     !>  The condition [.not. isOpen(file)](@ref pm_io::isOpen) must hold for the corresponding input arguments.<br>
    1655             :     !>  The condition `0 < index(getAction(unit), "READ")` must hold for the corresponding input arguments.<br>
    1656             :     !>  \vericons
    1657             :     !>
    1658             :     !>  \impure
    1659             :     !>
    1660             :     !>  \see
    1661             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1662             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1663             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    1664             :     !>
    1665             :     !>  \example{setContentsFrom}
    1666             :     !>  \include{lineno} example/pm_io/setContentsFrom/main.F90
    1667             :     !>  \compilef{setContentsFrom}
    1668             :     !>  \output{setContentsFrom}
    1669             :     !>  \include{lineno} example/pm_io/setContentsFrom/main.out.F90
    1670             :     !>
    1671             :     !>  \test
    1672             :     !>  [test_pm_io](@ref test_pm_io)
    1673             :     !>
    1674             :     !>  \finmain{setContentsFrom}
    1675             :     !>
    1676             :     !>  \author
    1677             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1678             :     interface setContentsFrom
    1679             : 
    1680             :     module subroutine setContentsFromUnitCDD_SK(unit, contents, del)
    1681             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1682             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsFromUnitCDD_SK
    1683             : #endif
    1684             :         use pm_kind, only: SKC => SK
    1685             :         integer(IK)     , intent(in)                    :: unit
    1686             :         character(:,SKC), intent(out)   , allocatable   :: contents
    1687             :         logical(LK)     , intent(in)    , optional      :: del
    1688             :     end subroutine
    1689             : 
    1690             :     module subroutine setContentsFromUnitCII_SK(unit, contents, iostat, iomsg, del)
    1691             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1692             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsFromUnitCII_SK
    1693             : #endif
    1694             :         use pm_kind, only: SKC => SK
    1695             :         integer(IK)     , intent(in)                    :: unit
    1696             :         character(:,SKC), intent(out)   , allocatable   :: contents
    1697             :         integer(IK)     , intent(out)                   :: iostat
    1698             :         character(*, SK), intent(inout)                 :: iomsg
    1699             :         logical(LK)     , intent(in)    , optional      :: del
    1700             :     end subroutine
    1701             : 
    1702             :     module subroutine setContentsFromFileCDD_SK(file, contents, del)
    1703             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1704             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsFromFileCDD_SK
    1705             : #endif
    1706             :         use pm_kind, only: SKC => SK
    1707             :         character(*, SK), intent(in)                    :: file
    1708             :         character(:,SKC), intent(out)   , allocatable   :: contents
    1709             :         logical(LK)     , intent(in)    , optional      :: del
    1710             :     end subroutine
    1711             : 
    1712             :     module subroutine setContentsFromFileCII_SK(file, contents, iostat, iomsg, del)
    1713             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1714             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsFromFileCII_SK
    1715             : #endif
    1716             :         use pm_kind, only: SKC => SK
    1717             :         character(*, SK), intent(in)                    :: file
    1718             :         character(:,SKC), intent(out)   , allocatable   :: contents
    1719             :         integer(IK)     , intent(out)                   :: iostat
    1720             :         character(*, SK), intent(inout)                 :: iomsg
    1721             :         logical(LK)     , intent(in)    , optional      :: del
    1722             :     end subroutine
    1723             : 
    1724             :     end interface
    1725             : 
    1726             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1727             : 
    1728             :     !>  \brief
    1729             :     !>  Write the input string `contents` to the input unconnected `file`.<br>
    1730             :     !>
    1731             :     !>  \details
    1732             :     !>  This generic interface in its current form is a simple wrapper around
    1733             :     !>  the `open()` and `write()` intrinsic statements to simplify writing to output files.<br>
    1734             :     !>
    1735             :     !>  \param[in]      file            :   The input scalar `character` of default kind \SK containing the path of an unconnected (unopened) file.<br>
    1736             :     !>  \param[in]      contents        :   The input scalar `character` of default kind \SK that containing the contents to write to the target external file.<br>
    1737             :     !>  \param[out]     iostat          :   The output scalar `integer` of default kind \IK.<br>
    1738             :     !>                                      <ol>
    1739             :     !>                                          <li>    If present and no error occurs, it is set to `0` on output.
    1740             :     !>                                          <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.
    1741             :     !>                                          <li>    If missing and an error occurs, then the program halts by calling `error stop` followed by the relevant error message.
    1742             :     !>                                      </ol>
    1743             :     !>                                      (**optional**. It must be present <b>if and only if</b> the output argument `iomsg` is also present.)
    1744             :     !>  \param[inout]   iomsg           :   The input/output scalar `character` of default kind \SK of arbitrary length type parameter, containing the error message.<br>
    1745             :     !>                                      A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages in full.<br>
    1746             :     !>                                      (**optional**. It must be present <b>if and only if</b> the output argument `iostat` is also present.)
    1747             :     !>
    1748             :     !>  \interface{setContentsTo}
    1749             :     !>  \code{.F90}
    1750             :     !>
    1751             :     !>      use pm_io, only: setContentsTo
    1752             :     !>      character(:, SK), allocatable :: contents
    1753             :     !>
    1754             :     !>      call setContentsTo(file, contents = del)
    1755             :     !>      call setContentsTo(file, contents, iostat, iomsg = del)
    1756             :     !>
    1757             :     !>  \endcode
    1758             :     !>
    1759             :     !>  \warning
    1760             :     !>  The condition [.not. isOpen(file)](@ref pm_io::isOpen) must hold for the corresponding input arguments.<br>
    1761             :     !>  \vericons
    1762             :     !>
    1763             :     !>  \impure
    1764             :     !>
    1765             :     !>  \see
    1766             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1767             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1768             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    1769             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    1770             :     !>  [getErrTableRead](@ref pm_io::getErrTableRead)<br>
    1771             :     !>  [getErrTableWrite](@ref pm_io::getErrTableWrite)<br>
    1772             :     !>
    1773             :     !>  \example{setContentsTo}
    1774             :     !>  \include{lineno} example/pm_io/setContentsTo/main.F90
    1775             :     !>  \compilef{setContentsTo}
    1776             :     !>  \output{setContentsTo}
    1777             :     !>  \include{lineno} example/pm_io/setContentsTo/main.out.F90
    1778             :     !>
    1779             :     !>  \test
    1780             :     !>  [test_pm_io](@ref test_pm_io)
    1781             :     !>
    1782             :     !>  \todo
    1783             :     !>  \pmed
    1784             :     !>  This generic interface must be expanded to input `unit` in place of an input `file`.<br>
    1785             :     !>  There are potential complexities associated with an input `unit` that need `inquire` statement such as `access`, `form`, etc.<br>
    1786             :     !>
    1787             :     !>  \finmain{setContentsTo}
    1788             :     !>
    1789             :     !>  \author
    1790             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1791             :     interface setContentsTo
    1792             : 
    1793             : !    module subroutine setContentsToUnitCDD_SK(unit, contents)
    1794             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1795             : !        !DEC$ ATTRIBUTES DLLEXPORT :: setContentsToUnitCDD_SK
    1796             : !#endif
    1797             : !        use pm_kind, only: SKC => SK
    1798             : !        integer(IK)     , intent(in)                    :: unit
    1799             : !        character(*,SKC), intent(in)                    :: contents
    1800             : !    end subroutine
    1801             : !
    1802             : !    module subroutine setContentsToUnitCII_SK(unit, contents, iostat, iomsg)
    1803             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1804             : !        !DEC$ ATTRIBUTES DLLEXPORT :: setContentsToUnitCII_SK
    1805             : !#endif
    1806             : !        use pm_kind, only: SKC => SK
    1807             : !        integer(IK)     , intent(in)                    :: unit
    1808             : !        character(*,SKC), intent(in)                    :: contents
    1809             : !        integer(IK)     , intent(out)                   :: iostat
    1810             : !        character(*, SK), intent(inout)                 :: iomsg
    1811             : !    end subroutine
    1812             : 
    1813             :     module subroutine setContentsToFileCDD_SK(file, contents)
    1814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1815             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsToFileCDD_SK
    1816             : #endif
    1817             :         use pm_kind, only: SKC => SK
    1818             :         character(*, SK), intent(in)                    :: file
    1819             :         character(*,SKC), intent(in)                    :: contents
    1820             :     end subroutine
    1821             : 
    1822             :     module subroutine setContentsToFileCII_SK(file, contents, iostat, iomsg)
    1823             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1824             :         !DEC$ ATTRIBUTES DLLEXPORT :: setContentsToFileCII_SK
    1825             : #endif
    1826             :         use pm_kind, only: SKC => SK
    1827             :         character(*, SK), intent(in)                    :: file
    1828             :         character(*,SKC), intent(in)                    :: contents
    1829             :         integer(IK)     , intent(out)                   :: iostat
    1830             :         character(*, SK), intent(inout)                 :: iomsg
    1831             :     end subroutine
    1832             : 
    1833             :     end interface
    1834             : 
    1835             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1836             : 
    1837             :     !>  \brief
    1838             :     !>  Open the given input file, fetch the entire contents return it as a single `allocatable` string, and close the file.
    1839             :     !>
    1840             :     !>  \param[out]     unit    :   The input scalar `integer` of default kind \IK containing the file unit number to close.<br>
    1841             :     !>  \param[in]      del     :   The input scalar `logical` of default kind \LK.<br>
    1842             :     !>                              <ol>
    1843             :     !>                                  <li>    If `.true.`, the file will be deleted upon return.<br>
    1844             :     !>                                  <li>    If `.false.`, the file will only be closed (without deletion) upon return.<br>
    1845             :     !>                              </ol>
    1846             :     !>                              (**optional**, default = `.false.`)
    1847             :     !>  \param[out]     iostat  :   The output scalar `integer` of default kind \IK.<br>
    1848             :     !>                              <ol>
    1849             :     !>                                  <li>    If present and no error occurs, it is set to `0` on output.
    1850             :     !>                                  <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.
    1851             :     !>                                  <li>    If missing and an error occurs, then the program halts by calling `error stop` followed by the relevant error message.
    1852             :     !>                              </ol>
    1853             :     !>                              (**optional**.)
    1854             :     !>  \param[inout]   iomsg   :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    1855             :     !>                              A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    1856             :     !>                              (**optional**. Its presence is relevant only if the `iostat` output argument is also present.)
    1857             :     !>
    1858             :     !>  \interface{setFileClosed}
    1859             :     !>  \code{.F90}
    1860             :     !>
    1861             :     !>      use pm_io, only: setFileClosed
    1862             :     !>
    1863             :     !>      call setFileClosed(unit, del = del, iostat = iostat, iomsg = iomsg)
    1864             :     !>
    1865             :     !>  \endcode
    1866             :     !>
    1867             :     !>  \note
    1868             :     !>  As per the Fortran standard rules,
    1869             :     !>      -#  if the specified file `unit` a non-existing or unconnected unit, then the `close()` statement acts as a *do nothing* statement (no error occurs).
    1870             :     !>      -#  If the file connected to the `unit` has `scratch` status, then it will be automartically deleted regardless of the specified value for `del`.
    1871             :     !>
    1872             :     !>  \see
    1873             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1874             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1875             :     !>
    1876             :     !>  \example{setFileClosed}
    1877             :     !>  \include{lineno} example/pm_io/setFileClosed/main.F90
    1878             :     !>  \compilef{setFileClosed}
    1879             :     !>  \output{setFileClosed}
    1880             :     !>  \include{lineno} example/pm_io/setFileClosed/main.out.F90
    1881             :     !>
    1882             :     !>  \test
    1883             :     !>  [test_pm_io](@ref test_pm_io)
    1884             :     !>
    1885             :     !>  \finmain{setFileClosed}
    1886             :     !>
    1887             :     !>  \author
    1888             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1889             :     interface setFileClosed
    1890             :     module subroutine setFileClosed_IK(unit, del, iostat, iomsg)
    1891             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1892             :         !DEC$ ATTRIBUTES DLLEXPORT :: setFileClosed_IK
    1893             : #endif
    1894             :         integer(IK)     , intent(in)                :: unit
    1895             :         logical(LK)     , intent(in)    , optional  :: del
    1896             :         integer(IK)     , intent(out)   , optional  :: iostat
    1897             :         character(*, SK), intent(inout) , optional  :: iomsg
    1898             :     end subroutine
    1899             :     end interface
    1900             : 
    1901             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1902             : 
    1903             :     !>  \brief
    1904             :     !>  Generate and return a full record (line) of arbitrary length as a string from the current
    1905             :     !>  position of the **record-oriented** and **formatted** file connected to the specified input `unit`.
    1906             :     !>
    1907             :     !>  \param[in]      unit        :   The input scalar `integer` of default kind \IK representing the unit of the **connected file** to read the line from.<br>
    1908             :     !>  \param[out]     iostat      :   The output scalar `integer` of default kind \IK.<br>
    1909             :     !>                                  <ol>
    1910             :     !>                                      <li>    If present and no error occurs, it is set to `0` on output.
    1911             :     !>                                      <li>    If present and an end-of-file condition occurs, it is set to `iostat_end` from Fortran intrinsic module `iso_fortran_env`.<br>
    1912             :     !>                                      <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.<br>
    1913             :     !>                                      <li>    If missing and an error occurs (including end-of-file condition), then the program halts by calling `error stop` followed by the relevant error message.<br>
    1914             :     !>                                  </ol>
    1915             :     !>                                  (**optional**.)
    1916             :     !>  \param[inout]   iomsg       :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    1917             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    1918             :     !>                                  (**optional**. Its presence is relevant only if `iostat` is also present.)
    1919             :     !>  \param[in]      linefed     :   The input scalar `logical` of default kind \LK.<br>
    1920             :     !>                                  If `.true.`, then the output `record` will end with the new line character(s) as specified by the Fortran intrinsic `new_line("a")`.<br>
    1921             :     !>                                  If `.false.`, then the output `record` will **not** end with the new line character(s).<br>
    1922             :     !>                                  In either case, **only one record will be read** from the specified unit, but will or will
    1923             :     !>                                  not end with a new line character if `linefed` is `.true.` or `.false.` respectively.<br>
    1924             :     !>                                  This behavior is extremely useful for,
    1925             :     !>                                  <ol>
    1926             :     !>                                      <li>    reading records from a CSV file potentially containing new line characters in its fields.<br>
    1927             :     !>                                      <li>    consecutively reading a series of lines of a `unit` into a single string by repeated calls to
    1928             :     !>                                              this generic interface while preserving the linefeed characters as record separators.<br>
    1929             :     !>                                  </ol>
    1930             :     !>                                  (**optional**, default = `.false.`)
    1931             :     !>
    1932             :     !>  \return
    1933             :     !>  `record`                    :   The output `allocatable` scalar `character` of default kind \SK that will contain the requested line in full.<br>
    1934             :     !>                                  <b>If you suspect an end-of-file condition may occur, always specify and check the output value of `iostat` before using the contents of `record`</b>.<br>
    1935             :     !>
    1936             :     !>  \interface{getRecordFrom}
    1937             :     !>  \code{.F90}
    1938             :     !>
    1939             :     !>      use pm_io, only: getRecordFrom
    1940             :     !>      character(:, SK), allocatable :: record
    1941             :     !>
    1942             :     !>      record = getRecordFrom(unit, iostat = iostat, iomsg = iomsg, linefed = linefed)
    1943             :     !>
    1944             :     !>  \endcode
    1945             :     !>
    1946             :     !>  \warning
    1947             :     !>  All warnings associated with [setRecordFrom](@ref pm_io::setRecordFrom) also apply to the procedures under this generic interface.<br>
    1948             :     !>
    1949             :     !>  \impure
    1950             :     !>
    1951             :     !>  \see
    1952             :     !>  [setRecordFrom](@ref pm_io::setRecordFrom)<br>
    1953             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    1954             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    1955             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    1956             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    1957             :     !>
    1958             :     !>  \example{getRecordFrom}
    1959             :     !>  \include{lineno} example/pm_io/getRecordFrom/main.F90
    1960             :     !>  \compilef{getRecordFrom}
    1961             :     !>  \output{getRecordFrom}
    1962             :     !>  \include{lineno} example/pm_io/getRecordFrom/main.out.F90
    1963             :     !>
    1964             :     !>  \test
    1965             :     !>  [test_pm_io](@ref test_pm_io)
    1966             :     !>
    1967             :     !>  \finmain{getRecordFrom}
    1968             :     !>
    1969             :     !>  \author
    1970             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1971             :     interface getRecordFrom
    1972             : 
    1973             :     module function getRecordFromUnit_SK(unit, iostat, iomsg, linefed) result(record)
    1974             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1975             :         !DEC$ ATTRIBUTES DLLEXPORT :: getRecordFromUnit_SK
    1976             : #endif
    1977             :         use pm_kind, only: SKC => SK
    1978             :         integer(IK)     , intent(in)                    :: unit
    1979             :         integer(IK)     , intent(out)   , optional      :: iostat
    1980             :         character(*, SK), intent(inout) , optional      :: iomsg
    1981             :         logical(LK)     , intent(in)    , optional      :: linefed
    1982             :         character(:,SKC), allocatable                   :: record
    1983             :     end function
    1984             : 
    1985             :     end interface
    1986             : 
    1987             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1988             : 
    1989             :     !>  \brief
    1990             :     !>  Read a full record (line) of arbitrary length as a string from the current position of
    1991             :     !>  the **record-oriented** and **formatted** file connected to the specified input `unit`.
    1992             :     !>
    1993             :     !>  \param[in]          unit    :   The input scalar `integer` of default kind \IK representing the unit of the **connected file** to read the line from.<br>
    1994             :     !>  \param[inout]       record  :   The input/output `allocatable` scalar `character` of default kind \SK that will contain the requested line in full.<br>
    1995             :     !>                                  On input,<br>
    1996             :     !>                                  <ol>
    1997             :     !>                                      <li>    The argument `record` can be preallocated to the best-guess length for the record to be read.<br>
    1998             :     !>                                              Preallocating `record` to the right size can improve the runtime performance of the procedure.<br>
    1999             :     !>                                              <ol>
    2000             :     !>                                                  <li>    If the optional input argument `lb` is specified, any old contents `record(1 : lb - 1)` will remain intact on return.<br>
    2001             :     !>                                              </ol>
    2002             :     !>                                      <li>    The argument `record` can be unallocated, in which case, it will be allocated to the proper size within the algorithm.<br>
    2003             :     !>                                  </ol>
    2004             :     !>                                  On output,<br>
    2005             :     !>                                  <ol>
    2006             :     !>                                      <li>    The argument `record` will potentially be [resized](@ref pm_arrayResize::setResized) to contain the full record from the specified unit.<br>
    2007             :     !>                                              <ol>
    2008             :     !>                                                  <li>    If the optional output argument `ub` is specified, then the output `record` will **not** be trimmed (i.e., reallocated) on return.<br>
    2009             :     !>                                                          Specifying `ub` will eliminate one redundant final reallocation and copy action, which can in return boost the runtime performance.<br>
    2010             :     !>                                              </ol>
    2011             :     !>                                  </ol>
    2012             :     !>  \param[out]         iostat  :   The output scalar `integer` of default kind \IK.<br>
    2013             :     !>                                  <ol>
    2014             :     !>                                      <li>    If present and no error occurs, it is set to `0` on output.
    2015             :     !>                                      <li>    If present and an end-of-file condition occurs, it is set to `iostat_end` from Fortran intrinsic module `iso_fortran_env`.<br>
    2016             :     !>                                      <li>    If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.<br>
    2017             :     !>                                      <li>    If missing and an error occurs (including end-of-file condition), then the program halts by calling `error stop` followed by the relevant error message.<br>
    2018             :     !>                                  </ol>
    2019             :     !>                                  (**optional**. It must be present <b>if and only if</b> the output argument `iomsg` is also present.)
    2020             :     !>  \param[inout]       iomsg   :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    2021             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    2022             :     !>                                  (**optional**. It must be present <b>if and only if</b> the output argument `iostat` is also present.)
    2023             :     !>  \param[in]          lb      :   The **input** scalar `integer` of default kind \IK,
    2024             :     !>                                  containing the lower starting bound (index) of `record` from which the writing must begin.<br>
    2025             :     !>                                  Specifying this argument will keep the segment `record(1 : lb - 1)` intact on return.<br>
    2026             :     !>                                  This behavior is extremely useful for consecutively reading a series of lines of a `unit`.<br>
    2027             :     !>                                  (**optional**, default = `1`)
    2028             :     !>  \param[out]         ub      :   The **output** scalar `integer` of default kind \IK,
    2029             :     !>                                  containing the upper bound (index) of `record` up to which the record from the specified `unit` was read.<br>
    2030             :     !>                                  Specifying this argument leads to faster runtime performance since it prevents an extra final reallocation and string copy.<br>
    2031             :     !>                                  By definition, if the line in the file is empty, `ub` is set to `0`, unless `linefed` is set to `.true.`, in which case `ub` is the length of the linefeed character(s).<br>
    2032             :     !>                                  (**optional**. If missing, `record` will be reallocated to size `record(1 : ub)`, otherwise, record will not be trimmed.)
    2033             :     !>  \param[in]          linefed :   The input scalar `logical` of default kind \LK.<br>
    2034             :     !>                                  If `.true.`, then the output `record` will end with the new line character(s) as specified by the Fortran intrinsic `new_line("a")`.<br>
    2035             :     !>                                  If `.false.`, then the output `record` will **not** end with the new line character(s).<br>
    2036             :     !>                                  In either case, **only one record will be read** from the specified unit, but will or will
    2037             :     !>                                  not end with a new line character if `linefed` is `.true.` or `.false.` respectively.<br>
    2038             :     !>                                  This behavior is extremely useful for,
    2039             :     !>                                  <ol>
    2040             :     !>                                      <li>    reading records from a CSV file potentially containing new line characters in its fields.<br>
    2041             :     !>                                      <li>    consecutively reading a series of lines of a `unit` into a single string by repeated calls to
    2042             :     !>                                              this generic interface while preserving the linefeed characters as record separators.<br>
    2043             :     !>                                  </ol>
    2044             :     !>                                  (**optional**, default = `.false.`)
    2045             :     !>
    2046             :     !>  \interface{setRecordFrom}
    2047             :     !>  \code{.F90}
    2048             :     !>
    2049             :     !>      use pm_io, only: setRecordFrom
    2050             :     !>
    2051             :     !>      call setRecordFrom(unit, record, lb = lb, ub = ub, linefed = linefed)
    2052             :     !>      call setRecordFrom(unit, record, iostat, iomsg, lb = lb, ub = ub, linefed = linefed)
    2053             :     !>
    2054             :     !>  \endcode
    2055             :     !>
    2056             :     !>  \warning
    2057             :     !>  The condition `0 < lb` must hold for the corresponding input arguments.
    2058             :     !>  \vericon
    2059             :     !>
    2060             :     !>  \remark
    2061             :     !>  Allowing the input `record` to be preallocated with `intent(inout)` particularly
    2062             :     !>  helps with minimizing the number of reallocations of `record` within the procedure.<br>
    2063             :     !>
    2064             :     !>  \remark
    2065             :     !>  Specifying the output argument `ub` particularly helps with the runtime performance
    2066             :     !>  by removing a redundant reallocation and data copy.<br>
    2067             :     !>
    2068             :     !>  \note
    2069             :     !>  This generic interface can be readily used to read a certain number or all of the lines of a specified `unit`.<br>
    2070             :     !>  For example, the following code snippet,<br>
    2071             :     !>  \code{.F90}
    2072             :     !>
    2073             :     !>      use iso_fortran_env, only: iostat_end
    2074             :     !>      open(unit, file, status = "old")
    2075             :     !>      lb = 1_IK
    2076             :     !>      do
    2077             :     !>          call setRecordFrom(unit, record, iostat, iomsg, lb, ub, linefed = .true._LK)
    2078             :     !>          if (iostat /= iostat_end) exit
    2079             :     !>          if (iostat /= 0_IK) error stop trim(iomsg)
    2080             :     !>          lb = ub + 1_IK
    2081             :     !>      end do
    2082             :     !>      close(unit)
    2083             :     !>      record = record(1:ub)
    2084             :     !>
    2085             :     !>  \endcode
    2086             :     !>  will store the entire contents of the specified `file` associated with `unit` in the `allocatable` string `record`,
    2087             :     !>  within which lines are separated by `new_line("a")` instances.<br>
    2088             :     !>
    2089             :     !>  \note
    2090             :     !>  Note that setting `linefed = .true.` leads to each record being padded with a newline character, including the last line in the file.<br>
    2091             :     !>  As such, reading an entire file using the above code snippet will lead to a final output that an has extra final newline character compared
    2092             :     !>  to the output of [getContentsFrom()](@ref pm_io::getContentsFrom) or [setContentsFrom()](@ref pm_io::setContentsFrom).<br>
    2093             :     !>
    2094             :     !>  \see
    2095             :     !>  [getRecordFrom](@ref pm_io::getRecordFrom)<br>
    2096             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    2097             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    2098             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    2099             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    2100             :     !>
    2101             :     !>  \example{setRecordFrom}
    2102             :     !>  \include{lineno} example/pm_io/setRecordFrom/main.F90
    2103             :     !>  \compilef{setRecordFrom}
    2104             :     !>  \output{setRecordFrom}
    2105             :     !>  \include{lineno} example/pm_io/setRecordFrom/main.out.F90
    2106             :     !>
    2107             :     !>  \test
    2108             :     !>  [test_pm_io](@ref test_pm_io)
    2109             :     !>
    2110             :     !>  \finmain{setRecordFrom}
    2111             :     !>
    2112             :     !>  \author
    2113             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    2114             :     interface setRecordFrom
    2115             : 
    2116             :     module subroutine setRecordFromUR_SK(unit, record, lb, ub, linefed)
    2117             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2118             :         !DEC$ ATTRIBUTES DLLEXPORT :: setRecordFromUR_SK
    2119             : #endif
    2120             :         use pm_kind, only: SKC => SK
    2121             :         integer(IK)     , intent(in)                    :: unit
    2122             :         character(:,SKC), intent(inout) , allocatable   :: record
    2123             :         integer(IK)     , intent(in)    , optional      :: lb
    2124             :         integer(IK)     , intent(out)   , optional      :: ub
    2125             :         logical(LK)     , intent(in)    , optional      :: linefed
    2126             :     end subroutine
    2127             : 
    2128             :     module subroutine setRecordFromURII_SK(unit, record, iostat, iomsg, lb, ub, linefed)
    2129             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2130             :         !DEC$ ATTRIBUTES DLLEXPORT :: setRecordFromURII_SK
    2131             : #endif
    2132             :         use pm_kind, only: SKC => SK
    2133             :         integer(IK)     , intent(in)                    :: unit
    2134             :         character(:,SKC), intent(inout) , allocatable   :: record
    2135             :         integer(IK)     , intent(out)                   :: iostat
    2136             :         character(*, SK), intent(inout)                 :: iomsg
    2137             :         integer(IK)     , intent(in)    , optional      :: lb
    2138             :         integer(IK)     , intent(out)   , optional      :: ub
    2139             :         logical(LK)     , intent(in)    , optional      :: linefed
    2140             :     end subroutine
    2141             : 
    2142             :     end interface
    2143             : 
    2144             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2145             : 
    2146             :     !>  \brief
    2147             :     !>  Generate and return the number of records **left** (starting immediately after the last accessed record) in the **record-oriented** input file.
    2148             :     !>
    2149             :     !>  \details
    2150             :     !>  If any error occurs during the IO and the output `iostat` argument is missing, the program will halt by calling `error stop`.
    2151             :     !>
    2152             :     !>  \param[in]      unit        :   The input scalar `integer` of default kind \IK containing the unit of the connected file whose number of record **left** is to be returned.
    2153             :     !>  \param          isCountable :   The `external` user-specified function that takes one input **scalar** `character` of default kind \SK of arbitrary length type parameter,
    2154             :     !>                                  containing the most recent record that has been read from the input file.<br>
    2155             :     !>                                  It returns a scalar `logical` of default kind \LK that is `.true.` <b>if and only if</b> the input `record` should be included in counting.<br>
    2156             :     !>                                  The following illustrates the generic interface of `isCountable`,
    2157             :     !>                                  \code{.F90}
    2158             :     !>                                      function isCountable(record) result(countable)
    2159             :     !>                                          use pm_kind, only: LK, SK
    2160             :     !>                                          character(*, SK), intent(in)    :: record
    2161             :     !>                                          logical(LK)                     :: countable
    2162             :     !>                                      end function
    2163             :     !>                                  \endcode
    2164             :     !>                                  This user-defined countability check is extremely useful where certain records in the file ought to be
    2165             :     !>                                  excluded from counting or only records with specific patterns should be included (for example, excluding
    2166             :     !>                                  or including only records that are empty or begin with or end with or have specific patterns).<br>
    2167             :     !>                                  (**optional**. If missing, all records are included in counting).
    2168             :     !>  \param[in]      reset       :   The input scalar `logical` of default kind \LK.
    2169             :     !>                                  <ol>
    2170             :     !>                                      <li>    If `.true.`, the record position in the file will be reset to where it was upon entering the procedure.
    2171             :     !>                                      <li>    If `.false.`, the record position will be the end of the file.
    2172             :     !>                                  </ol>
    2173             :     !>                                  This option is useful for scenarios where a file has been partially read (e.g., fixed header),
    2174             :     !>                                  but the number of remaining file records is required to read the rest of the file.<br>
    2175             :     !>                                  This is done by calling the Fortran intrinsic `backspace` for `nrecord` number of times.<br>
    2176             :     !>                                  Note that the `backspace` statement is often very costly in computer resources.<br>
    2177             :     !>                                  Therefore this use of this optional argument should be minimized in performance critical routines.<br>
    2178             :     !>                                  (**optional**, default = `.false.`)
    2179             :     !>  \param[out]     iostat      :   The **optional** output scalar `integer` of default kind \IK.<br>
    2180             :     !>                                      -#  If present and no error occurs, it is set to `0` on output.
    2181             :     !>                                      -#  If present and an error occurs (e.g., if the input argument values are wrong or inconsistent), it is set to a positive non-zero value.
    2182             :     !>                                      -#  If missing and an error occurs, then the program halts by calling `error stop` followed by the relevant error message.
    2183             :     !>  \param[inout]   iomsg       :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    2184             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    2185             :     !>                                  (**optional**. Its presence is relevant only if the `iostat` output argument is also present.)
    2186             :     !>
    2187             :     !>  \return
    2188             :     !>  `nrecord`                   :   The output scalar `integer` of default kind \IK, representing the number of records in the input file.
    2189             :     !>
    2190             :     !>  \interface{getCountRecordLeft}
    2191             :     !>  \code{.F90}
    2192             :     !>
    2193             :     !>      use pm_io, only: getCountRecordLeft
    2194             :     !>
    2195             :     !>      nrecord = getCountRecordLeft(file, isCountable = isCountable, reset = reset, iostat = iostat, iomsg = iomsg)
    2196             :     !>
    2197             :     !>  \endcode
    2198             :     !>
    2199             :     !>  \warning
    2200             :     !>  The input `unit` must be connected to a file prior to calling this procedure.<br>
    2201             :     !>  Additionally, this procedure will **not** close the file upon return.<br>
    2202             :     !>
    2203             :     !>  \see
    2204             :     !>  [getCountRecord](@ref pm_io::getCountRecord)<br>
    2205             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    2206             :     !>  [setRecordFrom](@ref pm_io::setRecordFrom)<br>
    2207             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    2208             :     !>
    2209             :     !>  \example{getCountRecordLeft}
    2210             :     !>  \include{lineno} example/pm_io/getCountRecordLeft/main.F90
    2211             :     !>  \compilef{getCountRecordLeft}
    2212             :     !>  \output{getCountRecordLeft}
    2213             :     !>  \include{lineno} example/pm_io/getCountRecordLeft/main.out.F90
    2214             :     !>
    2215             :     !>  \test
    2216             :     !>  [test_pm_io](@ref test_pm_io)
    2217             :     !>
    2218             :     !>  \todo
    2219             :     !>  This procedure can be converted to a generic interface to add the optional `iseq()`
    2220             :     !>  external comparison procedures for custom exclusion or inclusion of lines in the count.
    2221             :     !>
    2222             :     !>  \finmain{getCountRecordLeft}
    2223             :     !>
    2224             :     !>  \author
    2225             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    2226             :     interface getCountRecordLeft
    2227             :     module function getCountRecordLeft_IK(unit, isCountable, reset, iostat, iomsg) result(nrecord)
    2228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2229             :         !DEC$ ATTRIBUTES DLLEXPORT :: getCountRecordLeft_IK
    2230             : #endif
    2231             :         integer(IK)             , intent(in)                :: unit
    2232             :         procedure(logical(LK))                  , optional  :: isCountable
    2233             :         logical(LK)             , intent(in)    , optional  :: reset
    2234             :         integer(IK)             , intent(out)   , optional  :: iostat
    2235             :         character(*, SK)        , intent(inout) , optional  :: iomsg
    2236             :         integer(IK)                                         :: nrecord
    2237             :     end function
    2238             :     end interface
    2239             : 
    2240             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2241             : 
    2242             :     !>  \brief
    2243             :     !>  Generate and return the `iostat` code resulting from reading the contents of the specified `file` or `unit` into an output `table`.<br>
    2244             :     !>
    2245             :     !>  \param[in]      file        :   The input scalar `character` of default kind \SK representing the path to the external file to which the `table` must be read.<br>
    2246             :     !>                                  If the specified `file` does not exist, it will be created.<br>
    2247             :     !>                                  If it exists or is already connected, it will repositioned before the beginning of its first record.<br>
    2248             :     !>                                  (**optional**. It can be present **only if** the input argument `unit` is missing.)
    2249             :     !>  \param[in]      unit        :   The input scalar `integer` of default kind \IK representing the preconnected (opened) file unit to which the table must be read.<br>
    2250             :     !>                                  The writing will begin from the current file position plus the input `roff`.<br>
    2251             :     !>                                  (**optional**. It can be present **only if** the input argument `file` is missing.)
    2252             :     !>  \param[out]     table       :   The output `allocatable` array of shape `(:)` or `(:,:)` of either <br>
    2253             :     !>                                  <ol>
    2254             :     !>                                      <li>    type `character` of kind \SKALL of predefined length type parameter (not deferred-length), or <br>
    2255             :     !>                                      <li>    type `integer` of kind \IKALL, or <br>
    2256             :     !>                                      <li>    type `logical` of kind \LKALL, or <br>
    2257             :     !>                                      <li>    type `complex` of kind \CKALL, or <br>
    2258             :     !>                                      <li>    type `real` of kind \RKALL, <br>
    2259             :     !>                                  </ol>
    2260             :     !>                                  representing the data `table` to be read from the specified input.<br>
    2261             :     !>                                  By default a `table` of rank `1` is considered to be a single column unless
    2262             :     !>                                  the input optional argument `operation` is set to [trans](@ref pm_matrixTrans::trans) in which case `table` is considered as a row of fields.<br>
    2263             :     !>                                  See the tips in the note below for reading tables of `complex` values written in the Fortran list-directed format.<br>
    2264             :     !>                                  By default, if the input argument `operation` is missing, each column of `table` corresponds to each column of data in the file.<br>
    2265             :     !>  \param[in]      operation   :   The input scalar constant that can be:<br>
    2266             :     !>                                  <ol>
    2267             :     !>                                      <li>    the scalar constant [trans](@ref pm_matrixTrans::trans) or a scalar object of type [trans_type](@ref pm_matrixTrans::trans_type),
    2268             :     !>                                              implying that the input `table` must be transposed before being written to the output file.<br>
    2269             :     !>                                              This option is particularly useful for inputting rows of `table` in Fortran column-major
    2270             :     !>                                              storage mode, that is, rows of table occupy the first dimension of the matrix table
    2271             :     !>                                              such that rows of data in the output file are stored contiguously in memory.<br>
    2272             :     !>                                              Use this option if you intend to work with rows more so than with individual columns.<br>
    2273             :     !>                                  </ol>
    2274             :     !>                                  (**optional**, default = [nothing](@ref pm_array::nothing), implying that the `table` must be output as is.)
    2275             :     !>  \param[out]     header      :   The output `allocatable` scalar `character` of default kind \SK of arbitrary length type parameter containing the table header.<br>
    2276             :     !>                                  The output table `header` can be subsequently split into fields by passing `header` and `sep` to the generic interface [setSplit](@ref pm_arraySplit).<br>
    2277             :     !>                                  If the table in file contains a header, but `header` argument is missing, then `roff` must be set to at least `1` to gracefully skip the header line.<br>
    2278             :     !>                                  (**optional**, If missing, no header will be read from the specified input.<br>
    2279             :     !>                                  The generic interface [getStr()](@ref pm_val2str::getStr) can be used to readily join a list of header fields with the appropriate separator.)
    2280             :     !>  \param[in]      sep         :   The input scalar `character` of default kind \SK of arbitrary length type parameter
    2281             :     !>                                  containing the separator of the fields of each of row of the `table` in the input file.<br>
    2282             :     !>                                  An empty input `sep` implies that there is only a single column in the file.<br>
    2283             :     !>                                  (**optional**, default = `,` or ` ` (blank).)
    2284             :     !>  \param[in]      roff        :   The input scalar `integer` of default kind \IK representing the row offset, that is, the number of rows
    2285             :     !>                                  in the external `file` or `unit` to skip before beginning to read the output variables `header` and `table`.<br>
    2286             :     !>                                  (**optional**. default = `0`)
    2287             :     !>  \param[inout]   iomsg       :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    2288             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    2289             :     !>                                  (**optional**. If missing, no information other than the output error code `err` will be returned.)
    2290             :     !>
    2291             :     !>  \return
    2292             :     !>  `err`                       :   The output scalar `integer` of default kind \IK containing the `iostat`
    2293             :     !>                                  error code returned by the Fortran intrinsic `write()` statement.<br>
    2294             :     !>                                  On return, `err` is set to `0` **if and only if** the `table` is successfully read from the input.<br>
    2295             :     !>                                  See the Fortran standard and specific compiler documentations for the possible meanings of the output `err`.<br>
    2296             :     !>
    2297             :     !>  \interface{getErrTableRead}
    2298             :     !>  \code{.F90}
    2299             :     !>
    2300             :     !>      use pm_io, only: getErrTableRead
    2301             :     !>      use pm_kind, only: IK
    2302             :     !>      integer(IK) :: err
    2303             :     !>
    2304             :     !>      err = getErrTableRead(unit, table, header = header, sep = sep, roff = roff, iomsg = iomsg)
    2305             :     !>      err = getErrTableRead(file, table, header = header, sep = sep, roff = roff, iomsg = iomsg)
    2306             :     !>
    2307             :     !>      err = getErrTableRead(unit, table, operation, header = header, sep = sep, roff = roff, iomsg = iomsg)
    2308             :     !>      err = getErrTableRead(file, table, operation, header = header, sep = sep, roff = roff, iomsg = iomsg)
    2309             :     !>      !
    2310             :     !>  \endcode
    2311             :     !>
    2312             :     !>  \impure
    2313             :     !>
    2314             :     !>  \note
    2315             :     !>  For `table` of type `complex`, it is best to either<br>
    2316             :     !>  <ol>
    2317             :     !>      <li>    have the `complex` table fields in the file in Fortran list-directed format `(.,.)` and drop
    2318             :     !>              the `sep` input argument to activate the default intrinsic [Fortran list-directed parser, or<br>
    2319             :     !>      <li>    have the `complex` table fields in the file written as if `real` and `imaginary` components are
    2320             :     !>              independent table fields and specify the `sep` argument to activate the customized parser to read the table.<br>
    2321             :     !>  </ol>
    2322             :     !>  Otherwise,<br>
    2323             :     !>  <ol>
    2324             :     !>      <li>    if the file is in [Fortran list-directed format](@ref pm_io::fld_type) and `sep` is present or,
    2325             :     !>      <li>    if the file is in [csv format or similar](@ref pm_io::csv_type) and `sep` is missing,
    2326             :     !>  </ol>
    2327             :     !>  The table read action will fail.<br>
    2328             :     !>  If so, the algorithm will try to read the `table` again by reading it with the
    2329             :     !>  alternative parser before completely failing and returning a non-zero code.<br>
    2330             :     !>
    2331             :     !>  \devnote
    2332             :     !>  The naming choice `sep` over `delim` or similar is deliberate.<br>
    2333             :     !>  While many resources consider *separator* and *delimiter* identical, it is more sensible to consider *delimiter* as a character
    2334             :     !>  set that determines what belong to a field, and *separator* as a character set that separates different fields from each other.<br>
    2335             :     !>  This convention is also consistent with the Fortran standard terminology where delimiters are referred to as delimiters.<br>
    2336             :     !>
    2337             :     !>  \see
    2338             :     !>  [getRecordFrom](@ref pm_io::getRecordFrom)<br>
    2339             :     !>  [setRecordFrom](@ref pm_io::setRecordFrom)<br>
    2340             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    2341             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    2342             :     !>  [getErrTableRead](@ref pm_io::getErrTableRead)<br>
    2343             :     !>  [getErrTableWrite](@ref pm_io::getErrTableWrite)<br>
    2344             :     !>
    2345             :     !>  \example{getErrTableRead}
    2346             :     !>  \include{lineno} example/pm_io/getErrTableRead/main.F90
    2347             :     !>  \compilef{getErrTableRead}
    2348             :     !>  \output{getErrTableRead}
    2349             :     !>  \include{lineno} example/pm_io/getErrTableRead/main.out.F90
    2350             :     !>
    2351             :     !>  \test
    2352             :     !>  [test_pm_io](@ref test_pm_io)
    2353             :     !>
    2354             :     !>  \todo
    2355             :     !>  \phigh
    2356             :     !>  When the user-specified `sep` contains a value other than `" "` or `,`, the current implementation cannot handle
    2357             :     !>  the presence of new line characters within string single or double quote delimited fields in output tables of type `character`.<br>
    2358             :     !>  This limitation can be fixed by tracking the delimiters while reading the contents of `table`.<br>
    2359             :     !>
    2360             :     !>  \todo
    2361             :     !>  \phigh
    2362             :     !>  The `optional` input arguments `deliml` `delimr` must be added to allow parsing arbitrarily-delimited fields.<br>
    2363             :     !>
    2364             :     !>  \todo
    2365             :     !>  \pmed
    2366             :     !>  The behavior of this generic interface for empty tables is currently undefined, although the `err` code is non-zero.<br>
    2367             :     !>  This should be fixed.<br>
    2368             :     !>
    2369             :     !>  \todo
    2370             :     !>  \pmed
    2371             :     !>  The non-intrinsic values for the output error code `err` must be standardized.<br>
    2372             :     !>  Currently, the `err` is set to `-1` if an error occurs other than what is diagnosed by the compiler.<br>
    2373             :     !>
    2374             :     !>  \todo
    2375             :     !>  \pmed
    2376             :     !>  An `optional` input argument `del` must be added to optionally delete the input `file` or `unit` upon **successful** reading of the `table`.<br>
    2377             :     !>
    2378             :     !>  \todo
    2379             :     !>  \pvhigh
    2380             :     !>  In the current implementation, the behavior under an empty `sep` with `trans` option present is vague and untested.<br>
    2381             :     !>  This must be clarified via testing and further improvements.<br>
    2382             :     !>
    2383             :     !>  \finmain{getErrTableRead}
    2384             :     !>
    2385             :     !>  \author
    2386             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    2387             : 
    2388             :     ! D1 file NO
    2389             : 
    2390             :     interface getErrTableRead
    2391             : 
    2392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2393             : 
    2394             : #if SK5_ENABLED
    2395             :     module function getErrTableReadFile_NO_D1_SK5(file, table, header, sep, roff, iomsg) result(err)
    2396             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2397             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_SK5
    2398             : #endif
    2399             :         use pm_kind, only: SKC => SK5
    2400             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2401             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2402             :         character(*, SK)            , intent(in)                                :: file
    2403             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2404             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2405             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2406             :         integer(IK)                                                             :: err
    2407             :     end function
    2408             : #endif
    2409             : 
    2410             : #if SK4_ENABLED
    2411             :     module function getErrTableReadFile_NO_D1_SK4(file, table, header, sep, roff, iomsg) result(err)
    2412             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2413             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_SK4
    2414             : #endif
    2415             :         use pm_kind, only: SKC => SK4
    2416             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2417             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2418             :         character(*, SK)            , intent(in)                                :: file
    2419             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2420             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2421             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2422             :         integer(IK)                                                             :: err
    2423             :     end function
    2424             : #endif
    2425             : 
    2426             : #if SK3_ENABLED
    2427             :     module function getErrTableReadFile_NO_D1_SK3(file, table, header, sep, roff, iomsg) result(err)
    2428             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2429             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_SK3
    2430             : #endif
    2431             :         use pm_kind, only: SKC => SK3
    2432             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2433             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2434             :         character(*, SK)            , intent(in)                                :: file
    2435             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2436             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2437             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2438             :         integer(IK)                                                             :: err
    2439             :     end function
    2440             : #endif
    2441             : 
    2442             : #if SK2_ENABLED
    2443             :     module function getErrTableReadFile_NO_D1_SK2(file, table, header, sep, roff, iomsg) result(err)
    2444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2445             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_SK2
    2446             : #endif
    2447             :         use pm_kind, only: SKC => SK2
    2448             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2449             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2450             :         character(*, SK)            , intent(in)                                :: file
    2451             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2452             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2453             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2454             :         integer(IK)                                                             :: err
    2455             :     end function
    2456             : #endif
    2457             : 
    2458             : #if SK1_ENABLED
    2459             :     module function getErrTableReadFile_NO_D1_SK1(file, table, header, sep, roff, iomsg) result(err)
    2460             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2461             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_SK1
    2462             : #endif
    2463             :         use pm_kind, only: SKC => SK1
    2464             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2465             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2466             :         character(*, SK)            , intent(in)                                :: file
    2467             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2468             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2469             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2470             :         integer(IK)                                                             :: err
    2471             :     end function
    2472             : #endif
    2473             : 
    2474             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2475             : 
    2476             : #if IK5_ENABLED
    2477             :     module function getErrTableReadFile_NO_D1_IK5(file, table, header, sep, roff, iomsg) result(err)
    2478             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2479             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_IK5
    2480             : #endif
    2481             :         use pm_kind, only: IKC => IK5
    2482             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2483             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2484             :         character(*, SK)            , intent(in)                                :: file
    2485             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2486             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2487             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2488             :         integer(IK)                                                             :: err
    2489             :     end function
    2490             : #endif
    2491             : 
    2492             : #if IK4_ENABLED
    2493             :     module function getErrTableReadFile_NO_D1_IK4(file, table, header, sep, roff, iomsg) result(err)
    2494             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2495             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_IK4
    2496             : #endif
    2497             :         use pm_kind, only: IKC => IK4
    2498             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2499             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2500             :         character(*, SK)            , intent(in)                                :: file
    2501             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2502             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2503             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2504             :         integer(IK)                                                             :: err
    2505             :     end function
    2506             : #endif
    2507             : 
    2508             : #if IK3_ENABLED
    2509             :     module function getErrTableReadFile_NO_D1_IK3(file, table, header, sep, roff, iomsg) result(err)
    2510             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2511             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_IK3
    2512             : #endif
    2513             :         use pm_kind, only: IKC => IK3
    2514             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2515             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2516             :         character(*, SK)            , intent(in)                                :: file
    2517             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2518             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2519             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2520             :         integer(IK)                                                             :: err
    2521             :     end function
    2522             : #endif
    2523             : 
    2524             : #if IK2_ENABLED
    2525             :     module function getErrTableReadFile_NO_D1_IK2(file, table, header, sep, roff, iomsg) result(err)
    2526             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2527             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_IK2
    2528             : #endif
    2529             :         use pm_kind, only: IKC => IK2
    2530             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2531             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2532             :         character(*, SK)            , intent(in)                                :: file
    2533             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2534             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2535             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2536             :         integer(IK)                                                             :: err
    2537             :     end function
    2538             : #endif
    2539             : 
    2540             : #if IK1_ENABLED
    2541             :     module function getErrTableReadFile_NO_D1_IK1(file, table, header, sep, roff, iomsg) result(err)
    2542             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2543             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_IK1
    2544             : #endif
    2545             :         use pm_kind, only: IKC => IK1
    2546             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2547             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2548             :         character(*, SK)            , intent(in)                                :: file
    2549             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2550             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2551             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2552             :         integer(IK)                                                             :: err
    2553             :     end function
    2554             : #endif
    2555             : 
    2556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2557             : 
    2558             : #if LK5_ENABLED
    2559             :     module function getErrTableReadFile_NO_D1_LK5(file, table, header, sep, roff, iomsg) result(err)
    2560             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2561             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_LK5
    2562             : #endif
    2563             :         use pm_kind, only: LKC => LK5
    2564             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2565             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2566             :         character(*, SK)            , intent(in)                                :: file
    2567             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2568             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2569             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2570             :         integer(IK)                                                             :: err
    2571             :     end function
    2572             : #endif
    2573             : 
    2574             : #if LK4_ENABLED
    2575             :     module function getErrTableReadFile_NO_D1_LK4(file, table, header, sep, roff, iomsg) result(err)
    2576             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2577             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_LK4
    2578             : #endif
    2579             :         use pm_kind, only: LKC => LK4
    2580             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2581             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2582             :         character(*, SK)            , intent(in)                                :: file
    2583             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2584             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2585             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2586             :         integer(IK)                                                             :: err
    2587             :     end function
    2588             : #endif
    2589             : 
    2590             : #if LK3_ENABLED
    2591             :     module function getErrTableReadFile_NO_D1_LK3(file, table, header, sep, roff, iomsg) result(err)
    2592             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2593             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_LK3
    2594             : #endif
    2595             :         use pm_kind, only: LKC => LK3
    2596             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2597             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2598             :         character(*, SK)            , intent(in)                                :: file
    2599             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2600             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2601             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2602             :         integer(IK)                                                             :: err
    2603             :     end function
    2604             : #endif
    2605             : 
    2606             : #if LK2_ENABLED
    2607             :     module function getErrTableReadFile_NO_D1_LK2(file, table, header, sep, roff, iomsg) result(err)
    2608             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2609             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_LK2
    2610             : #endif
    2611             :         use pm_kind, only: LKC => LK2
    2612             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2613             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2614             :         character(*, SK)            , intent(in)                                :: file
    2615             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2616             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2617             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2618             :         integer(IK)                                                             :: err
    2619             :     end function
    2620             : #endif
    2621             : 
    2622             : #if LK1_ENABLED
    2623             :     module function getErrTableReadFile_NO_D1_LK1(file, table, header, sep, roff, iomsg) result(err)
    2624             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2625             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_LK1
    2626             : #endif
    2627             :         use pm_kind, only: LKC => LK1
    2628             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2629             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2630             :         character(*, SK)            , intent(in)                                :: file
    2631             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2632             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2633             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2634             :         integer(IK)                                                             :: err
    2635             :     end function
    2636             : #endif
    2637             : 
    2638             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2639             : 
    2640             : #if CK5_ENABLED
    2641             :     module function getErrTableReadFile_NO_D1_CK5(file, table, header, sep, roff, iomsg) result(err)
    2642             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2643             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_CK5
    2644             : #endif
    2645             :         use pm_kind, only: CKC => CK5
    2646             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    2647             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2648             :         character(*, SK)            , intent(in)                                :: file
    2649             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2650             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2651             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2652             :         integer(IK)                                                             :: err
    2653             :     end function
    2654             : #endif
    2655             : 
    2656             : #if CK4_ENABLED
    2657             :     module function getErrTableReadFile_NO_D1_CK4(file, table, header, sep, roff, iomsg) result(err)
    2658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2659             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_CK4
    2660             : #endif
    2661             :         use pm_kind, only: CKC => CK4
    2662             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    2663             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2664             :         character(*, SK)            , intent(in)                                :: file
    2665             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2666             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2667             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2668             :         integer(IK)                                                             :: err
    2669             :     end function
    2670             : #endif
    2671             : 
    2672             : #if CK3_ENABLED
    2673             :     module function getErrTableReadFile_NO_D1_CK3(file, table, header, sep, roff, iomsg) result(err)
    2674             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2675             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_CK3
    2676             : #endif
    2677             :         use pm_kind, only: CKC => CK3
    2678             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    2679             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2680             :         character(*, SK)            , intent(in)                                :: file
    2681             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2682             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2683             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2684             :         integer(IK)                                                             :: err
    2685             :     end function
    2686             : #endif
    2687             : 
    2688             : #if CK2_ENABLED
    2689             :     module function getErrTableReadFile_NO_D1_CK2(file, table, header, sep, roff, iomsg) result(err)
    2690             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2691             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_CK2
    2692             : #endif
    2693             :         use pm_kind, only: CKC => CK2
    2694             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    2695             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2696             :         character(*, SK)            , intent(in)                                :: file
    2697             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2698             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2699             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2700             :         integer(IK)                                                             :: err
    2701             :     end function
    2702             : #endif
    2703             : 
    2704             : #if CK1_ENABLED
    2705             :     module function getErrTableReadFile_NO_D1_CK1(file, table, header, sep, roff, iomsg) result(err)
    2706             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2707             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_CK1
    2708             : #endif
    2709             :         use pm_kind, only: CKC => CK1
    2710             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    2711             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2712             :         character(*, SK)            , intent(in)                                :: file
    2713             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2714             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2715             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2716             :         integer(IK)                                                             :: err
    2717             :     end function
    2718             : #endif
    2719             : 
    2720             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2721             : 
    2722             : #if RK5_ENABLED
    2723             :     module function getErrTableReadFile_NO_D1_RK5(file, table, header, sep, roff, iomsg) result(err)
    2724             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2725             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_RK5
    2726             : #endif
    2727             :         use pm_kind, only: RKC => RK5
    2728             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    2729             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2730             :         character(*, SK)            , intent(in)                                :: file
    2731             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2732             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2733             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2734             :         integer(IK)                                                             :: err
    2735             :     end function
    2736             : #endif
    2737             : 
    2738             : #if RK4_ENABLED
    2739             :     module function getErrTableReadFile_NO_D1_RK4(file, table, header, sep, roff, iomsg) result(err)
    2740             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2741             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_RK4
    2742             : #endif
    2743             :         use pm_kind, only: RKC => RK4
    2744             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    2745             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2746             :         character(*, SK)            , intent(in)                                :: file
    2747             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2748             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2749             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2750             :         integer(IK)                                                             :: err
    2751             :     end function
    2752             : #endif
    2753             : 
    2754             : #if RK3_ENABLED
    2755             :     module function getErrTableReadFile_NO_D1_RK3(file, table, header, sep, roff, iomsg) result(err)
    2756             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2757             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_RK3
    2758             : #endif
    2759             :         use pm_kind, only: RKC => RK3
    2760             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    2761             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2762             :         character(*, SK)            , intent(in)                                :: file
    2763             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2764             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2765             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2766             :         integer(IK)                                                             :: err
    2767             :     end function
    2768             : #endif
    2769             : 
    2770             : #if RK2_ENABLED
    2771             :     module function getErrTableReadFile_NO_D1_RK2(file, table, header, sep, roff, iomsg) result(err)
    2772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2773             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_RK2
    2774             : #endif
    2775             :         use pm_kind, only: RKC => RK2
    2776             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    2777             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2778             :         character(*, SK)            , intent(in)                                :: file
    2779             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2780             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2781             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2782             :         integer(IK)                                                             :: err
    2783             :     end function
    2784             : #endif
    2785             : 
    2786             : #if RK1_ENABLED
    2787             :     module function getErrTableReadFile_NO_D1_RK1(file, table, header, sep, roff, iomsg) result(err)
    2788             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2789             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D1_RK1
    2790             : #endif
    2791             :         use pm_kind, only: RKC => RK1
    2792             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    2793             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2794             :         character(*, SK)            , intent(in)                                :: file
    2795             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2796             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2797             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2798             :         integer(IK)                                                             :: err
    2799             :     end function
    2800             : #endif
    2801             : 
    2802             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2803             : 
    2804             :     end interface
    2805             : 
    2806             :     ! D1 unit NO
    2807             : 
    2808             :     interface getErrTableRead
    2809             : 
    2810             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2811             : 
    2812             : #if SK5_ENABLED
    2813             :     module function getErrTableReadUnit_NO_D1_SK5(unit, table, header, sep, roff, iomsg) result(err)
    2814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2815             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_SK5
    2816             : #endif
    2817             :         use pm_kind, only: SKC => SK5
    2818             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2819             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2820             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2821             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2822             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2823             :         integer(IK)                 , intent(in)                                :: unit
    2824             :         integer(IK)                                                             :: err
    2825             :     end function
    2826             : #endif
    2827             : 
    2828             : #if SK4_ENABLED
    2829             :     module function getErrTableReadUnit_NO_D1_SK4(unit, table, header, sep, roff, iomsg) result(err)
    2830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2831             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_SK4
    2832             : #endif
    2833             :         use pm_kind, only: SKC => SK4
    2834             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2835             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2836             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2837             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2838             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2839             :         integer(IK)                 , intent(in)                                :: unit
    2840             :         integer(IK)                                                             :: err
    2841             :     end function
    2842             : #endif
    2843             : 
    2844             : #if SK3_ENABLED
    2845             :     module function getErrTableReadUnit_NO_D1_SK3(unit, table, header, sep, roff, iomsg) result(err)
    2846             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2847             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_SK3
    2848             : #endif
    2849             :         use pm_kind, only: SKC => SK3
    2850             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2851             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2852             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2853             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2854             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2855             :         integer(IK)                 , intent(in)                                :: unit
    2856             :         integer(IK)                                                             :: err
    2857             :     end function
    2858             : #endif
    2859             : 
    2860             : #if SK2_ENABLED
    2861             :     module function getErrTableReadUnit_NO_D1_SK2(unit, table, header, sep, roff, iomsg) result(err)
    2862             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2863             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_SK2
    2864             : #endif
    2865             :         use pm_kind, only: SKC => SK2
    2866             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2867             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2868             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2869             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2870             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2871             :         integer(IK)                 , intent(in)                                :: unit
    2872             :         integer(IK)                                                             :: err
    2873             :     end function
    2874             : #endif
    2875             : 
    2876             : #if SK1_ENABLED
    2877             :     module function getErrTableReadUnit_NO_D1_SK1(unit, table, header, sep, roff, iomsg) result(err)
    2878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2879             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_SK1
    2880             : #endif
    2881             :         use pm_kind, only: SKC => SK1
    2882             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    2883             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2884             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2885             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2886             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2887             :         integer(IK)                 , intent(in)                                :: unit
    2888             :         integer(IK)                                                             :: err
    2889             :     end function
    2890             : #endif
    2891             : 
    2892             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2893             : 
    2894             : #if IK5_ENABLED
    2895             :     module function getErrTableReadUnit_NO_D1_IK5(unit, table, header, sep, roff, iomsg) result(err)
    2896             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2897             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_IK5
    2898             : #endif
    2899             :         use pm_kind, only: IKC => IK5
    2900             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2901             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2902             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2903             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2904             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2905             :         integer(IK)                 , intent(in)                                :: unit
    2906             :         integer(IK)                                                             :: err
    2907             :     end function
    2908             : #endif
    2909             : 
    2910             : #if IK4_ENABLED
    2911             :     module function getErrTableReadUnit_NO_D1_IK4(unit, table, header, sep, roff, iomsg) result(err)
    2912             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2913             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_IK4
    2914             : #endif
    2915             :         use pm_kind, only: IKC => IK4
    2916             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2917             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2918             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2919             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2920             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2921             :         integer(IK)                 , intent(in)                                :: unit
    2922             :         integer(IK)                                                             :: err
    2923             :     end function
    2924             : #endif
    2925             : 
    2926             : #if IK3_ENABLED
    2927             :     module function getErrTableReadUnit_NO_D1_IK3(unit, table, header, sep, roff, iomsg) result(err)
    2928             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2929             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_IK3
    2930             : #endif
    2931             :         use pm_kind, only: IKC => IK3
    2932             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2933             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2934             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2935             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2936             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2937             :         integer(IK)                 , intent(in)                                :: unit
    2938             :         integer(IK)                                                             :: err
    2939             :     end function
    2940             : #endif
    2941             : 
    2942             : #if IK2_ENABLED
    2943             :     module function getErrTableReadUnit_NO_D1_IK2(unit, table, header, sep, roff, iomsg) result(err)
    2944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2945             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_IK2
    2946             : #endif
    2947             :         use pm_kind, only: IKC => IK2
    2948             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2949             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2950             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2951             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2952             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2953             :         integer(IK)                 , intent(in)                                :: unit
    2954             :         integer(IK)                                                             :: err
    2955             :     end function
    2956             : #endif
    2957             : 
    2958             : #if IK1_ENABLED
    2959             :     module function getErrTableReadUnit_NO_D1_IK1(unit, table, header, sep, roff, iomsg) result(err)
    2960             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2961             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_IK1
    2962             : #endif
    2963             :         use pm_kind, only: IKC => IK1
    2964             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    2965             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2966             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2967             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2968             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2969             :         integer(IK)                 , intent(in)                                :: unit
    2970             :         integer(IK)                                                             :: err
    2971             :     end function
    2972             : #endif
    2973             : 
    2974             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2975             : 
    2976             : #if LK5_ENABLED
    2977             :     module function getErrTableReadUnit_NO_D1_LK5(unit, table, header, sep, roff, iomsg) result(err)
    2978             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2979             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_LK5
    2980             : #endif
    2981             :         use pm_kind, only: LKC => LK5
    2982             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2983             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    2984             :         character(*, SK)            , intent(in)                    , optional  :: sep
    2985             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    2986             :         integer(IK)                 , intent(in)                    , optional  :: roff
    2987             :         integer(IK)                 , intent(in)                                :: unit
    2988             :         integer(IK)                                                             :: err
    2989             :     end function
    2990             : #endif
    2991             : 
    2992             : #if LK4_ENABLED
    2993             :     module function getErrTableReadUnit_NO_D1_LK4(unit, table, header, sep, roff, iomsg) result(err)
    2994             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2995             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_LK4
    2996             : #endif
    2997             :         use pm_kind, only: LKC => LK4
    2998             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    2999             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3000             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3001             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3002             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3003             :         integer(IK)                 , intent(in)                                :: unit
    3004             :         integer(IK)                                                             :: err
    3005             :     end function
    3006             : #endif
    3007             : 
    3008             : #if LK3_ENABLED
    3009             :     module function getErrTableReadUnit_NO_D1_LK3(unit, table, header, sep, roff, iomsg) result(err)
    3010             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3011             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_LK3
    3012             : #endif
    3013             :         use pm_kind, only: LKC => LK3
    3014             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    3015             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3016             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3017             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3018             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3019             :         integer(IK)                 , intent(in)                                :: unit
    3020             :         integer(IK)                                                             :: err
    3021             :     end function
    3022             : #endif
    3023             : 
    3024             : #if LK2_ENABLED
    3025             :     module function getErrTableReadUnit_NO_D1_LK2(unit, table, header, sep, roff, iomsg) result(err)
    3026             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3027             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_LK2
    3028             : #endif
    3029             :         use pm_kind, only: LKC => LK2
    3030             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    3031             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3032             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3033             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3034             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3035             :         integer(IK)                 , intent(in)                                :: unit
    3036             :         integer(IK)                                                             :: err
    3037             :     end function
    3038             : #endif
    3039             : 
    3040             : #if LK1_ENABLED
    3041             :     module function getErrTableReadUnit_NO_D1_LK1(unit, table, header, sep, roff, iomsg) result(err)
    3042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3043             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_LK1
    3044             : #endif
    3045             :         use pm_kind, only: LKC => LK1
    3046             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    3047             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3048             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3049             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3050             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3051             :         integer(IK)                 , intent(in)                                :: unit
    3052             :         integer(IK)                                                             :: err
    3053             :     end function
    3054             : #endif
    3055             : 
    3056             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3057             : 
    3058             : #if CK5_ENABLED
    3059             :     module function getErrTableReadUnit_NO_D1_CK5(unit, table, header, sep, roff, iomsg) result(err)
    3060             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3061             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_CK5
    3062             : #endif
    3063             :         use pm_kind, only: CKC => CK5
    3064             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    3065             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3066             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3067             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3068             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3069             :         integer(IK)                 , intent(in)                                :: unit
    3070             :         integer(IK)                                                             :: err
    3071             :     end function
    3072             : #endif
    3073             : 
    3074             : #if CK4_ENABLED
    3075             :     module function getErrTableReadUnit_NO_D1_CK4(unit, table, header, sep, roff, iomsg) result(err)
    3076             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3077             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_CK4
    3078             : #endif
    3079             :         use pm_kind, only: CKC => CK4
    3080             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    3081             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3082             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3083             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3084             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3085             :         integer(IK)                 , intent(in)                                :: unit
    3086             :         integer(IK)                                                             :: err
    3087             :     end function
    3088             : #endif
    3089             : 
    3090             : #if CK3_ENABLED
    3091             :     module function getErrTableReadUnit_NO_D1_CK3(unit, table, header, sep, roff, iomsg) result(err)
    3092             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3093             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_CK3
    3094             : #endif
    3095             :         use pm_kind, only: CKC => CK3
    3096             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    3097             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3098             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3099             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3100             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3101             :         integer(IK)                 , intent(in)                                :: unit
    3102             :         integer(IK)                                                             :: err
    3103             :     end function
    3104             : #endif
    3105             : 
    3106             : #if CK2_ENABLED
    3107             :     module function getErrTableReadUnit_NO_D1_CK2(unit, table, header, sep, roff, iomsg) result(err)
    3108             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3109             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_CK2
    3110             : #endif
    3111             :         use pm_kind, only: CKC => CK2
    3112             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    3113             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3114             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3115             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3116             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3117             :         integer(IK)                 , intent(in)                                :: unit
    3118             :         integer(IK)                                                             :: err
    3119             :     end function
    3120             : #endif
    3121             : 
    3122             : #if CK1_ENABLED
    3123             :     module function getErrTableReadUnit_NO_D1_CK1(unit, table, header, sep, roff, iomsg) result(err)
    3124             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3125             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_CK1
    3126             : #endif
    3127             :         use pm_kind, only: CKC => CK1
    3128             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    3129             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3130             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3131             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3132             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3133             :         integer(IK)                 , intent(in)                                :: unit
    3134             :         integer(IK)                                                             :: err
    3135             :     end function
    3136             : #endif
    3137             : 
    3138             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3139             : 
    3140             : #if RK5_ENABLED
    3141             :     module function getErrTableReadUnit_NO_D1_RK5(unit, table, header, sep, roff, iomsg) result(err)
    3142             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3143             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_RK5
    3144             : #endif
    3145             :         use pm_kind, only: RKC => RK5
    3146             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    3147             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3148             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3149             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3150             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3151             :         integer(IK)                 , intent(in)                                :: unit
    3152             :         integer(IK)                                                             :: err
    3153             :     end function
    3154             : #endif
    3155             : 
    3156             : #if RK4_ENABLED
    3157             :     module function getErrTableReadUnit_NO_D1_RK4(unit, table, header, sep, roff, iomsg) result(err)
    3158             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3159             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_RK4
    3160             : #endif
    3161             :         use pm_kind, only: RKC => RK4
    3162             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    3163             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3164             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3165             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3166             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3167             :         integer(IK)                 , intent(in)                                :: unit
    3168             :         integer(IK)                                                             :: err
    3169             :     end function
    3170             : #endif
    3171             : 
    3172             : #if RK3_ENABLED
    3173             :     module function getErrTableReadUnit_NO_D1_RK3(unit, table, header, sep, roff, iomsg) result(err)
    3174             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3175             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_RK3
    3176             : #endif
    3177             :         use pm_kind, only: RKC => RK3
    3178             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    3179             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3180             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3181             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3182             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3183             :         integer(IK)                 , intent(in)                                :: unit
    3184             :         integer(IK)                                                             :: err
    3185             :     end function
    3186             : #endif
    3187             : 
    3188             : #if RK2_ENABLED
    3189             :     module function getErrTableReadUnit_NO_D1_RK2(unit, table, header, sep, roff, iomsg) result(err)
    3190             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3191             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_RK2
    3192             : #endif
    3193             :         use pm_kind, only: RKC => RK2
    3194             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    3195             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3196             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3197             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3198             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3199             :         integer(IK)                 , intent(in)                                :: unit
    3200             :         integer(IK)                                                             :: err
    3201             :     end function
    3202             : #endif
    3203             : 
    3204             : #if RK1_ENABLED
    3205             :     module function getErrTableReadUnit_NO_D1_RK1(unit, table, header, sep, roff, iomsg) result(err)
    3206             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3207             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D1_RK1
    3208             : #endif
    3209             :         use pm_kind, only: RKC => RK1
    3210             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    3211             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3212             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3213             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3214             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3215             :         integer(IK)                 , intent(in)                                :: unit
    3216             :         integer(IK)                                                             :: err
    3217             :     end function
    3218             : #endif
    3219             : 
    3220             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3221             : 
    3222             :     end interface
    3223             : 
    3224             :     ! D2 file NO
    3225             : 
    3226             :     interface getErrTableRead
    3227             : 
    3228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3229             : 
    3230             : #if SK5_ENABLED
    3231             :     module function getErrTableReadFile_NO_D2_SK5(file, table, header, sep, roff, iomsg) result(err)
    3232             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3233             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_SK5
    3234             : #endif
    3235             :         use pm_kind, only: SKC => SK5
    3236             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3237             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3238             :         character(*, SK)            , intent(in)                                :: file
    3239             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3240             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3241             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3242             :         integer(IK)                                                             :: err
    3243             :     end function
    3244             : #endif
    3245             : 
    3246             : #if SK4_ENABLED
    3247             :     module function getErrTableReadFile_NO_D2_SK4(file, table, header, sep, roff, iomsg) result(err)
    3248             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3249             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_SK4
    3250             : #endif
    3251             :         use pm_kind, only: SKC => SK4
    3252             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3253             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3254             :         character(*, SK)            , intent(in)                                :: file
    3255             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3256             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3257             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3258             :         integer(IK)                                                             :: err
    3259             :     end function
    3260             : #endif
    3261             : 
    3262             : #if SK3_ENABLED
    3263             :     module function getErrTableReadFile_NO_D2_SK3(file, table, header, sep, roff, iomsg) result(err)
    3264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3265             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_SK3
    3266             : #endif
    3267             :         use pm_kind, only: SKC => SK3
    3268             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3269             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3270             :         character(*, SK)            , intent(in)                                :: file
    3271             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3272             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3273             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3274             :         integer(IK)                                                             :: err
    3275             :     end function
    3276             : #endif
    3277             : 
    3278             : #if SK2_ENABLED
    3279             :     module function getErrTableReadFile_NO_D2_SK2(file, table, header, sep, roff, iomsg) result(err)
    3280             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3281             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_SK2
    3282             : #endif
    3283             :         use pm_kind, only: SKC => SK2
    3284             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3285             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3286             :         character(*, SK)            , intent(in)                                :: file
    3287             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3288             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3289             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3290             :         integer(IK)                                                             :: err
    3291             :     end function
    3292             : #endif
    3293             : 
    3294             : #if SK1_ENABLED
    3295             :     module function getErrTableReadFile_NO_D2_SK1(file, table, header, sep, roff, iomsg) result(err)
    3296             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3297             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_SK1
    3298             : #endif
    3299             :         use pm_kind, only: SKC => SK1
    3300             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3301             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3302             :         character(*, SK)            , intent(in)                                :: file
    3303             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3304             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3305             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3306             :         integer(IK)                                                             :: err
    3307             :     end function
    3308             : #endif
    3309             : 
    3310             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3311             : 
    3312             : #if IK5_ENABLED
    3313             :     module function getErrTableReadFile_NO_D2_IK5(file, table, header, sep, roff, iomsg) result(err)
    3314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3315             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_IK5
    3316             : #endif
    3317             :         use pm_kind, only: IKC => IK5
    3318             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3319             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3320             :         character(*, SK)            , intent(in)                                :: file
    3321             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3322             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3323             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3324             :         integer(IK)                                                             :: err
    3325             :     end function
    3326             : #endif
    3327             : 
    3328             : #if IK4_ENABLED
    3329             :     module function getErrTableReadFile_NO_D2_IK4(file, table, header, sep, roff, iomsg) result(err)
    3330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3331             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_IK4
    3332             : #endif
    3333             :         use pm_kind, only: IKC => IK4
    3334             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3335             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3336             :         character(*, SK)            , intent(in)                                :: file
    3337             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3338             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3339             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3340             :         integer(IK)                                                             :: err
    3341             :     end function
    3342             : #endif
    3343             : 
    3344             : #if IK3_ENABLED
    3345             :     module function getErrTableReadFile_NO_D2_IK3(file, table, header, sep, roff, iomsg) result(err)
    3346             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3347             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_IK3
    3348             : #endif
    3349             :         use pm_kind, only: IKC => IK3
    3350             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3351             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3352             :         character(*, SK)            , intent(in)                                :: file
    3353             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3354             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3355             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3356             :         integer(IK)                                                             :: err
    3357             :     end function
    3358             : #endif
    3359             : 
    3360             : #if IK2_ENABLED
    3361             :     module function getErrTableReadFile_NO_D2_IK2(file, table, header, sep, roff, iomsg) result(err)
    3362             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3363             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_IK2
    3364             : #endif
    3365             :         use pm_kind, only: IKC => IK2
    3366             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3367             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3368             :         character(*, SK)            , intent(in)                                :: file
    3369             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3370             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3371             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3372             :         integer(IK)                                                             :: err
    3373             :     end function
    3374             : #endif
    3375             : 
    3376             : #if IK1_ENABLED
    3377             :     module function getErrTableReadFile_NO_D2_IK1(file, table, header, sep, roff, iomsg) result(err)
    3378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3379             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_IK1
    3380             : #endif
    3381             :         use pm_kind, only: IKC => IK1
    3382             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3383             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3384             :         character(*, SK)            , intent(in)                                :: file
    3385             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3386             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3387             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3388             :         integer(IK)                                                             :: err
    3389             :     end function
    3390             : #endif
    3391             : 
    3392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3393             : 
    3394             : #if LK5_ENABLED
    3395             :     module function getErrTableReadFile_NO_D2_LK5(file, table, header, sep, roff, iomsg) result(err)
    3396             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3397             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_LK5
    3398             : #endif
    3399             :         use pm_kind, only: LKC => LK5
    3400             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3401             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3402             :         character(*, SK)            , intent(in)                                :: file
    3403             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3404             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3405             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3406             :         integer(IK)                                                             :: err
    3407             :     end function
    3408             : #endif
    3409             : 
    3410             : #if LK4_ENABLED
    3411             :     module function getErrTableReadFile_NO_D2_LK4(file, table, header, sep, roff, iomsg) result(err)
    3412             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3413             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_LK4
    3414             : #endif
    3415             :         use pm_kind, only: LKC => LK4
    3416             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3417             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3418             :         character(*, SK)            , intent(in)                                :: file
    3419             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3420             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3421             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3422             :         integer(IK)                                                             :: err
    3423             :     end function
    3424             : #endif
    3425             : 
    3426             : #if LK3_ENABLED
    3427             :     module function getErrTableReadFile_NO_D2_LK3(file, table, header, sep, roff, iomsg) result(err)
    3428             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3429             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_LK3
    3430             : #endif
    3431             :         use pm_kind, only: LKC => LK3
    3432             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3433             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3434             :         character(*, SK)            , intent(in)                                :: file
    3435             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3436             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3437             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3438             :         integer(IK)                                                             :: err
    3439             :     end function
    3440             : #endif
    3441             : 
    3442             : #if LK2_ENABLED
    3443             :     module function getErrTableReadFile_NO_D2_LK2(file, table, header, sep, roff, iomsg) result(err)
    3444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3445             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_LK2
    3446             : #endif
    3447             :         use pm_kind, only: LKC => LK2
    3448             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3449             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3450             :         character(*, SK)            , intent(in)                                :: file
    3451             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3452             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3453             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3454             :         integer(IK)                                                             :: err
    3455             :     end function
    3456             : #endif
    3457             : 
    3458             : #if LK1_ENABLED
    3459             :     module function getErrTableReadFile_NO_D2_LK1(file, table, header, sep, roff, iomsg) result(err)
    3460             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3461             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_LK1
    3462             : #endif
    3463             :         use pm_kind, only: LKC => LK1
    3464             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3465             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3466             :         character(*, SK)            , intent(in)                                :: file
    3467             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3468             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3469             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3470             :         integer(IK)                                                             :: err
    3471             :     end function
    3472             : #endif
    3473             : 
    3474             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3475             : 
    3476             : #if CK5_ENABLED
    3477             :     module function getErrTableReadFile_NO_D2_CK5(file, table, header, sep, roff, iomsg) result(err)
    3478             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3479             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_CK5
    3480             : #endif
    3481             :         use pm_kind, only: CKC => CK5
    3482             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3483             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3484             :         character(*, SK)            , intent(in)                                :: file
    3485             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3486             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3487             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3488             :         integer(IK)                                                             :: err
    3489             :     end function
    3490             : #endif
    3491             : 
    3492             : #if CK4_ENABLED
    3493             :     module function getErrTableReadFile_NO_D2_CK4(file, table, header, sep, roff, iomsg) result(err)
    3494             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3495             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_CK4
    3496             : #endif
    3497             :         use pm_kind, only: CKC => CK4
    3498             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3499             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3500             :         character(*, SK)            , intent(in)                                :: file
    3501             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3502             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3503             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3504             :         integer(IK)                                                             :: err
    3505             :     end function
    3506             : #endif
    3507             : 
    3508             : #if CK3_ENABLED
    3509             :     module function getErrTableReadFile_NO_D2_CK3(file, table, header, sep, roff, iomsg) result(err)
    3510             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3511             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_CK3
    3512             : #endif
    3513             :         use pm_kind, only: CKC => CK3
    3514             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3515             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3516             :         character(*, SK)            , intent(in)                                :: file
    3517             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3518             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3519             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3520             :         integer(IK)                                                             :: err
    3521             :     end function
    3522             : #endif
    3523             : 
    3524             : #if CK2_ENABLED
    3525             :     module function getErrTableReadFile_NO_D2_CK2(file, table, header, sep, roff, iomsg) result(err)
    3526             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3527             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_CK2
    3528             : #endif
    3529             :         use pm_kind, only: CKC => CK2
    3530             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3531             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3532             :         character(*, SK)            , intent(in)                                :: file
    3533             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3534             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3535             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3536             :         integer(IK)                                                             :: err
    3537             :     end function
    3538             : #endif
    3539             : 
    3540             : #if CK1_ENABLED
    3541             :     module function getErrTableReadFile_NO_D2_CK1(file, table, header, sep, roff, iomsg) result(err)
    3542             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3543             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_CK1
    3544             : #endif
    3545             :         use pm_kind, only: CKC => CK1
    3546             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3547             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3548             :         character(*, SK)            , intent(in)                                :: file
    3549             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3550             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3551             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3552             :         integer(IK)                                                             :: err
    3553             :     end function
    3554             : #endif
    3555             : 
    3556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3557             : 
    3558             : #if RK5_ENABLED
    3559             :     module function getErrTableReadFile_NO_D2_RK5(file, table, header, sep, roff, iomsg) result(err)
    3560             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3561             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_RK5
    3562             : #endif
    3563             :         use pm_kind, only: RKC => RK5
    3564             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3565             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3566             :         character(*, SK)            , intent(in)                                :: file
    3567             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3568             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3569             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3570             :         integer(IK)                                                             :: err
    3571             :     end function
    3572             : #endif
    3573             : 
    3574             : #if RK4_ENABLED
    3575             :     module function getErrTableReadFile_NO_D2_RK4(file, table, header, sep, roff, iomsg) result(err)
    3576             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3577             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_RK4
    3578             : #endif
    3579             :         use pm_kind, only: RKC => RK4
    3580             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3581             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3582             :         character(*, SK)            , intent(in)                                :: file
    3583             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3584             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3585             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3586             :         integer(IK)                                                             :: err
    3587             :     end function
    3588             : #endif
    3589             : 
    3590             : #if RK3_ENABLED
    3591             :     module function getErrTableReadFile_NO_D2_RK3(file, table, header, sep, roff, iomsg) result(err)
    3592             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3593             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_RK3
    3594             : #endif
    3595             :         use pm_kind, only: RKC => RK3
    3596             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3597             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3598             :         character(*, SK)            , intent(in)                                :: file
    3599             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3600             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3601             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3602             :         integer(IK)                                                             :: err
    3603             :     end function
    3604             : #endif
    3605             : 
    3606             : #if RK2_ENABLED
    3607             :     module function getErrTableReadFile_NO_D2_RK2(file, table, header, sep, roff, iomsg) result(err)
    3608             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3609             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_RK2
    3610             : #endif
    3611             :         use pm_kind, only: RKC => RK2
    3612             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3613             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3614             :         character(*, SK)            , intent(in)                                :: file
    3615             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3616             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3617             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3618             :         integer(IK)                                                             :: err
    3619             :     end function
    3620             : #endif
    3621             : 
    3622             : #if RK1_ENABLED
    3623             :     module function getErrTableReadFile_NO_D2_RK1(file, table, header, sep, roff, iomsg) result(err)
    3624             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3625             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_NO_D2_RK1
    3626             : #endif
    3627             :         use pm_kind, only: RKC => RK1
    3628             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3629             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3630             :         character(*, SK)            , intent(in)                                :: file
    3631             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3632             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3633             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3634             :         integer(IK)                                                             :: err
    3635             :     end function
    3636             : #endif
    3637             : 
    3638             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3639             : 
    3640             :     end interface
    3641             : 
    3642             :     ! D2 unit NO
    3643             : 
    3644             :     interface getErrTableRead
    3645             : 
    3646             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3647             : 
    3648             : #if SK5_ENABLED
    3649             :     module function getErrTableReadUnit_NO_D2_SK5(unit, table, header, sep, roff, iomsg) result(err)
    3650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3651             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_SK5
    3652             : #endif
    3653             :         use pm_kind, only: SKC => SK5
    3654             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3655             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3656             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3657             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3658             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3659             :         integer(IK)                 , intent(in)                                :: unit
    3660             :         integer(IK)                                                             :: err
    3661             :     end function
    3662             : #endif
    3663             : 
    3664             : #if SK4_ENABLED
    3665             :     module function getErrTableReadUnit_NO_D2_SK4(unit, table, header, sep, roff, iomsg) result(err)
    3666             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3667             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_SK4
    3668             : #endif
    3669             :         use pm_kind, only: SKC => SK4
    3670             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3671             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3672             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3673             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3674             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3675             :         integer(IK)                 , intent(in)                                :: unit
    3676             :         integer(IK)                                                             :: err
    3677             :     end function
    3678             : #endif
    3679             : 
    3680             : #if SK3_ENABLED
    3681             :     module function getErrTableReadUnit_NO_D2_SK3(unit, table, header, sep, roff, iomsg) result(err)
    3682             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3683             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_SK3
    3684             : #endif
    3685             :         use pm_kind, only: SKC => SK3
    3686             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3687             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3688             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3689             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3690             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3691             :         integer(IK)                 , intent(in)                                :: unit
    3692             :         integer(IK)                                                             :: err
    3693             :     end function
    3694             : #endif
    3695             : 
    3696             : #if SK2_ENABLED
    3697             :     module function getErrTableReadUnit_NO_D2_SK2(unit, table, header, sep, roff, iomsg) result(err)
    3698             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3699             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_SK2
    3700             : #endif
    3701             :         use pm_kind, only: SKC => SK2
    3702             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3703             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3704             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3705             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3706             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3707             :         integer(IK)                 , intent(in)                                :: unit
    3708             :         integer(IK)                                                             :: err
    3709             :     end function
    3710             : #endif
    3711             : 
    3712             : #if SK1_ENABLED
    3713             :     module function getErrTableReadUnit_NO_D2_SK1(unit, table, header, sep, roff, iomsg) result(err)
    3714             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3715             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_SK1
    3716             : #endif
    3717             :         use pm_kind, only: SKC => SK1
    3718             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    3719             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3720             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3721             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3722             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3723             :         integer(IK)                 , intent(in)                                :: unit
    3724             :         integer(IK)                                                             :: err
    3725             :     end function
    3726             : #endif
    3727             : 
    3728             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3729             : 
    3730             : #if IK5_ENABLED
    3731             :     module function getErrTableReadUnit_NO_D2_IK5(unit, table, header, sep, roff, iomsg) result(err)
    3732             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3733             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_IK5
    3734             : #endif
    3735             :         use pm_kind, only: IKC => IK5
    3736             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3737             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3738             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3739             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3740             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3741             :         integer(IK)                 , intent(in)                                :: unit
    3742             :         integer(IK)                                                             :: err
    3743             :     end function
    3744             : #endif
    3745             : 
    3746             : #if IK4_ENABLED
    3747             :     module function getErrTableReadUnit_NO_D2_IK4(unit, table, header, sep, roff, iomsg) result(err)
    3748             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3749             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_IK4
    3750             : #endif
    3751             :         use pm_kind, only: IKC => IK4
    3752             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3753             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3754             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3755             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3756             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3757             :         integer(IK)                 , intent(in)                                :: unit
    3758             :         integer(IK)                                                             :: err
    3759             :     end function
    3760             : #endif
    3761             : 
    3762             : #if IK3_ENABLED
    3763             :     module function getErrTableReadUnit_NO_D2_IK3(unit, table, header, sep, roff, iomsg) result(err)
    3764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3765             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_IK3
    3766             : #endif
    3767             :         use pm_kind, only: IKC => IK3
    3768             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3769             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3770             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3771             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3772             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3773             :         integer(IK)                 , intent(in)                                :: unit
    3774             :         integer(IK)                                                             :: err
    3775             :     end function
    3776             : #endif
    3777             : 
    3778             : #if IK2_ENABLED
    3779             :     module function getErrTableReadUnit_NO_D2_IK2(unit, table, header, sep, roff, iomsg) result(err)
    3780             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3781             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_IK2
    3782             : #endif
    3783             :         use pm_kind, only: IKC => IK2
    3784             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3785             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3786             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3787             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3788             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3789             :         integer(IK)                 , intent(in)                                :: unit
    3790             :         integer(IK)                                                             :: err
    3791             :     end function
    3792             : #endif
    3793             : 
    3794             : #if IK1_ENABLED
    3795             :     module function getErrTableReadUnit_NO_D2_IK1(unit, table, header, sep, roff, iomsg) result(err)
    3796             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3797             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_IK1
    3798             : #endif
    3799             :         use pm_kind, only: IKC => IK1
    3800             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    3801             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3802             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3803             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3804             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3805             :         integer(IK)                 , intent(in)                                :: unit
    3806             :         integer(IK)                                                             :: err
    3807             :     end function
    3808             : #endif
    3809             : 
    3810             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3811             : 
    3812             : #if LK5_ENABLED
    3813             :     module function getErrTableReadUnit_NO_D2_LK5(unit, table, header, sep, roff, iomsg) result(err)
    3814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3815             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_LK5
    3816             : #endif
    3817             :         use pm_kind, only: LKC => LK5
    3818             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3819             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3820             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3821             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3822             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3823             :         integer(IK)                 , intent(in)                                :: unit
    3824             :         integer(IK)                                                             :: err
    3825             :     end function
    3826             : #endif
    3827             : 
    3828             : #if LK4_ENABLED
    3829             :     module function getErrTableReadUnit_NO_D2_LK4(unit, table, header, sep, roff, iomsg) result(err)
    3830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3831             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_LK4
    3832             : #endif
    3833             :         use pm_kind, only: LKC => LK4
    3834             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3835             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3836             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3837             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3838             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3839             :         integer(IK)                 , intent(in)                                :: unit
    3840             :         integer(IK)                                                             :: err
    3841             :     end function
    3842             : #endif
    3843             : 
    3844             : #if LK3_ENABLED
    3845             :     module function getErrTableReadUnit_NO_D2_LK3(unit, table, header, sep, roff, iomsg) result(err)
    3846             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3847             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_LK3
    3848             : #endif
    3849             :         use pm_kind, only: LKC => LK3
    3850             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3851             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3852             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3853             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3854             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3855             :         integer(IK)                 , intent(in)                                :: unit
    3856             :         integer(IK)                                                             :: err
    3857             :     end function
    3858             : #endif
    3859             : 
    3860             : #if LK2_ENABLED
    3861             :     module function getErrTableReadUnit_NO_D2_LK2(unit, table, header, sep, roff, iomsg) result(err)
    3862             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3863             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_LK2
    3864             : #endif
    3865             :         use pm_kind, only: LKC => LK2
    3866             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3867             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3868             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3869             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3870             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3871             :         integer(IK)                 , intent(in)                                :: unit
    3872             :         integer(IK)                                                             :: err
    3873             :     end function
    3874             : #endif
    3875             : 
    3876             : #if LK1_ENABLED
    3877             :     module function getErrTableReadUnit_NO_D2_LK1(unit, table, header, sep, roff, iomsg) result(err)
    3878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3879             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_LK1
    3880             : #endif
    3881             :         use pm_kind, only: LKC => LK1
    3882             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    3883             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3884             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3885             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3886             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3887             :         integer(IK)                 , intent(in)                                :: unit
    3888             :         integer(IK)                                                             :: err
    3889             :     end function
    3890             : #endif
    3891             : 
    3892             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3893             : 
    3894             : #if CK5_ENABLED
    3895             :     module function getErrTableReadUnit_NO_D2_CK5(unit, table, header, sep, roff, iomsg) result(err)
    3896             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3897             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_CK5
    3898             : #endif
    3899             :         use pm_kind, only: CKC => CK5
    3900             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3901             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3902             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3903             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3904             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3905             :         integer(IK)                 , intent(in)                                :: unit
    3906             :         integer(IK)                                                             :: err
    3907             :     end function
    3908             : #endif
    3909             : 
    3910             : #if CK4_ENABLED
    3911             :     module function getErrTableReadUnit_NO_D2_CK4(unit, table, header, sep, roff, iomsg) result(err)
    3912             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3913             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_CK4
    3914             : #endif
    3915             :         use pm_kind, only: CKC => CK4
    3916             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3917             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3918             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3919             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3920             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3921             :         integer(IK)                 , intent(in)                                :: unit
    3922             :         integer(IK)                                                             :: err
    3923             :     end function
    3924             : #endif
    3925             : 
    3926             : #if CK3_ENABLED
    3927             :     module function getErrTableReadUnit_NO_D2_CK3(unit, table, header, sep, roff, iomsg) result(err)
    3928             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3929             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_CK3
    3930             : #endif
    3931             :         use pm_kind, only: CKC => CK3
    3932             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3933             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3934             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3935             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3936             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3937             :         integer(IK)                 , intent(in)                                :: unit
    3938             :         integer(IK)                                                             :: err
    3939             :     end function
    3940             : #endif
    3941             : 
    3942             : #if CK2_ENABLED
    3943             :     module function getErrTableReadUnit_NO_D2_CK2(unit, table, header, sep, roff, iomsg) result(err)
    3944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3945             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_CK2
    3946             : #endif
    3947             :         use pm_kind, only: CKC => CK2
    3948             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3949             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3950             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3951             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3952             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3953             :         integer(IK)                 , intent(in)                                :: unit
    3954             :         integer(IK)                                                             :: err
    3955             :     end function
    3956             : #endif
    3957             : 
    3958             : #if CK1_ENABLED
    3959             :     module function getErrTableReadUnit_NO_D2_CK1(unit, table, header, sep, roff, iomsg) result(err)
    3960             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3961             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_CK1
    3962             : #endif
    3963             :         use pm_kind, only: CKC => CK1
    3964             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    3965             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3966             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3967             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3968             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3969             :         integer(IK)                 , intent(in)                                :: unit
    3970             :         integer(IK)                                                             :: err
    3971             :     end function
    3972             : #endif
    3973             : 
    3974             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3975             : 
    3976             : #if RK5_ENABLED
    3977             :     module function getErrTableReadUnit_NO_D2_RK5(unit, table, header, sep, roff, iomsg) result(err)
    3978             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3979             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_RK5
    3980             : #endif
    3981             :         use pm_kind, only: RKC => RK5
    3982             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3983             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    3984             :         character(*, SK)            , intent(in)                    , optional  :: sep
    3985             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    3986             :         integer(IK)                 , intent(in)                    , optional  :: roff
    3987             :         integer(IK)                 , intent(in)                                :: unit
    3988             :         integer(IK)                                                             :: err
    3989             :     end function
    3990             : #endif
    3991             : 
    3992             : #if RK4_ENABLED
    3993             :     module function getErrTableReadUnit_NO_D2_RK4(unit, table, header, sep, roff, iomsg) result(err)
    3994             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3995             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_RK4
    3996             : #endif
    3997             :         use pm_kind, only: RKC => RK4
    3998             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    3999             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4000             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4001             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4002             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4003             :         integer(IK)                 , intent(in)                                :: unit
    4004             :         integer(IK)                                                             :: err
    4005             :     end function
    4006             : #endif
    4007             : 
    4008             : #if RK3_ENABLED
    4009             :     module function getErrTableReadUnit_NO_D2_RK3(unit, table, header, sep, roff, iomsg) result(err)
    4010             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4011             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_RK3
    4012             : #endif
    4013             :         use pm_kind, only: RKC => RK3
    4014             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    4015             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4016             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4017             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4018             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4019             :         integer(IK)                 , intent(in)                                :: unit
    4020             :         integer(IK)                                                             :: err
    4021             :     end function
    4022             : #endif
    4023             : 
    4024             : #if RK2_ENABLED
    4025             :     module function getErrTableReadUnit_NO_D2_RK2(unit, table, header, sep, roff, iomsg) result(err)
    4026             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4027             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_RK2
    4028             : #endif
    4029             :         use pm_kind, only: RKC => RK2
    4030             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    4031             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4032             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4033             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4034             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4035             :         integer(IK)                 , intent(in)                                :: unit
    4036             :         integer(IK)                                                             :: err
    4037             :     end function
    4038             : #endif
    4039             : 
    4040             : #if RK1_ENABLED
    4041             :     module function getErrTableReadUnit_NO_D2_RK1(unit, table, header, sep, roff, iomsg) result(err)
    4042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4043             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_NO_D2_RK1
    4044             : #endif
    4045             :         use pm_kind, only: RKC => RK1
    4046             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    4047             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4048             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4049             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4050             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4051             :         integer(IK)                 , intent(in)                                :: unit
    4052             :         integer(IK)                                                             :: err
    4053             :     end function
    4054             : #endif
    4055             : 
    4056             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4057             : 
    4058             :     end interface
    4059             : 
    4060             :     ! D1 file TO
    4061             : 
    4062             :     interface getErrTableRead
    4063             : 
    4064             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4065             : 
    4066             : #if SK5_ENABLED
    4067             :     module function getErrTableReadFile_TO_D1_SK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4068             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4069             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_SK5
    4070             : #endif
    4071             :         use pm_kind, only: SKC => SK5
    4072             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4073             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4074             :         character(*, SK)            , intent(in)                                :: file
    4075             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4076             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4077             :         type(trans_type)            , intent(in)                                :: operation
    4078             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4079             :         integer(IK)                                                             :: err
    4080             :     end function
    4081             : #endif
    4082             : 
    4083             : #if SK4_ENABLED
    4084             :     module function getErrTableReadFile_TO_D1_SK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4085             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4086             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_SK4
    4087             : #endif
    4088             :         use pm_kind, only: SKC => SK4
    4089             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4090             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4091             :         character(*, SK)            , intent(in)                                :: file
    4092             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4093             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4094             :         type(trans_type)            , intent(in)                                :: operation
    4095             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4096             :         integer(IK)                                                             :: err
    4097             :     end function
    4098             : #endif
    4099             : 
    4100             : #if SK3_ENABLED
    4101             :     module function getErrTableReadFile_TO_D1_SK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4102             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4103             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_SK3
    4104             : #endif
    4105             :         use pm_kind, only: SKC => SK3
    4106             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4107             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4108             :         character(*, SK)            , intent(in)                                :: file
    4109             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4110             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4111             :         type(trans_type)            , intent(in)                                :: operation
    4112             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4113             :         integer(IK)                                                             :: err
    4114             :     end function
    4115             : #endif
    4116             : 
    4117             : #if SK2_ENABLED
    4118             :     module function getErrTableReadFile_TO_D1_SK2(file, table, operation, header, sep, roff, iomsg) result(err)
    4119             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4120             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_SK2
    4121             : #endif
    4122             :         use pm_kind, only: SKC => SK2
    4123             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4124             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4125             :         character(*, SK)            , intent(in)                                :: file
    4126             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4127             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4128             :         type(trans_type)            , intent(in)                                :: operation
    4129             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4130             :         integer(IK)                                                             :: err
    4131             :     end function
    4132             : #endif
    4133             : 
    4134             : #if SK1_ENABLED
    4135             :     module function getErrTableReadFile_TO_D1_SK1(file, table, operation, header, sep, roff, iomsg) result(err)
    4136             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4137             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_SK1
    4138             : #endif
    4139             :         use pm_kind, only: SKC => SK1
    4140             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4141             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4142             :         character(*, SK)            , intent(in)                                :: file
    4143             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4144             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4145             :         type(trans_type)            , intent(in)                                :: operation
    4146             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4147             :         integer(IK)                                                             :: err
    4148             :     end function
    4149             : #endif
    4150             : 
    4151             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4152             : 
    4153             : #if IK5_ENABLED
    4154             :     module function getErrTableReadFile_TO_D1_IK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4155             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4156             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_IK5
    4157             : #endif
    4158             :         use pm_kind, only: IKC => IK5
    4159             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4160             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4161             :         character(*, SK)            , intent(in)                                :: file
    4162             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4163             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4164             :         type(trans_type)            , intent(in)                                :: operation
    4165             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4166             :         integer(IK)                                                             :: err
    4167             :     end function
    4168             : #endif
    4169             : 
    4170             : #if IK4_ENABLED
    4171             :     module function getErrTableReadFile_TO_D1_IK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4172             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4173             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_IK4
    4174             : #endif
    4175             :         use pm_kind, only: IKC => IK4
    4176             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4177             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4178             :         character(*, SK)            , intent(in)                                :: file
    4179             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4180             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4181             :         type(trans_type)            , intent(in)                                :: operation
    4182             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4183             :         integer(IK)                                                             :: err
    4184             :     end function
    4185             : #endif
    4186             : 
    4187             : #if IK3_ENABLED
    4188             :     module function getErrTableReadFile_TO_D1_IK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4189             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4190             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_IK3
    4191             : #endif
    4192             :         use pm_kind, only: IKC => IK3
    4193             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4194             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4195             :         character(*, SK)            , intent(in)                                :: file
    4196             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4197             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4198             :         type(trans_type)            , intent(in)                                :: operation
    4199             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4200             :         integer(IK)                                                             :: err
    4201             :     end function
    4202             : #endif
    4203             : 
    4204             : #if IK2_ENABLED
    4205             :     module function getErrTableReadFile_TO_D1_IK2(file, table, operation, header, sep, roff, iomsg) result(err)
    4206             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4207             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_IK2
    4208             : #endif
    4209             :         use pm_kind, only: IKC => IK2
    4210             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4211             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4212             :         character(*, SK)            , intent(in)                                :: file
    4213             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4214             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4215             :         type(trans_type)            , intent(in)                                :: operation
    4216             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4217             :         integer(IK)                                                             :: err
    4218             :     end function
    4219             : #endif
    4220             : 
    4221             : #if IK1_ENABLED
    4222             :     module function getErrTableReadFile_TO_D1_IK1(file, table, operation, header, sep, roff, iomsg) result(err)
    4223             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4224             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_IK1
    4225             : #endif
    4226             :         use pm_kind, only: IKC => IK1
    4227             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4228             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4229             :         character(*, SK)            , intent(in)                                :: file
    4230             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4231             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4232             :         type(trans_type)            , intent(in)                                :: operation
    4233             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4234             :         integer(IK)                                                             :: err
    4235             :     end function
    4236             : #endif
    4237             : 
    4238             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4239             : 
    4240             : #if LK5_ENABLED
    4241             :     module function getErrTableReadFile_TO_D1_LK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4242             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4243             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_LK5
    4244             : #endif
    4245             :         use pm_kind, only: LKC => LK5
    4246             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4247             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4248             :         character(*, SK)            , intent(in)                                :: file
    4249             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4250             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4251             :         type(trans_type)            , intent(in)                                :: operation
    4252             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4253             :         integer(IK)                                                             :: err
    4254             :     end function
    4255             : #endif
    4256             : 
    4257             : #if LK4_ENABLED
    4258             :     module function getErrTableReadFile_TO_D1_LK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4259             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4260             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_LK4
    4261             : #endif
    4262             :         use pm_kind, only: LKC => LK4
    4263             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4264             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4265             :         character(*, SK)            , intent(in)                                :: file
    4266             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4267             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4268             :         type(trans_type)            , intent(in)                                :: operation
    4269             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4270             :         integer(IK)                                                             :: err
    4271             :     end function
    4272             : #endif
    4273             : 
    4274             : #if LK3_ENABLED
    4275             :     module function getErrTableReadFile_TO_D1_LK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4276             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4277             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_LK3
    4278             : #endif
    4279             :         use pm_kind, only: LKC => LK3
    4280             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4281             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4282             :         character(*, SK)            , intent(in)                                :: file
    4283             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4284             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4285             :         type(trans_type)            , intent(in)                                :: operation
    4286             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4287             :         integer(IK)                                                             :: err
    4288             :     end function
    4289             : #endif
    4290             : 
    4291             : #if LK2_ENABLED
    4292             :     module function getErrTableReadFile_TO_D1_LK2(file, table, operation, header, sep, roff, iomsg) result(err)
    4293             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4294             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_LK2
    4295             : #endif
    4296             :         use pm_kind, only: LKC => LK2
    4297             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4298             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4299             :         character(*, SK)            , intent(in)                                :: file
    4300             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4301             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4302             :         type(trans_type)            , intent(in)                                :: operation
    4303             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4304             :         integer(IK)                                                             :: err
    4305             :     end function
    4306             : #endif
    4307             : 
    4308             : #if LK1_ENABLED
    4309             :     module function getErrTableReadFile_TO_D1_LK1(file, table, operation, header, sep, roff, iomsg) result(err)
    4310             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4311             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_LK1
    4312             : #endif
    4313             :         use pm_kind, only: LKC => LK1
    4314             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4315             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4316             :         character(*, SK)            , intent(in)                                :: file
    4317             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4318             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4319             :         type(trans_type)            , intent(in)                                :: operation
    4320             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4321             :         integer(IK)                                                             :: err
    4322             :     end function
    4323             : #endif
    4324             : 
    4325             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4326             : 
    4327             : #if CK5_ENABLED
    4328             :     module function getErrTableReadFile_TO_D1_CK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4329             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4330             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_CK5
    4331             : #endif
    4332             :         use pm_kind, only: CKC => CK5
    4333             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4334             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4335             :         character(*, SK)            , intent(in)                                :: file
    4336             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4337             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4338             :         type(trans_type)            , intent(in)                                :: operation
    4339             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4340             :         integer(IK)                                                             :: err
    4341             :     end function
    4342             : #endif
    4343             : 
    4344             : #if CK4_ENABLED
    4345             :     module function getErrTableReadFile_TO_D1_CK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4346             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4347             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_CK4
    4348             : #endif
    4349             :         use pm_kind, only: CKC => CK4
    4350             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4351             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4352             :         character(*, SK)            , intent(in)                                :: file
    4353             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4354             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4355             :         type(trans_type)            , intent(in)                                :: operation
    4356             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4357             :         integer(IK)                                                             :: err
    4358             :     end function
    4359             : #endif
    4360             : 
    4361             : #if CK3_ENABLED
    4362             :     module function getErrTableReadFile_TO_D1_CK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4363             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4364             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_CK3
    4365             : #endif
    4366             :         use pm_kind, only: CKC => CK3
    4367             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4368             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4369             :         character(*, SK)            , intent(in)                                :: file
    4370             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4371             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4372             :         type(trans_type)            , intent(in)                                :: operation
    4373             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4374             :         integer(IK)                                                             :: err
    4375             :     end function
    4376             : #endif
    4377             : 
    4378             : #if CK2_ENABLED
    4379             :     module function getErrTableReadFile_TO_D1_CK2(file, table, operation, header, sep, roff, iomsg) result(err)
    4380             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4381             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_CK2
    4382             : #endif
    4383             :         use pm_kind, only: CKC => CK2
    4384             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4385             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4386             :         character(*, SK)            , intent(in)                                :: file
    4387             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4388             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4389             :         type(trans_type)            , intent(in)                                :: operation
    4390             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4391             :         integer(IK)                                                             :: err
    4392             :     end function
    4393             : #endif
    4394             : 
    4395             : #if CK1_ENABLED
    4396             :     module function getErrTableReadFile_TO_D1_CK1(file, table, operation, header, sep, roff, iomsg) result(err)
    4397             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4398             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_CK1
    4399             : #endif
    4400             :         use pm_kind, only: CKC => CK1
    4401             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4402             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4403             :         character(*, SK)            , intent(in)                                :: file
    4404             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4405             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4406             :         type(trans_type)            , intent(in)                                :: operation
    4407             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4408             :         integer(IK)                                                             :: err
    4409             :     end function
    4410             : #endif
    4411             : 
    4412             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4413             : 
    4414             : #if RK5_ENABLED
    4415             :     module function getErrTableReadFile_TO_D1_RK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4416             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4417             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_RK5
    4418             : #endif
    4419             :         use pm_kind, only: RKC => RK5
    4420             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4421             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4422             :         character(*, SK)            , intent(in)                                :: file
    4423             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4424             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4425             :         type(trans_type)            , intent(in)                                :: operation
    4426             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4427             :         integer(IK)                                                             :: err
    4428             :     end function
    4429             : #endif
    4430             : 
    4431             : #if RK4_ENABLED
    4432             :     module function getErrTableReadFile_TO_D1_RK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4434             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_RK4
    4435             : #endif
    4436             :         use pm_kind, only: RKC => RK4
    4437             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4438             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4439             :         character(*, SK)            , intent(in)                                :: file
    4440             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4441             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4442             :         type(trans_type)            , intent(in)                                :: operation
    4443             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4444             :         integer(IK)                                                             :: err
    4445             :     end function
    4446             : #endif
    4447             : 
    4448             : #if RK3_ENABLED
    4449             :     module function getErrTableReadFile_TO_D1_RK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4450             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4451             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_RK3
    4452             : #endif
    4453             :         use pm_kind, only: RKC => RK3
    4454             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4455             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4456             :         character(*, SK)            , intent(in)                                :: file
    4457             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4458             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4459             :         type(trans_type)            , intent(in)                                :: operation
    4460             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4461             :         integer(IK)                                                             :: err
    4462             :     end function
    4463             : #endif
    4464             : 
    4465             : #if RK2_ENABLED
    4466             :     module function getErrTableReadFile_TO_D1_RK2(file, table, operation, header, sep, roff, iomsg) result(err)
    4467             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4468             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_RK2
    4469             : #endif
    4470             :         use pm_kind, only: RKC => RK2
    4471             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4472             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4473             :         character(*, SK)            , intent(in)                                :: file
    4474             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4475             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4476             :         type(trans_type)            , intent(in)                                :: operation
    4477             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4478             :         integer(IK)                                                             :: err
    4479             :     end function
    4480             : #endif
    4481             : 
    4482             : #if RK1_ENABLED
    4483             :     module function getErrTableReadFile_TO_D1_RK1(file, table, operation, header, sep, roff, iomsg) result(err)
    4484             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4485             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D1_RK1
    4486             : #endif
    4487             :         use pm_kind, only: RKC => RK1
    4488             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4489             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4490             :         character(*, SK)            , intent(in)                                :: file
    4491             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4492             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4493             :         type(trans_type)            , intent(in)                                :: operation
    4494             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4495             :         integer(IK)                                                             :: err
    4496             :     end function
    4497             : #endif
    4498             : 
    4499             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4500             : 
    4501             :     end interface
    4502             : 
    4503             :     ! D1 unit TO
    4504             : 
    4505             :     interface getErrTableRead
    4506             : 
    4507             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4508             : 
    4509             : #if SK5_ENABLED
    4510             :     module function getErrTableReadUnit_TO_D1_SK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    4511             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4512             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_SK5
    4513             : #endif
    4514             :         use pm_kind, only: SKC => SK5
    4515             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4516             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4517             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4518             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4519             :         type(trans_type)            , intent(in)                                :: operation
    4520             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4521             :         integer(IK)                 , intent(in)                                :: unit
    4522             :         integer(IK)                                                             :: err
    4523             :     end function
    4524             : #endif
    4525             : 
    4526             : #if SK4_ENABLED
    4527             :     module function getErrTableReadUnit_TO_D1_SK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    4528             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4529             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_SK4
    4530             : #endif
    4531             :         use pm_kind, only: SKC => SK4
    4532             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4533             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4534             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4535             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4536             :         type(trans_type)            , intent(in)                                :: operation
    4537             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4538             :         integer(IK)                 , intent(in)                                :: unit
    4539             :         integer(IK)                                                             :: err
    4540             :     end function
    4541             : #endif
    4542             : 
    4543             : #if SK3_ENABLED
    4544             :     module function getErrTableReadUnit_TO_D1_SK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    4545             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4546             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_SK3
    4547             : #endif
    4548             :         use pm_kind, only: SKC => SK3
    4549             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4550             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4551             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4552             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4553             :         type(trans_type)            , intent(in)                                :: operation
    4554             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4555             :         integer(IK)                 , intent(in)                                :: unit
    4556             :         integer(IK)                                                             :: err
    4557             :     end function
    4558             : #endif
    4559             : 
    4560             : #if SK2_ENABLED
    4561             :     module function getErrTableReadUnit_TO_D1_SK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    4562             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4563             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_SK2
    4564             : #endif
    4565             :         use pm_kind, only: SKC => SK2
    4566             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4567             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4568             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4569             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4570             :         type(trans_type)            , intent(in)                                :: operation
    4571             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4572             :         integer(IK)                 , intent(in)                                :: unit
    4573             :         integer(IK)                                                             :: err
    4574             :     end function
    4575             : #endif
    4576             : 
    4577             : #if SK1_ENABLED
    4578             :     module function getErrTableReadUnit_TO_D1_SK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    4579             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4580             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_SK1
    4581             : #endif
    4582             :         use pm_kind, only: SKC => SK1
    4583             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:)
    4584             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4585             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4586             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4587             :         type(trans_type)            , intent(in)                                :: operation
    4588             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4589             :         integer(IK)                 , intent(in)                                :: unit
    4590             :         integer(IK)                                                             :: err
    4591             :     end function
    4592             : #endif
    4593             : 
    4594             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4595             : 
    4596             : #if IK5_ENABLED
    4597             :     module function getErrTableReadUnit_TO_D1_IK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    4598             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4599             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_IK5
    4600             : #endif
    4601             :         use pm_kind, only: IKC => IK5
    4602             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4603             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4604             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4605             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4606             :         type(trans_type)            , intent(in)                                :: operation
    4607             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4608             :         integer(IK)                 , intent(in)                                :: unit
    4609             :         integer(IK)                                                             :: err
    4610             :     end function
    4611             : #endif
    4612             : 
    4613             : #if IK4_ENABLED
    4614             :     module function getErrTableReadUnit_TO_D1_IK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    4615             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4616             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_IK4
    4617             : #endif
    4618             :         use pm_kind, only: IKC => IK4
    4619             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4620             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4621             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4622             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4623             :         type(trans_type)            , intent(in)                                :: operation
    4624             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4625             :         integer(IK)                 , intent(in)                                :: unit
    4626             :         integer(IK)                                                             :: err
    4627             :     end function
    4628             : #endif
    4629             : 
    4630             : #if IK3_ENABLED
    4631             :     module function getErrTableReadUnit_TO_D1_IK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    4632             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4633             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_IK3
    4634             : #endif
    4635             :         use pm_kind, only: IKC => IK3
    4636             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4637             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4638             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4639             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4640             :         type(trans_type)            , intent(in)                                :: operation
    4641             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4642             :         integer(IK)                 , intent(in)                                :: unit
    4643             :         integer(IK)                                                             :: err
    4644             :     end function
    4645             : #endif
    4646             : 
    4647             : #if IK2_ENABLED
    4648             :     module function getErrTableReadUnit_TO_D1_IK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    4649             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4650             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_IK2
    4651             : #endif
    4652             :         use pm_kind, only: IKC => IK2
    4653             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4654             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4655             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4656             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4657             :         type(trans_type)            , intent(in)                                :: operation
    4658             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4659             :         integer(IK)                 , intent(in)                                :: unit
    4660             :         integer(IK)                                                             :: err
    4661             :     end function
    4662             : #endif
    4663             : 
    4664             : #if IK1_ENABLED
    4665             :     module function getErrTableReadUnit_TO_D1_IK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    4666             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4667             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_IK1
    4668             : #endif
    4669             :         use pm_kind, only: IKC => IK1
    4670             :         integer(IKC)                , intent(out)   , allocatable               :: table(:)
    4671             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4672             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4673             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4674             :         type(trans_type)            , intent(in)                                :: operation
    4675             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4676             :         integer(IK)                 , intent(in)                                :: unit
    4677             :         integer(IK)                                                             :: err
    4678             :     end function
    4679             : #endif
    4680             : 
    4681             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4682             : 
    4683             : #if LK5_ENABLED
    4684             :     module function getErrTableReadUnit_TO_D1_LK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    4685             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4686             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_LK5
    4687             : #endif
    4688             :         use pm_kind, only: LKC => LK5
    4689             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4690             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4691             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4692             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4693             :         type(trans_type)            , intent(in)                                :: operation
    4694             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4695             :         integer(IK)                 , intent(in)                                :: unit
    4696             :         integer(IK)                                                             :: err
    4697             :     end function
    4698             : #endif
    4699             : 
    4700             : #if LK4_ENABLED
    4701             :     module function getErrTableReadUnit_TO_D1_LK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    4702             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4703             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_LK4
    4704             : #endif
    4705             :         use pm_kind, only: LKC => LK4
    4706             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4707             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4708             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4709             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4710             :         type(trans_type)            , intent(in)                                :: operation
    4711             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4712             :         integer(IK)                 , intent(in)                                :: unit
    4713             :         integer(IK)                                                             :: err
    4714             :     end function
    4715             : #endif
    4716             : 
    4717             : #if LK3_ENABLED
    4718             :     module function getErrTableReadUnit_TO_D1_LK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    4719             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4720             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_LK3
    4721             : #endif
    4722             :         use pm_kind, only: LKC => LK3
    4723             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4724             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4725             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4726             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4727             :         type(trans_type)            , intent(in)                                :: operation
    4728             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4729             :         integer(IK)                 , intent(in)                                :: unit
    4730             :         integer(IK)                                                             :: err
    4731             :     end function
    4732             : #endif
    4733             : 
    4734             : #if LK2_ENABLED
    4735             :     module function getErrTableReadUnit_TO_D1_LK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    4736             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4737             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_LK2
    4738             : #endif
    4739             :         use pm_kind, only: LKC => LK2
    4740             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4741             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4742             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4743             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4744             :         type(trans_type)            , intent(in)                                :: operation
    4745             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4746             :         integer(IK)                 , intent(in)                                :: unit
    4747             :         integer(IK)                                                             :: err
    4748             :     end function
    4749             : #endif
    4750             : 
    4751             : #if LK1_ENABLED
    4752             :     module function getErrTableReadUnit_TO_D1_LK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    4753             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4754             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_LK1
    4755             : #endif
    4756             :         use pm_kind, only: LKC => LK1
    4757             :         logical(LKC)                , intent(out)   , allocatable               :: table(:)
    4758             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4759             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4760             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4761             :         type(trans_type)            , intent(in)                                :: operation
    4762             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4763             :         integer(IK)                 , intent(in)                                :: unit
    4764             :         integer(IK)                                                             :: err
    4765             :     end function
    4766             : #endif
    4767             : 
    4768             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4769             : 
    4770             : #if CK5_ENABLED
    4771             :     module function getErrTableReadUnit_TO_D1_CK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    4772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4773             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_CK5
    4774             : #endif
    4775             :         use pm_kind, only: CKC => CK5
    4776             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4777             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4778             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4779             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4780             :         type(trans_type)            , intent(in)                                :: operation
    4781             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4782             :         integer(IK)                 , intent(in)                                :: unit
    4783             :         integer(IK)                                                             :: err
    4784             :     end function
    4785             : #endif
    4786             : 
    4787             : #if CK4_ENABLED
    4788             :     module function getErrTableReadUnit_TO_D1_CK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    4789             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4790             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_CK4
    4791             : #endif
    4792             :         use pm_kind, only: CKC => CK4
    4793             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4794             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4795             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4796             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4797             :         type(trans_type)            , intent(in)                                :: operation
    4798             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4799             :         integer(IK)                 , intent(in)                                :: unit
    4800             :         integer(IK)                                                             :: err
    4801             :     end function
    4802             : #endif
    4803             : 
    4804             : #if CK3_ENABLED
    4805             :     module function getErrTableReadUnit_TO_D1_CK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    4806             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4807             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_CK3
    4808             : #endif
    4809             :         use pm_kind, only: CKC => CK3
    4810             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4811             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4812             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4813             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4814             :         type(trans_type)            , intent(in)                                :: operation
    4815             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4816             :         integer(IK)                 , intent(in)                                :: unit
    4817             :         integer(IK)                                                             :: err
    4818             :     end function
    4819             : #endif
    4820             : 
    4821             : #if CK2_ENABLED
    4822             :     module function getErrTableReadUnit_TO_D1_CK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    4823             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4824             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_CK2
    4825             : #endif
    4826             :         use pm_kind, only: CKC => CK2
    4827             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4828             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4829             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4830             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4831             :         type(trans_type)            , intent(in)                                :: operation
    4832             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4833             :         integer(IK)                 , intent(in)                                :: unit
    4834             :         integer(IK)                                                             :: err
    4835             :     end function
    4836             : #endif
    4837             : 
    4838             : #if CK1_ENABLED
    4839             :     module function getErrTableReadUnit_TO_D1_CK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    4840             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4841             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_CK1
    4842             : #endif
    4843             :         use pm_kind, only: CKC => CK1
    4844             :         complex(CKC)                , intent(out)   , allocatable               :: table(:)
    4845             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4846             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4847             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4848             :         type(trans_type)            , intent(in)                                :: operation
    4849             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4850             :         integer(IK)                 , intent(in)                                :: unit
    4851             :         integer(IK)                                                             :: err
    4852             :     end function
    4853             : #endif
    4854             : 
    4855             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4856             : 
    4857             : #if RK5_ENABLED
    4858             :     module function getErrTableReadUnit_TO_D1_RK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    4859             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4860             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_RK5
    4861             : #endif
    4862             :         use pm_kind, only: RKC => RK5
    4863             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4864             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4865             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4866             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4867             :         type(trans_type)            , intent(in)                                :: operation
    4868             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4869             :         integer(IK)                 , intent(in)                                :: unit
    4870             :         integer(IK)                                                             :: err
    4871             :     end function
    4872             : #endif
    4873             : 
    4874             : #if RK4_ENABLED
    4875             :     module function getErrTableReadUnit_TO_D1_RK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    4876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4877             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_RK4
    4878             : #endif
    4879             :         use pm_kind, only: RKC => RK4
    4880             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4881             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4882             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4883             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4884             :         type(trans_type)            , intent(in)                                :: operation
    4885             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4886             :         integer(IK)                 , intent(in)                                :: unit
    4887             :         integer(IK)                                                             :: err
    4888             :     end function
    4889             : #endif
    4890             : 
    4891             : #if RK3_ENABLED
    4892             :     module function getErrTableReadUnit_TO_D1_RK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    4893             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4894             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_RK3
    4895             : #endif
    4896             :         use pm_kind, only: RKC => RK3
    4897             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4898             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4899             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4900             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4901             :         type(trans_type)            , intent(in)                                :: operation
    4902             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4903             :         integer(IK)                 , intent(in)                                :: unit
    4904             :         integer(IK)                                                             :: err
    4905             :     end function
    4906             : #endif
    4907             : 
    4908             : #if RK2_ENABLED
    4909             :     module function getErrTableReadUnit_TO_D1_RK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    4910             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4911             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_RK2
    4912             : #endif
    4913             :         use pm_kind, only: RKC => RK2
    4914             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4915             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4916             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4917             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4918             :         type(trans_type)            , intent(in)                                :: operation
    4919             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4920             :         integer(IK)                 , intent(in)                                :: unit
    4921             :         integer(IK)                                                             :: err
    4922             :     end function
    4923             : #endif
    4924             : 
    4925             : #if RK1_ENABLED
    4926             :     module function getErrTableReadUnit_TO_D1_RK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    4927             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4928             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D1_RK1
    4929             : #endif
    4930             :         use pm_kind, only: RKC => RK1
    4931             :         real(RKC)                   , intent(out)   , allocatable               :: table(:)
    4932             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4933             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4934             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4935             :         type(trans_type)            , intent(in)                                :: operation
    4936             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4937             :         integer(IK)                 , intent(in)                                :: unit
    4938             :         integer(IK)                                                             :: err
    4939             :     end function
    4940             : #endif
    4941             : 
    4942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4943             : 
    4944             :     end interface
    4945             : 
    4946             :     ! D2 file TO
    4947             : 
    4948             :     interface getErrTableRead
    4949             : 
    4950             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4951             : 
    4952             : #if SK5_ENABLED
    4953             :     module function getErrTableReadFile_TO_D2_SK5(file, table, operation, header, sep, roff, iomsg) result(err)
    4954             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4955             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_SK5
    4956             : #endif
    4957             :         use pm_kind, only: SKC => SK5
    4958             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    4959             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4960             :         character(*, SK)            , intent(in)                                :: file
    4961             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4962             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4963             :         type(trans_type)            , intent(in)                                :: operation
    4964             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4965             :         integer(IK)                                                             :: err
    4966             :     end function
    4967             : #endif
    4968             : 
    4969             : #if SK4_ENABLED
    4970             :     module function getErrTableReadFile_TO_D2_SK4(file, table, operation, header, sep, roff, iomsg) result(err)
    4971             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4972             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_SK4
    4973             : #endif
    4974             :         use pm_kind, only: SKC => SK4
    4975             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    4976             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4977             :         character(*, SK)            , intent(in)                                :: file
    4978             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4979             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4980             :         type(trans_type)            , intent(in)                                :: operation
    4981             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4982             :         integer(IK)                                                             :: err
    4983             :     end function
    4984             : #endif
    4985             : 
    4986             : #if SK3_ENABLED
    4987             :     module function getErrTableReadFile_TO_D2_SK3(file, table, operation, header, sep, roff, iomsg) result(err)
    4988             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4989             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_SK3
    4990             : #endif
    4991             :         use pm_kind, only: SKC => SK3
    4992             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    4993             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    4994             :         character(*, SK)            , intent(in)                                :: file
    4995             :         character(*, SK)            , intent(in)                    , optional  :: sep
    4996             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    4997             :         type(trans_type)            , intent(in)                                :: operation
    4998             :         integer(IK)                 , intent(in)                    , optional  :: roff
    4999             :         integer(IK)                                                             :: err
    5000             :     end function
    5001             : #endif
    5002             : 
    5003             : #if SK2_ENABLED
    5004             :     module function getErrTableReadFile_TO_D2_SK2(file, table, operation, header, sep, roff, iomsg) result(err)
    5005             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5006             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_SK2
    5007             : #endif
    5008             :         use pm_kind, only: SKC => SK2
    5009             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5010             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5011             :         character(*, SK)            , intent(in)                                :: file
    5012             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5013             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5014             :         type(trans_type)            , intent(in)                                :: operation
    5015             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5016             :         integer(IK)                                                             :: err
    5017             :     end function
    5018             : #endif
    5019             : 
    5020             : #if SK1_ENABLED
    5021             :     module function getErrTableReadFile_TO_D2_SK1(file, table, operation, header, sep, roff, iomsg) result(err)
    5022             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5023             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_SK1
    5024             : #endif
    5025             :         use pm_kind, only: SKC => SK1
    5026             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5027             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5028             :         character(*, SK)            , intent(in)                                :: file
    5029             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5030             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5031             :         type(trans_type)            , intent(in)                                :: operation
    5032             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5033             :         integer(IK)                                                             :: err
    5034             :     end function
    5035             : #endif
    5036             : 
    5037             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5038             : 
    5039             : #if IK5_ENABLED
    5040             :     module function getErrTableReadFile_TO_D2_IK5(file, table, operation, header, sep, roff, iomsg) result(err)
    5041             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5042             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_IK5
    5043             : #endif
    5044             :         use pm_kind, only: IKC => IK5
    5045             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5046             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5047             :         character(*, SK)            , intent(in)                                :: file
    5048             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5049             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5050             :         type(trans_type)            , intent(in)                                :: operation
    5051             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5052             :         integer(IK)                                                             :: err
    5053             :     end function
    5054             : #endif
    5055             : 
    5056             : #if IK4_ENABLED
    5057             :     module function getErrTableReadFile_TO_D2_IK4(file, table, operation, header, sep, roff, iomsg) result(err)
    5058             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5059             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_IK4
    5060             : #endif
    5061             :         use pm_kind, only: IKC => IK4
    5062             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5063             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5064             :         character(*, SK)            , intent(in)                                :: file
    5065             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5066             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5067             :         type(trans_type)            , intent(in)                                :: operation
    5068             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5069             :         integer(IK)                                                             :: err
    5070             :     end function
    5071             : #endif
    5072             : 
    5073             : #if IK3_ENABLED
    5074             :     module function getErrTableReadFile_TO_D2_IK3(file, table, operation, header, sep, roff, iomsg) result(err)
    5075             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5076             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_IK3
    5077             : #endif
    5078             :         use pm_kind, only: IKC => IK3
    5079             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5080             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5081             :         character(*, SK)            , intent(in)                                :: file
    5082             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5083             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5084             :         type(trans_type)            , intent(in)                                :: operation
    5085             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5086             :         integer(IK)                                                             :: err
    5087             :     end function
    5088             : #endif
    5089             : 
    5090             : #if IK2_ENABLED
    5091             :     module function getErrTableReadFile_TO_D2_IK2(file, table, operation, header, sep, roff, iomsg) result(err)
    5092             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5093             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_IK2
    5094             : #endif
    5095             :         use pm_kind, only: IKC => IK2
    5096             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5097             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5098             :         character(*, SK)            , intent(in)                                :: file
    5099             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5100             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5101             :         type(trans_type)            , intent(in)                                :: operation
    5102             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5103             :         integer(IK)                                                             :: err
    5104             :     end function
    5105             : #endif
    5106             : 
    5107             : #if IK1_ENABLED
    5108             :     module function getErrTableReadFile_TO_D2_IK1(file, table, operation, header, sep, roff, iomsg) result(err)
    5109             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5110             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_IK1
    5111             : #endif
    5112             :         use pm_kind, only: IKC => IK1
    5113             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5114             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5115             :         character(*, SK)            , intent(in)                                :: file
    5116             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5117             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5118             :         type(trans_type)            , intent(in)                                :: operation
    5119             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5120             :         integer(IK)                                                             :: err
    5121             :     end function
    5122             : #endif
    5123             : 
    5124             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5125             : 
    5126             : #if LK5_ENABLED
    5127             :     module function getErrTableReadFile_TO_D2_LK5(file, table, operation, header, sep, roff, iomsg) result(err)
    5128             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5129             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_LK5
    5130             : #endif
    5131             :         use pm_kind, only: LKC => LK5
    5132             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5133             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5134             :         character(*, SK)            , intent(in)                                :: file
    5135             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5136             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5137             :         type(trans_type)            , intent(in)                                :: operation
    5138             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5139             :         integer(IK)                                                             :: err
    5140             :     end function
    5141             : #endif
    5142             : 
    5143             : #if LK4_ENABLED
    5144             :     module function getErrTableReadFile_TO_D2_LK4(file, table, operation, header, sep, roff, iomsg) result(err)
    5145             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5146             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_LK4
    5147             : #endif
    5148             :         use pm_kind, only: LKC => LK4
    5149             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5150             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5151             :         character(*, SK)            , intent(in)                                :: file
    5152             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5153             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5154             :         type(trans_type)            , intent(in)                                :: operation
    5155             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5156             :         integer(IK)                                                             :: err
    5157             :     end function
    5158             : #endif
    5159             : 
    5160             : #if LK3_ENABLED
    5161             :     module function getErrTableReadFile_TO_D2_LK3(file, table, operation, header, sep, roff, iomsg) result(err)
    5162             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5163             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_LK3
    5164             : #endif
    5165             :         use pm_kind, only: LKC => LK3
    5166             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5167             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5168             :         character(*, SK)            , intent(in)                                :: file
    5169             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5170             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5171             :         type(trans_type)            , intent(in)                                :: operation
    5172             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5173             :         integer(IK)                                                             :: err
    5174             :     end function
    5175             : #endif
    5176             : 
    5177             : #if LK2_ENABLED
    5178             :     module function getErrTableReadFile_TO_D2_LK2(file, table, operation, header, sep, roff, iomsg) result(err)
    5179             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5180             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_LK2
    5181             : #endif
    5182             :         use pm_kind, only: LKC => LK2
    5183             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5184             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5185             :         character(*, SK)            , intent(in)                                :: file
    5186             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5187             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5188             :         type(trans_type)            , intent(in)                                :: operation
    5189             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5190             :         integer(IK)                                                             :: err
    5191             :     end function
    5192             : #endif
    5193             : 
    5194             : #if LK1_ENABLED
    5195             :     module function getErrTableReadFile_TO_D2_LK1(file, table, operation, header, sep, roff, iomsg) result(err)
    5196             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5197             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_LK1
    5198             : #endif
    5199             :         use pm_kind, only: LKC => LK1
    5200             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5201             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5202             :         character(*, SK)            , intent(in)                                :: file
    5203             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5204             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5205             :         type(trans_type)            , intent(in)                                :: operation
    5206             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5207             :         integer(IK)                                                             :: err
    5208             :     end function
    5209             : #endif
    5210             : 
    5211             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5212             : 
    5213             : #if CK5_ENABLED
    5214             :     module function getErrTableReadFile_TO_D2_CK5(file, table, operation, header, sep, roff, iomsg) result(err)
    5215             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5216             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_CK5
    5217             : #endif
    5218             :         use pm_kind, only: CKC => CK5
    5219             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5220             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5221             :         character(*, SK)            , intent(in)                                :: file
    5222             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5223             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5224             :         type(trans_type)            , intent(in)                                :: operation
    5225             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5226             :         integer(IK)                                                             :: err
    5227             :     end function
    5228             : #endif
    5229             : 
    5230             : #if CK4_ENABLED
    5231             :     module function getErrTableReadFile_TO_D2_CK4(file, table, operation, header, sep, roff, iomsg) result(err)
    5232             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5233             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_CK4
    5234             : #endif
    5235             :         use pm_kind, only: CKC => CK4
    5236             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5237             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5238             :         character(*, SK)            , intent(in)                                :: file
    5239             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5240             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5241             :         type(trans_type)            , intent(in)                                :: operation
    5242             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5243             :         integer(IK)                                                             :: err
    5244             :     end function
    5245             : #endif
    5246             : 
    5247             : #if CK3_ENABLED
    5248             :     module function getErrTableReadFile_TO_D2_CK3(file, table, operation, header, sep, roff, iomsg) result(err)
    5249             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5250             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_CK3
    5251             : #endif
    5252             :         use pm_kind, only: CKC => CK3
    5253             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5254             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5255             :         character(*, SK)            , intent(in)                                :: file
    5256             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5257             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5258             :         type(trans_type)            , intent(in)                                :: operation
    5259             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5260             :         integer(IK)                                                             :: err
    5261             :     end function
    5262             : #endif
    5263             : 
    5264             : #if CK2_ENABLED
    5265             :     module function getErrTableReadFile_TO_D2_CK2(file, table, operation, header, sep, roff, iomsg) result(err)
    5266             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5267             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_CK2
    5268             : #endif
    5269             :         use pm_kind, only: CKC => CK2
    5270             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5271             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5272             :         character(*, SK)            , intent(in)                                :: file
    5273             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5274             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5275             :         type(trans_type)            , intent(in)                                :: operation
    5276             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5277             :         integer(IK)                                                             :: err
    5278             :     end function
    5279             : #endif
    5280             : 
    5281             : #if CK1_ENABLED
    5282             :     module function getErrTableReadFile_TO_D2_CK1(file, table, operation, header, sep, roff, iomsg) result(err)
    5283             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5284             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_CK1
    5285             : #endif
    5286             :         use pm_kind, only: CKC => CK1
    5287             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5288             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5289             :         character(*, SK)            , intent(in)                                :: file
    5290             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5291             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5292             :         type(trans_type)            , intent(in)                                :: operation
    5293             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5294             :         integer(IK)                                                             :: err
    5295             :     end function
    5296             : #endif
    5297             : 
    5298             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5299             : 
    5300             : #if RK5_ENABLED
    5301             :     module function getErrTableReadFile_TO_D2_RK5(file, table, operation, header, sep, roff, iomsg) result(err)
    5302             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5303             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_RK5
    5304             : #endif
    5305             :         use pm_kind, only: RKC => RK5
    5306             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5307             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5308             :         character(*, SK)            , intent(in)                                :: file
    5309             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5310             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5311             :         type(trans_type)            , intent(in)                                :: operation
    5312             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5313             :         integer(IK)                                                             :: err
    5314             :     end function
    5315             : #endif
    5316             : 
    5317             : #if RK4_ENABLED
    5318             :     module function getErrTableReadFile_TO_D2_RK4(file, table, operation, header, sep, roff, iomsg) result(err)
    5319             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5320             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_RK4
    5321             : #endif
    5322             :         use pm_kind, only: RKC => RK4
    5323             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5324             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5325             :         character(*, SK)            , intent(in)                                :: file
    5326             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5327             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5328             :         type(trans_type)            , intent(in)                                :: operation
    5329             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5330             :         integer(IK)                                                             :: err
    5331             :     end function
    5332             : #endif
    5333             : 
    5334             : #if RK3_ENABLED
    5335             :     module function getErrTableReadFile_TO_D2_RK3(file, table, operation, header, sep, roff, iomsg) result(err)
    5336             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5337             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_RK3
    5338             : #endif
    5339             :         use pm_kind, only: RKC => RK3
    5340             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5341             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5342             :         character(*, SK)            , intent(in)                                :: file
    5343             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5344             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5345             :         type(trans_type)            , intent(in)                                :: operation
    5346             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5347             :         integer(IK)                                                             :: err
    5348             :     end function
    5349             : #endif
    5350             : 
    5351             : #if RK2_ENABLED
    5352             :     module function getErrTableReadFile_TO_D2_RK2(file, table, operation, header, sep, roff, iomsg) result(err)
    5353             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5354             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_RK2
    5355             : #endif
    5356             :         use pm_kind, only: RKC => RK2
    5357             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5358             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5359             :         character(*, SK)            , intent(in)                                :: file
    5360             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5361             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5362             :         type(trans_type)            , intent(in)                                :: operation
    5363             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5364             :         integer(IK)                                                             :: err
    5365             :     end function
    5366             : #endif
    5367             : 
    5368             : #if RK1_ENABLED
    5369             :     module function getErrTableReadFile_TO_D2_RK1(file, table, operation, header, sep, roff, iomsg) result(err)
    5370             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5371             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadFile_TO_D2_RK1
    5372             : #endif
    5373             :         use pm_kind, only: RKC => RK1
    5374             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5375             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5376             :         character(*, SK)            , intent(in)                                :: file
    5377             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5378             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5379             :         type(trans_type)            , intent(in)                                :: operation
    5380             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5381             :         integer(IK)                                                             :: err
    5382             :     end function
    5383             : #endif
    5384             : 
    5385             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5386             : 
    5387             :     end interface
    5388             : 
    5389             :     ! D2 unit TO
    5390             : 
    5391             :     interface getErrTableRead
    5392             : 
    5393             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5394             : 
    5395             : #if SK5_ENABLED
    5396             :     module function getErrTableReadUnit_TO_D2_SK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    5397             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5398             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_SK5
    5399             : #endif
    5400             :         use pm_kind, only: SKC => SK5
    5401             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5402             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5403             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5404             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5405             :         type(trans_type)            , intent(in)                                :: operation
    5406             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5407             :         integer(IK)                 , intent(in)                                :: unit
    5408             :         integer(IK)                                                             :: err
    5409             :     end function
    5410             : #endif
    5411             : 
    5412             : #if SK4_ENABLED
    5413             :     module function getErrTableReadUnit_TO_D2_SK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    5414             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5415             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_SK4
    5416             : #endif
    5417             :         use pm_kind, only: SKC => SK4
    5418             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5419             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5420             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5421             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5422             :         type(trans_type)            , intent(in)                                :: operation
    5423             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5424             :         integer(IK)                 , intent(in)                                :: unit
    5425             :         integer(IK)                                                             :: err
    5426             :     end function
    5427             : #endif
    5428             : 
    5429             : #if SK3_ENABLED
    5430             :     module function getErrTableReadUnit_TO_D2_SK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    5431             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5432             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_SK3
    5433             : #endif
    5434             :         use pm_kind, only: SKC => SK3
    5435             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5436             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5437             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5438             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5439             :         type(trans_type)            , intent(in)                                :: operation
    5440             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5441             :         integer(IK)                 , intent(in)                                :: unit
    5442             :         integer(IK)                                                             :: err
    5443             :     end function
    5444             : #endif
    5445             : 
    5446             : #if SK2_ENABLED
    5447             :     module function getErrTableReadUnit_TO_D2_SK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    5448             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5449             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_SK2
    5450             : #endif
    5451             :         use pm_kind, only: SKC => SK2
    5452             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5453             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5454             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5455             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5456             :         type(trans_type)            , intent(in)                                :: operation
    5457             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5458             :         integer(IK)                 , intent(in)                                :: unit
    5459             :         integer(IK)                                                             :: err
    5460             :     end function
    5461             : #endif
    5462             : 
    5463             : #if SK1_ENABLED
    5464             :     module function getErrTableReadUnit_TO_D2_SK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    5465             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5466             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_SK1
    5467             : #endif
    5468             :         use pm_kind, only: SKC => SK1
    5469             :         character(*,SKC)            , intent(out)   , allocatable               :: table(:,:)
    5470             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5471             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5472             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5473             :         type(trans_type)            , intent(in)                                :: operation
    5474             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5475             :         integer(IK)                 , intent(in)                                :: unit
    5476             :         integer(IK)                                                             :: err
    5477             :     end function
    5478             : #endif
    5479             : 
    5480             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5481             : 
    5482             : #if IK5_ENABLED
    5483             :     module function getErrTableReadUnit_TO_D2_IK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    5484             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5485             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_IK5
    5486             : #endif
    5487             :         use pm_kind, only: IKC => IK5
    5488             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5489             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5490             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5491             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5492             :         type(trans_type)            , intent(in)                                :: operation
    5493             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5494             :         integer(IK)                 , intent(in)                                :: unit
    5495             :         integer(IK)                                                             :: err
    5496             :     end function
    5497             : #endif
    5498             : 
    5499             : #if IK4_ENABLED
    5500             :     module function getErrTableReadUnit_TO_D2_IK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    5501             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5502             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_IK4
    5503             : #endif
    5504             :         use pm_kind, only: IKC => IK4
    5505             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5506             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5507             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5508             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5509             :         type(trans_type)            , intent(in)                                :: operation
    5510             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5511             :         integer(IK)                 , intent(in)                                :: unit
    5512             :         integer(IK)                                                             :: err
    5513             :     end function
    5514             : #endif
    5515             : 
    5516             : #if IK3_ENABLED
    5517             :     module function getErrTableReadUnit_TO_D2_IK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    5518             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5519             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_IK3
    5520             : #endif
    5521             :         use pm_kind, only: IKC => IK3
    5522             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5523             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5524             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5525             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5526             :         type(trans_type)            , intent(in)                                :: operation
    5527             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5528             :         integer(IK)                 , intent(in)                                :: unit
    5529             :         integer(IK)                                                             :: err
    5530             :     end function
    5531             : #endif
    5532             : 
    5533             : #if IK2_ENABLED
    5534             :     module function getErrTableReadUnit_TO_D2_IK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    5535             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5536             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_IK2
    5537             : #endif
    5538             :         use pm_kind, only: IKC => IK2
    5539             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5540             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5541             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5542             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5543             :         type(trans_type)            , intent(in)                                :: operation
    5544             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5545             :         integer(IK)                 , intent(in)                                :: unit
    5546             :         integer(IK)                                                             :: err
    5547             :     end function
    5548             : #endif
    5549             : 
    5550             : #if IK1_ENABLED
    5551             :     module function getErrTableReadUnit_TO_D2_IK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    5552             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5553             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_IK1
    5554             : #endif
    5555             :         use pm_kind, only: IKC => IK1
    5556             :         integer(IKC)                , intent(out)   , allocatable               :: table(:,:)
    5557             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5558             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5559             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5560             :         type(trans_type)            , intent(in)                                :: operation
    5561             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5562             :         integer(IK)                 , intent(in)                                :: unit
    5563             :         integer(IK)                                                             :: err
    5564             :     end function
    5565             : #endif
    5566             : 
    5567             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5568             : 
    5569             : #if LK5_ENABLED
    5570             :     module function getErrTableReadUnit_TO_D2_LK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    5571             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5572             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_LK5
    5573             : #endif
    5574             :         use pm_kind, only: LKC => LK5
    5575             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5576             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5577             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5578             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5579             :         type(trans_type)            , intent(in)                                :: operation
    5580             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5581             :         integer(IK)                 , intent(in)                                :: unit
    5582             :         integer(IK)                                                             :: err
    5583             :     end function
    5584             : #endif
    5585             : 
    5586             : #if LK4_ENABLED
    5587             :     module function getErrTableReadUnit_TO_D2_LK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    5588             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5589             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_LK4
    5590             : #endif
    5591             :         use pm_kind, only: LKC => LK4
    5592             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5593             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5594             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5595             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5596             :         type(trans_type)            , intent(in)                                :: operation
    5597             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5598             :         integer(IK)                 , intent(in)                                :: unit
    5599             :         integer(IK)                                                             :: err
    5600             :     end function
    5601             : #endif
    5602             : 
    5603             : #if LK3_ENABLED
    5604             :     module function getErrTableReadUnit_TO_D2_LK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    5605             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5606             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_LK3
    5607             : #endif
    5608             :         use pm_kind, only: LKC => LK3
    5609             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5610             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5611             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5612             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5613             :         type(trans_type)            , intent(in)                                :: operation
    5614             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5615             :         integer(IK)                 , intent(in)                                :: unit
    5616             :         integer(IK)                                                             :: err
    5617             :     end function
    5618             : #endif
    5619             : 
    5620             : #if LK2_ENABLED
    5621             :     module function getErrTableReadUnit_TO_D2_LK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    5622             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5623             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_LK2
    5624             : #endif
    5625             :         use pm_kind, only: LKC => LK2
    5626             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5627             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5628             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5629             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5630             :         type(trans_type)            , intent(in)                                :: operation
    5631             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5632             :         integer(IK)                 , intent(in)                                :: unit
    5633             :         integer(IK)                                                             :: err
    5634             :     end function
    5635             : #endif
    5636             : 
    5637             : #if LK1_ENABLED
    5638             :     module function getErrTableReadUnit_TO_D2_LK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    5639             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5640             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_LK1
    5641             : #endif
    5642             :         use pm_kind, only: LKC => LK1
    5643             :         logical(LKC)                , intent(out)   , allocatable               :: table(:,:)
    5644             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5645             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5646             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5647             :         type(trans_type)            , intent(in)                                :: operation
    5648             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5649             :         integer(IK)                 , intent(in)                                :: unit
    5650             :         integer(IK)                                                             :: err
    5651             :     end function
    5652             : #endif
    5653             : 
    5654             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5655             : 
    5656             : #if CK5_ENABLED
    5657             :     module function getErrTableReadUnit_TO_D2_CK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    5658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5659             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_CK5
    5660             : #endif
    5661             :         use pm_kind, only: CKC => CK5
    5662             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5663             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5664             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5665             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5666             :         type(trans_type)            , intent(in)                                :: operation
    5667             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5668             :         integer(IK)                 , intent(in)                                :: unit
    5669             :         integer(IK)                                                             :: err
    5670             :     end function
    5671             : #endif
    5672             : 
    5673             : #if CK4_ENABLED
    5674             :     module function getErrTableReadUnit_TO_D2_CK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    5675             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5676             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_CK4
    5677             : #endif
    5678             :         use pm_kind, only: CKC => CK4
    5679             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5680             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5681             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5682             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5683             :         type(trans_type)            , intent(in)                                :: operation
    5684             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5685             :         integer(IK)                 , intent(in)                                :: unit
    5686             :         integer(IK)                                                             :: err
    5687             :     end function
    5688             : #endif
    5689             : 
    5690             : #if CK3_ENABLED
    5691             :     module function getErrTableReadUnit_TO_D2_CK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    5692             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5693             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_CK3
    5694             : #endif
    5695             :         use pm_kind, only: CKC => CK3
    5696             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5697             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5698             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5699             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5700             :         type(trans_type)            , intent(in)                                :: operation
    5701             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5702             :         integer(IK)                 , intent(in)                                :: unit
    5703             :         integer(IK)                                                             :: err
    5704             :     end function
    5705             : #endif
    5706             : 
    5707             : #if CK2_ENABLED
    5708             :     module function getErrTableReadUnit_TO_D2_CK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    5709             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5710             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_CK2
    5711             : #endif
    5712             :         use pm_kind, only: CKC => CK2
    5713             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5714             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5715             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5716             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5717             :         type(trans_type)            , intent(in)                                :: operation
    5718             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5719             :         integer(IK)                 , intent(in)                                :: unit
    5720             :         integer(IK)                                                             :: err
    5721             :     end function
    5722             : #endif
    5723             : 
    5724             : #if CK1_ENABLED
    5725             :     module function getErrTableReadUnit_TO_D2_CK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    5726             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5727             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_CK1
    5728             : #endif
    5729             :         use pm_kind, only: CKC => CK1
    5730             :         complex(CKC)                , intent(out)   , allocatable               :: table(:,:)
    5731             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5732             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5733             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5734             :         type(trans_type)            , intent(in)                                :: operation
    5735             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5736             :         integer(IK)                 , intent(in)                                :: unit
    5737             :         integer(IK)                                                             :: err
    5738             :     end function
    5739             : #endif
    5740             : 
    5741             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5742             : 
    5743             : #if RK5_ENABLED
    5744             :     module function getErrTableReadUnit_TO_D2_RK5(unit, table, operation, header, sep, roff, iomsg) result(err)
    5745             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5746             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_RK5
    5747             : #endif
    5748             :         use pm_kind, only: RKC => RK5
    5749             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5750             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5751             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5752             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5753             :         type(trans_type)            , intent(in)                                :: operation
    5754             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5755             :         integer(IK)                 , intent(in)                                :: unit
    5756             :         integer(IK)                                                             :: err
    5757             :     end function
    5758             : #endif
    5759             : 
    5760             : #if RK4_ENABLED
    5761             :     module function getErrTableReadUnit_TO_D2_RK4(unit, table, operation, header, sep, roff, iomsg) result(err)
    5762             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5763             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_RK4
    5764             : #endif
    5765             :         use pm_kind, only: RKC => RK4
    5766             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5767             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5768             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5769             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5770             :         type(trans_type)            , intent(in)                                :: operation
    5771             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5772             :         integer(IK)                 , intent(in)                                :: unit
    5773             :         integer(IK)                                                             :: err
    5774             :     end function
    5775             : #endif
    5776             : 
    5777             : #if RK3_ENABLED
    5778             :     module function getErrTableReadUnit_TO_D2_RK3(unit, table, operation, header, sep, roff, iomsg) result(err)
    5779             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5780             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_RK3
    5781             : #endif
    5782             :         use pm_kind, only: RKC => RK3
    5783             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5784             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5785             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5786             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5787             :         type(trans_type)            , intent(in)                                :: operation
    5788             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5789             :         integer(IK)                 , intent(in)                                :: unit
    5790             :         integer(IK)                                                             :: err
    5791             :     end function
    5792             : #endif
    5793             : 
    5794             : #if RK2_ENABLED
    5795             :     module function getErrTableReadUnit_TO_D2_RK2(unit, table, operation, header, sep, roff, iomsg) result(err)
    5796             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5797             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_RK2
    5798             : #endif
    5799             :         use pm_kind, only: RKC => RK2
    5800             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5801             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5802             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5803             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5804             :         type(trans_type)            , intent(in)                                :: operation
    5805             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5806             :         integer(IK)                 , intent(in)                                :: unit
    5807             :         integer(IK)                                                             :: err
    5808             :     end function
    5809             : #endif
    5810             : 
    5811             : #if RK1_ENABLED
    5812             :     module function getErrTableReadUnit_TO_D2_RK1(unit, table, operation, header, sep, roff, iomsg) result(err)
    5813             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5814             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableReadUnit_TO_D2_RK1
    5815             : #endif
    5816             :         use pm_kind, only: RKC => RK1
    5817             :         real(RKC)                   , intent(out)   , allocatable               :: table(:,:)
    5818             :         character(:, SK)            , intent(out)   , allocatable   , optional  :: header
    5819             :         character(*, SK)            , intent(in)                    , optional  :: sep
    5820             :         character(*, SK)            , intent(inout)                 , optional  :: iomsg
    5821             :         type(trans_type)            , intent(in)                                :: operation
    5822             :         integer(IK)                 , intent(in)                    , optional  :: roff
    5823             :         integer(IK)                 , intent(in)                                :: unit
    5824             :         integer(IK)                                                             :: err
    5825             :     end function
    5826             : #endif
    5827             : 
    5828             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5829             : 
    5830             :     end interface
    5831             : 
    5832             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5833             : 
    5834             :     !>  \brief
    5835             :     !>  Generate and return the `iostat` code resulting from writing the input `table` of rank `1` or `2` to the specified output.<br>
    5836             :     !>
    5837             :     !>  \param[in]      file        :   The input scalar `character` of default kind \SK representing the path to the external file to which the `table` must be written.<br>
    5838             :     !>                                  If the specified `file` does not exist, it will be created.<br>
    5839             :     !>                                  If it exists or is already connected, it will repositioned before the beginning of its first record.<br>
    5840             :     !>                                  (**optional**. It must be present **only if** the input argument `unit` is missing.)
    5841             :     !>  \param[in]      unit        :   The input scalar `integer` of default kind \IK representing the preconnected (opened) file unit to which the table must be written.<br>
    5842             :     !>                                  The writing will begin from the current file position plus the input `roff`.<br>
    5843             :     !>                                  To write to stdout, `use iso_fortran_env, only: unit => output_unit`.<br>
    5844             :     !>                                  (**optional**. It must be present **only if** the input argument `file` is missing.)
    5845             :     !>  \param[in]      table       :   The input array of shape `(:)` or `(:,:)` of either <br>
    5846             :     !>                                  <ol>
    5847             :     !>                                      <li>    type `character` of kind \SKALL, or <br>
    5848             :     !>                                      <li>    type `integer` of kind \IKALL, or <br>
    5849             :     !>                                      <li>    type `logical` of kind \LKALL, or <br>
    5850             :     !>                                      <li>    type `complex` of kind \CKALL, or <br>
    5851             :     !>                                      <li>    type `real` of kind \RKALL, <br>
    5852             :     !>                                  </ol>
    5853             :     !>                                  representing the data `table` to write to the specified output.<br>
    5854             :     !>                                  By default a `table` of rank `1` is considered to be a single column unless
    5855             :     !>                                  the input optional argument `operation` is set to [trans](@ref pm_matrixTrans::trans) in which case `table` is considered as a row of fields.<br>
    5856             :     !>                                  By default, if the input argument `operation` is missing, each column of `table` corresponds to each column of data in the file.<br>
    5857             :     !>  \param[in]      operation   :   The input scalar constant that can be:<br>
    5858             :     !>                                  <ol>
    5859             :     !>                                      <li>    the scalar constant [trans](@ref pm_matrixTrans::trans) or a scalar object of type [trans_type](@ref pm_matrixTrans::trans_type),
    5860             :     !>                                              implying that the input `table` must be transposed before being written to the output file.<br>
    5861             :     !>                                              This option is particularly useful for outputting `table` that is in Fortran column-major
    5862             :     !>                                              storage mode but has to be written in regular row-major format to the output.<br>
    5863             :     !>                                  </ol>
    5864             :     !>                                  (**optional**, default = [nothing](@ref pm_array::nothing), implying that the `table` must be output as is.)
    5865             :     !>  \param[in]      header      :   The input scalar `character` of default kind \SK of arbitrary length type parameter containing the table header.<br>
    5866             :     !>                                  It is recommended to delimit the header fields with the same input separator `sep`
    5867             :     !>                                  to this generic interface to minimize difficulties with reading the table in the future.<br>
    5868             :     !>                                  (**optional**, If missing, no header will be written to the specified output.
    5869             :     !>                                  The generic interface [setSplit()](@ref pm_arraySplit::setSplit) can be used to readily generate a array of header field containers split at by the user-specified separator.)
    5870             :     !>  \param[in]      sep         :   The input scalar `character` of default kind \SK of arbitrary length type parameter
    5871             :     !>                                  containing the separator of the fields of each of row of the `table` in the output file.<br>
    5872             :     !>                                  (**optional**, default = `,` corresponding to an output CSV file.)
    5873             :     !>  \param[in]      deliml      :   The input scalar of type `character` of default kind \SK, of arbitrary length type parameter,
    5874             :     !>                                  containing the left-delimiter to be used for delimiting (quoting) the left-side of the elements of `table` in the output file.<br>
    5875             :     !>                                  The symbols \f$\texttt{"}\f$ and \f$\texttt{'}\f$ are the two most popular quotation mark choices that are recognized by both CSV and Fortran list-directed output forms.<br>
    5876             :     !>                                  Unless there is a good reason, the use of delimiters for `table` of type other than `character` is not advised.<br>
    5877             :     !>                                  (**optional**. default = `delimr` or if missing, no left-delimiter will be used.)
    5878             :     !>  \param[in]      delimr      :   The input scalar of type `character` of default kind \SK, of arbitrary length type parameter,
    5879             :     !>                                  containing the right-delimiter to be used for delimiting (quoting) the right-side of the elements of `table` in the output file.<br>
    5880             :     !>                                  The symbols \f$\texttt{"}\f$ and \f$\texttt{'}\f$ are the two most popular quotation mark choices that are recognized by both CSV and Fortran list-directed output forms.<br>
    5881             :     !>                                  Unless there is a good reason, the use of delimiters for `table` of type other than `character` is not advised.<br>
    5882             :     !>                                  (**optional**. default = `deliml` or if missing, no right-delimiter will be used.)
    5883             :     !>  \param[in]      roff        :   The input scalar `integer` of default kind \IK representing the row offset, that is, the number of rows
    5884             :     !>                                  in the external `file` or `unit` to skip before beginning to read the output variables `header` and `table`.<br>
    5885             :     !>                                  (**optional**. default = `0`)
    5886             :     !>  \param[inout]   iomsg       :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    5887             :     !>                                  A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    5888             :     !>                                  (**optional**. If missing, no information other than the output error code `err` will be returned.)
    5889             :     !>
    5890             :     !>  \return
    5891             :     !>  `err`                       :   The output scalar `integer` of default kind \IK containing the `iostat`
    5892             :     !>                                  error code returned by the Fortran intrinsic `write()` statement.<br>
    5893             :     !>                                  On return, `err` is set to `0` **if and only if** the `table` is successfully written to the output.<br>
    5894             :     !>                                  See the Fortran standard and specific compiler documentations for the possible meanings of the output `err`.<br>
    5895             :     !>
    5896             :     !>  \interface{getErrTableWrite}
    5897             :     !>  \code{.F90}
    5898             :     !>
    5899             :     !>      use pm_io, only: getErrTableWrite
    5900             :     !>      use pm_kind, only: IK
    5901             :     !>      integer(IK) :: err
    5902             :     !>
    5903             :     !>      err = getErrTableWrite(unit, table(1..2)           , header = header, sep = sep, deliml, delimr = deliml, delimr = delimr, roff = roff, iomsg = iomsg)
    5904             :     !>      err = getErrTableWrite(file, table(1..2)           , header = header, sep = sep, deliml, delimr = deliml, delimr = delimr, roff = roff, iomsg = iomsg)
    5905             :     !>      err = getErrTableWrite(unit, table(1..2), operation, header = header, sep = sep, deliml, delimr = deliml, delimr = delimr, roff = roff, iomsg = iomsg)
    5906             :     !>      err = getErrTableWrite(file, table(1..2), operation, header = header, sep = sep, deliml, delimr = deliml, delimr = delimr, roff = roff, iomsg = iomsg)
    5907             :     !>      !
    5908             :     !>  \endcode
    5909             :     !>
    5910             :     !>  \warning
    5911             :     !>  The condition `isOpen(unit)` must hold for the corresponding input arguments.<br>
    5912             :     !>  \vericon
    5913             :     !>
    5914             :     !>  \impure
    5915             :     !>
    5916             :     !>  \see
    5917             :     !>  [getRecordFrom](@ref pm_io::getRecordFrom)<br>
    5918             :     !>  [setRecordFrom](@ref pm_io::setRecordFrom)<br>
    5919             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    5920             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    5921             :     !>  [getErrTableRead](@ref pm_io::getErrTableRead)<br>
    5922             :     !>  [getErrTableWrite](@ref pm_io::getErrTableWrite)<br>
    5923             :     !>
    5924             :     !>  \example{getErrTableWrite}
    5925             :     !>  \include{lineno} example/pm_io/getErrTableWrite/main.F90
    5926             :     !>  \compilef{getErrTableWrite}
    5927             :     !>  \output{getErrTableWrite}
    5928             :     !>  \include{lineno} example/pm_io/getErrTableWrite/main.out.F90
    5929             :     !>
    5930             :     !>  \test
    5931             :     !>  [test_pm_io](@ref test_pm_io)
    5932             :     !>
    5933             :     !>  \finmain{getErrTableWrite}
    5934             :     !>
    5935             :     !>  \author
    5936             :     !>  \AmirShahmoradi, September 1, 2017, 12:00 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    5937             : 
    5938             :     ! D1 file NO
    5939             : 
    5940             :     interface getErrTableWrite
    5941             : 
    5942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5943             : 
    5944             : #if SK5_ENABLED
    5945             :     module function getErrTableWriteFile_NO_D1_SK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    5946             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5947             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_SK5
    5948             : #endif
    5949             :         use pm_kind, only: SKC => SK5
    5950             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    5951             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    5952             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    5953             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    5954             :         integer(IK)                 , intent(in)    , optional      :: roff
    5955             :         integer(IK)                                                 :: err
    5956             :     end function
    5957             : #endif
    5958             : 
    5959             : #if SK4_ENABLED
    5960             :     module function getErrTableWriteFile_NO_D1_SK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    5961             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5962             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_SK4
    5963             : #endif
    5964             :         use pm_kind, only: SKC => SK4
    5965             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    5966             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    5967             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    5968             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    5969             :         integer(IK)                 , intent(in)    , optional      :: roff
    5970             :         integer(IK)                                                 :: err
    5971             :     end function
    5972             : #endif
    5973             : 
    5974             : #if SK3_ENABLED
    5975             :     module function getErrTableWriteFile_NO_D1_SK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    5976             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5977             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_SK3
    5978             : #endif
    5979             :         use pm_kind, only: SKC => SK3
    5980             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    5981             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    5982             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    5983             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    5984             :         integer(IK)                 , intent(in)    , optional      :: roff
    5985             :         integer(IK)                                                 :: err
    5986             :     end function
    5987             : #endif
    5988             : 
    5989             : #if SK2_ENABLED
    5990             :     module function getErrTableWriteFile_NO_D1_SK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    5991             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5992             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_SK2
    5993             : #endif
    5994             :         use pm_kind, only: SKC => SK2
    5995             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    5996             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    5997             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    5998             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    5999             :         integer(IK)                 , intent(in)    , optional      :: roff
    6000             :         integer(IK)                                                 :: err
    6001             :     end function
    6002             : #endif
    6003             : 
    6004             : #if SK1_ENABLED
    6005             :     module function getErrTableWriteFile_NO_D1_SK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6006             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6007             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_SK1
    6008             : #endif
    6009             :         use pm_kind, only: SKC => SK1
    6010             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6011             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6012             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6013             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6014             :         integer(IK)                 , intent(in)    , optional      :: roff
    6015             :         integer(IK)                                                 :: err
    6016             :     end function
    6017             : #endif
    6018             : 
    6019             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6020             : 
    6021             : #if IK5_ENABLED
    6022             :     module function getErrTableWriteFile_NO_D1_IK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6023             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6024             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_IK5
    6025             : #endif
    6026             :         use pm_kind, only: IKC => IK5
    6027             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6028             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6029             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6030             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6031             :         integer(IK)                 , intent(in)    , optional      :: roff
    6032             :         integer(IK)                                                 :: err
    6033             :     end function
    6034             : #endif
    6035             : 
    6036             : #if IK4_ENABLED
    6037             :     module function getErrTableWriteFile_NO_D1_IK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6038             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6039             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_IK4
    6040             : #endif
    6041             :         use pm_kind, only: IKC => IK4
    6042             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6043             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6044             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6045             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6046             :         integer(IK)                 , intent(in)    , optional      :: roff
    6047             :         integer(IK)                                                 :: err
    6048             :     end function
    6049             : #endif
    6050             : 
    6051             : #if IK3_ENABLED
    6052             :     module function getErrTableWriteFile_NO_D1_IK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6053             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6054             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_IK3
    6055             : #endif
    6056             :         use pm_kind, only: IKC => IK3
    6057             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6058             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6059             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6060             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6061             :         integer(IK)                 , intent(in)    , optional      :: roff
    6062             :         integer(IK)                                                 :: err
    6063             :     end function
    6064             : #endif
    6065             : 
    6066             : #if IK2_ENABLED
    6067             :     module function getErrTableWriteFile_NO_D1_IK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6068             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6069             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_IK2
    6070             : #endif
    6071             :         use pm_kind, only: IKC => IK2
    6072             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6073             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6074             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6075             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6076             :         integer(IK)                 , intent(in)    , optional      :: roff
    6077             :         integer(IK)                                                 :: err
    6078             :     end function
    6079             : #endif
    6080             : 
    6081             : #if IK1_ENABLED
    6082             :     module function getErrTableWriteFile_NO_D1_IK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6083             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6084             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_IK1
    6085             : #endif
    6086             :         use pm_kind, only: IKC => IK1
    6087             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6088             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6089             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6090             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6091             :         integer(IK)                 , intent(in)    , optional      :: roff
    6092             :         integer(IK)                                                 :: err
    6093             :     end function
    6094             : #endif
    6095             : 
    6096             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6097             : 
    6098             : #if LK5_ENABLED
    6099             :     module function getErrTableWriteFile_NO_D1_LK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6100             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6101             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_LK5
    6102             : #endif
    6103             :         use pm_kind, only: LKC => LK5
    6104             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6105             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6106             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6107             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6108             :         integer(IK)                 , intent(in)    , optional      :: roff
    6109             :         integer(IK)                                                 :: err
    6110             :     end function
    6111             : #endif
    6112             : 
    6113             : #if LK4_ENABLED
    6114             :     module function getErrTableWriteFile_NO_D1_LK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6115             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6116             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_LK4
    6117             : #endif
    6118             :         use pm_kind, only: LKC => LK4
    6119             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6120             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6121             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6122             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6123             :         integer(IK)                 , intent(in)    , optional      :: roff
    6124             :         integer(IK)                                                 :: err
    6125             :     end function
    6126             : #endif
    6127             : 
    6128             : #if LK3_ENABLED
    6129             :     module function getErrTableWriteFile_NO_D1_LK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6130             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6131             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_LK3
    6132             : #endif
    6133             :         use pm_kind, only: LKC => LK3
    6134             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6135             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6136             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6137             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6138             :         integer(IK)                 , intent(in)    , optional      :: roff
    6139             :         integer(IK)                                                 :: err
    6140             :     end function
    6141             : #endif
    6142             : 
    6143             : #if LK2_ENABLED
    6144             :     module function getErrTableWriteFile_NO_D1_LK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6145             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6146             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_LK2
    6147             : #endif
    6148             :         use pm_kind, only: LKC => LK2
    6149             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6150             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6151             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6152             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6153             :         integer(IK)                 , intent(in)    , optional      :: roff
    6154             :         integer(IK)                                                 :: err
    6155             :     end function
    6156             : #endif
    6157             : 
    6158             : #if LK1_ENABLED
    6159             :     module function getErrTableWriteFile_NO_D1_LK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6160             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6161             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_LK1
    6162             : #endif
    6163             :         use pm_kind, only: LKC => LK1
    6164             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6165             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6166             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6167             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6168             :         integer(IK)                 , intent(in)    , optional      :: roff
    6169             :         integer(IK)                                                 :: err
    6170             :     end function
    6171             : #endif
    6172             : 
    6173             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6174             : 
    6175             : #if CK5_ENABLED
    6176             :     module function getErrTableWriteFile_NO_D1_CK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6178             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_CK5
    6179             : #endif
    6180             :         use pm_kind, only: CKC => CK5
    6181             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6182             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6183             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6184             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6185             :         integer(IK)                 , intent(in)    , optional      :: roff
    6186             :         integer(IK)                                                 :: err
    6187             :     end function
    6188             : #endif
    6189             : 
    6190             : #if CK4_ENABLED
    6191             :     module function getErrTableWriteFile_NO_D1_CK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6192             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6193             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_CK4
    6194             : #endif
    6195             :         use pm_kind, only: CKC => CK4
    6196             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6197             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6198             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6199             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6200             :         integer(IK)                 , intent(in)    , optional      :: roff
    6201             :         integer(IK)                                                 :: err
    6202             :     end function
    6203             : #endif
    6204             : 
    6205             : #if CK3_ENABLED
    6206             :     module function getErrTableWriteFile_NO_D1_CK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6207             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6208             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_CK3
    6209             : #endif
    6210             :         use pm_kind, only: CKC => CK3
    6211             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6212             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6213             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6214             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6215             :         integer(IK)                 , intent(in)    , optional      :: roff
    6216             :         integer(IK)                                                 :: err
    6217             :     end function
    6218             : #endif
    6219             : 
    6220             : #if CK2_ENABLED
    6221             :     module function getErrTableWriteFile_NO_D1_CK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6222             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6223             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_CK2
    6224             : #endif
    6225             :         use pm_kind, only: CKC => CK2
    6226             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6227             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6228             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6229             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6230             :         integer(IK)                 , intent(in)    , optional      :: roff
    6231             :         integer(IK)                                                 :: err
    6232             :     end function
    6233             : #endif
    6234             : 
    6235             : #if CK1_ENABLED
    6236             :     module function getErrTableWriteFile_NO_D1_CK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6237             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6238             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_CK1
    6239             : #endif
    6240             :         use pm_kind, only: CKC => CK1
    6241             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6242             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6243             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6244             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6245             :         integer(IK)                 , intent(in)    , optional      :: roff
    6246             :         integer(IK)                                                 :: err
    6247             :     end function
    6248             : #endif
    6249             : 
    6250             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6251             : 
    6252             : #if RK5_ENABLED
    6253             :     module function getErrTableWriteFile_NO_D1_RK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6254             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6255             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_RK5
    6256             : #endif
    6257             :         use pm_kind, only: RKC => RK5
    6258             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6259             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6260             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6261             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6262             :         integer(IK)                 , intent(in)    , optional      :: roff
    6263             :         integer(IK)                                                 :: err
    6264             :     end function
    6265             : #endif
    6266             : 
    6267             : #if RK4_ENABLED
    6268             :     module function getErrTableWriteFile_NO_D1_RK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6269             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6270             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_RK4
    6271             : #endif
    6272             :         use pm_kind, only: RKC => RK4
    6273             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6274             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6275             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6276             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6277             :         integer(IK)                 , intent(in)    , optional      :: roff
    6278             :         integer(IK)                                                 :: err
    6279             :     end function
    6280             : #endif
    6281             : 
    6282             : #if RK3_ENABLED
    6283             :     module function getErrTableWriteFile_NO_D1_RK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6284             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6285             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_RK3
    6286             : #endif
    6287             :         use pm_kind, only: RKC => RK3
    6288             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6289             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6290             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6291             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6292             :         integer(IK)                 , intent(in)    , optional      :: roff
    6293             :         integer(IK)                                                 :: err
    6294             :     end function
    6295             : #endif
    6296             : 
    6297             : #if RK2_ENABLED
    6298             :     module function getErrTableWriteFile_NO_D1_RK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6299             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6300             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_RK2
    6301             : #endif
    6302             :         use pm_kind, only: RKC => RK2
    6303             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6304             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6305             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6306             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6307             :         integer(IK)                 , intent(in)    , optional      :: roff
    6308             :         integer(IK)                                                 :: err
    6309             :     end function
    6310             : #endif
    6311             : 
    6312             : #if RK1_ENABLED
    6313             :     module function getErrTableWriteFile_NO_D1_RK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6315             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D1_RK1
    6316             : #endif
    6317             :         use pm_kind, only: RKC => RK1
    6318             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6319             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6320             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6321             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6322             :         integer(IK)                 , intent(in)    , optional      :: roff
    6323             :         integer(IK)                                                 :: err
    6324             :     end function
    6325             : #endif
    6326             : 
    6327             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6328             : 
    6329             :     end interface
    6330             : 
    6331             :     ! D1 unit NO
    6332             : 
    6333             :     interface getErrTableWrite
    6334             : 
    6335             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6336             : 
    6337             : #if SK5_ENABLED
    6338             :     module function getErrTableWriteUnit_NO_D1_SK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6339             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6340             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_SK5
    6341             : #endif
    6342             :         use pm_kind, only: SKC => SK5
    6343             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6344             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6345             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6346             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6347             :         integer(IK)                 , intent(in)    , optional      :: roff
    6348             :         integer(IK)                 , intent(in)                    :: unit
    6349             :         integer(IK)                                                 :: err
    6350             :     end function
    6351             : #endif
    6352             : 
    6353             : #if SK4_ENABLED
    6354             :     module function getErrTableWriteUnit_NO_D1_SK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6355             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6356             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_SK4
    6357             : #endif
    6358             :         use pm_kind, only: SKC => SK4
    6359             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6360             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6361             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6362             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6363             :         integer(IK)                 , intent(in)    , optional      :: roff
    6364             :         integer(IK)                 , intent(in)                    :: unit
    6365             :         integer(IK)                                                 :: err
    6366             :     end function
    6367             : #endif
    6368             : 
    6369             : #if SK3_ENABLED
    6370             :     module function getErrTableWriteUnit_NO_D1_SK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6371             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6372             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_SK3
    6373             : #endif
    6374             :         use pm_kind, only: SKC => SK3
    6375             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6376             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6377             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6378             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6379             :         integer(IK)                 , intent(in)    , optional      :: roff
    6380             :         integer(IK)                 , intent(in)                    :: unit
    6381             :         integer(IK)                                                 :: err
    6382             :     end function
    6383             : #endif
    6384             : 
    6385             : #if SK2_ENABLED
    6386             :     module function getErrTableWriteUnit_NO_D1_SK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6387             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6388             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_SK2
    6389             : #endif
    6390             :         use pm_kind, only: SKC => SK2
    6391             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6392             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6393             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6394             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6395             :         integer(IK)                 , intent(in)    , optional      :: roff
    6396             :         integer(IK)                 , intent(in)                    :: unit
    6397             :         integer(IK)                                                 :: err
    6398             :     end function
    6399             : #endif
    6400             : 
    6401             : #if SK1_ENABLED
    6402             :     module function getErrTableWriteUnit_NO_D1_SK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6403             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6404             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_SK1
    6405             : #endif
    6406             :         use pm_kind, only: SKC => SK1
    6407             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    6408             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6409             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6410             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6411             :         integer(IK)                 , intent(in)    , optional      :: roff
    6412             :         integer(IK)                 , intent(in)                    :: unit
    6413             :         integer(IK)                                                 :: err
    6414             :     end function
    6415             : #endif
    6416             : 
    6417             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6418             : 
    6419             : #if IK5_ENABLED
    6420             :     module function getErrTableWriteUnit_NO_D1_IK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6421             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6422             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_IK5
    6423             : #endif
    6424             :         use pm_kind, only: IKC => IK5
    6425             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6426             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6427             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6428             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6429             :         integer(IK)                 , intent(in)    , optional      :: roff
    6430             :         integer(IK)                 , intent(in)                    :: unit
    6431             :         integer(IK)                                                 :: err
    6432             :     end function
    6433             : #endif
    6434             : 
    6435             : #if IK4_ENABLED
    6436             :     module function getErrTableWriteUnit_NO_D1_IK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6437             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6438             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_IK4
    6439             : #endif
    6440             :         use pm_kind, only: IKC => IK4
    6441             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6442             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6443             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6444             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6445             :         integer(IK)                 , intent(in)    , optional      :: roff
    6446             :         integer(IK)                 , intent(in)                    :: unit
    6447             :         integer(IK)                                                 :: err
    6448             :     end function
    6449             : #endif
    6450             : 
    6451             : #if IK3_ENABLED
    6452             :     module function getErrTableWriteUnit_NO_D1_IK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6453             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6454             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_IK3
    6455             : #endif
    6456             :         use pm_kind, only: IKC => IK3
    6457             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6458             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6459             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6460             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6461             :         integer(IK)                 , intent(in)    , optional      :: roff
    6462             :         integer(IK)                 , intent(in)                    :: unit
    6463             :         integer(IK)                                                 :: err
    6464             :     end function
    6465             : #endif
    6466             : 
    6467             : #if IK2_ENABLED
    6468             :     module function getErrTableWriteUnit_NO_D1_IK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6469             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6470             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_IK2
    6471             : #endif
    6472             :         use pm_kind, only: IKC => IK2
    6473             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6474             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6475             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6476             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6477             :         integer(IK)                 , intent(in)    , optional      :: roff
    6478             :         integer(IK)                 , intent(in)                    :: unit
    6479             :         integer(IK)                                                 :: err
    6480             :     end function
    6481             : #endif
    6482             : 
    6483             : #if IK1_ENABLED
    6484             :     module function getErrTableWriteUnit_NO_D1_IK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6485             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6486             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_IK1
    6487             : #endif
    6488             :         use pm_kind, only: IKC => IK1
    6489             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    6490             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6491             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6492             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6493             :         integer(IK)                 , intent(in)    , optional      :: roff
    6494             :         integer(IK)                 , intent(in)                    :: unit
    6495             :         integer(IK)                                                 :: err
    6496             :     end function
    6497             : #endif
    6498             : 
    6499             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6500             : 
    6501             : #if LK5_ENABLED
    6502             :     module function getErrTableWriteUnit_NO_D1_LK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6503             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6504             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_LK5
    6505             : #endif
    6506             :         use pm_kind, only: LKC => LK5
    6507             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6508             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6509             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6510             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6511             :         integer(IK)                 , intent(in)    , optional      :: roff
    6512             :         integer(IK)                 , intent(in)                    :: unit
    6513             :         integer(IK)                                                 :: err
    6514             :     end function
    6515             : #endif
    6516             : 
    6517             : #if LK4_ENABLED
    6518             :     module function getErrTableWriteUnit_NO_D1_LK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6519             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6520             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_LK4
    6521             : #endif
    6522             :         use pm_kind, only: LKC => LK4
    6523             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6524             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6525             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6526             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6527             :         integer(IK)                 , intent(in)    , optional      :: roff
    6528             :         integer(IK)                 , intent(in)                    :: unit
    6529             :         integer(IK)                                                 :: err
    6530             :     end function
    6531             : #endif
    6532             : 
    6533             : #if LK3_ENABLED
    6534             :     module function getErrTableWriteUnit_NO_D1_LK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6535             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6536             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_LK3
    6537             : #endif
    6538             :         use pm_kind, only: LKC => LK3
    6539             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6540             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6541             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6542             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6543             :         integer(IK)                 , intent(in)    , optional      :: roff
    6544             :         integer(IK)                 , intent(in)                    :: unit
    6545             :         integer(IK)                                                 :: err
    6546             :     end function
    6547             : #endif
    6548             : 
    6549             : #if LK2_ENABLED
    6550             :     module function getErrTableWriteUnit_NO_D1_LK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6551             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6552             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_LK2
    6553             : #endif
    6554             :         use pm_kind, only: LKC => LK2
    6555             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6556             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6557             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6558             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6559             :         integer(IK)                 , intent(in)    , optional      :: roff
    6560             :         integer(IK)                 , intent(in)                    :: unit
    6561             :         integer(IK)                                                 :: err
    6562             :     end function
    6563             : #endif
    6564             : 
    6565             : #if LK1_ENABLED
    6566             :     module function getErrTableWriteUnit_NO_D1_LK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6567             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6568             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_LK1
    6569             : #endif
    6570             :         use pm_kind, only: LKC => LK1
    6571             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    6572             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6573             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6574             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6575             :         integer(IK)                 , intent(in)    , optional      :: roff
    6576             :         integer(IK)                 , intent(in)                    :: unit
    6577             :         integer(IK)                                                 :: err
    6578             :     end function
    6579             : #endif
    6580             : 
    6581             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6582             : 
    6583             : #if CK5_ENABLED
    6584             :     module function getErrTableWriteUnit_NO_D1_CK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6585             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6586             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_CK5
    6587             : #endif
    6588             :         use pm_kind, only: CKC => CK5
    6589             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6590             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6591             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6592             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6593             :         integer(IK)                 , intent(in)    , optional      :: roff
    6594             :         integer(IK)                 , intent(in)                    :: unit
    6595             :         integer(IK)                                                 :: err
    6596             :     end function
    6597             : #endif
    6598             : 
    6599             : #if CK4_ENABLED
    6600             :     module function getErrTableWriteUnit_NO_D1_CK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6601             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6602             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_CK4
    6603             : #endif
    6604             :         use pm_kind, only: CKC => CK4
    6605             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6606             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6607             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6608             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6609             :         integer(IK)                 , intent(in)    , optional      :: roff
    6610             :         integer(IK)                 , intent(in)                    :: unit
    6611             :         integer(IK)                                                 :: err
    6612             :     end function
    6613             : #endif
    6614             : 
    6615             : #if CK3_ENABLED
    6616             :     module function getErrTableWriteUnit_NO_D1_CK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6617             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6618             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_CK3
    6619             : #endif
    6620             :         use pm_kind, only: CKC => CK3
    6621             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6622             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6623             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6624             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6625             :         integer(IK)                 , intent(in)    , optional      :: roff
    6626             :         integer(IK)                 , intent(in)                    :: unit
    6627             :         integer(IK)                                                 :: err
    6628             :     end function
    6629             : #endif
    6630             : 
    6631             : #if CK2_ENABLED
    6632             :     module function getErrTableWriteUnit_NO_D1_CK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6633             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6634             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_CK2
    6635             : #endif
    6636             :         use pm_kind, only: CKC => CK2
    6637             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6638             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6639             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6640             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6641             :         integer(IK)                 , intent(in)    , optional      :: roff
    6642             :         integer(IK)                 , intent(in)                    :: unit
    6643             :         integer(IK)                                                 :: err
    6644             :     end function
    6645             : #endif
    6646             : 
    6647             : #if CK1_ENABLED
    6648             :     module function getErrTableWriteUnit_NO_D1_CK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6649             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6650             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_CK1
    6651             : #endif
    6652             :         use pm_kind, only: CKC => CK1
    6653             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    6654             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6655             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6656             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6657             :         integer(IK)                 , intent(in)    , optional      :: roff
    6658             :         integer(IK)                 , intent(in)                    :: unit
    6659             :         integer(IK)                                                 :: err
    6660             :     end function
    6661             : #endif
    6662             : 
    6663             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6664             : 
    6665             : #if RK5_ENABLED
    6666             :     module function getErrTableWriteUnit_NO_D1_RK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6667             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6668             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_RK5
    6669             : #endif
    6670             :         use pm_kind, only: RKC => RK5
    6671             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6672             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6673             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6674             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6675             :         integer(IK)                 , intent(in)    , optional      :: roff
    6676             :         integer(IK)                 , intent(in)                    :: unit
    6677             :         integer(IK)                                                 :: err
    6678             :     end function
    6679             : #endif
    6680             : 
    6681             : #if RK4_ENABLED
    6682             :     module function getErrTableWriteUnit_NO_D1_RK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6684             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_RK4
    6685             : #endif
    6686             :         use pm_kind, only: RKC => RK4
    6687             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6688             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6689             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6690             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6691             :         integer(IK)                 , intent(in)    , optional      :: roff
    6692             :         integer(IK)                 , intent(in)                    :: unit
    6693             :         integer(IK)                                                 :: err
    6694             :     end function
    6695             : #endif
    6696             : 
    6697             : #if RK3_ENABLED
    6698             :     module function getErrTableWriteUnit_NO_D1_RK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6699             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6700             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_RK3
    6701             : #endif
    6702             :         use pm_kind, only: RKC => RK3
    6703             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6704             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6705             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6706             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6707             :         integer(IK)                 , intent(in)    , optional      :: roff
    6708             :         integer(IK)                 , intent(in)                    :: unit
    6709             :         integer(IK)                                                 :: err
    6710             :     end function
    6711             : #endif
    6712             : 
    6713             : #if RK2_ENABLED
    6714             :     module function getErrTableWriteUnit_NO_D1_RK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6715             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6716             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_RK2
    6717             : #endif
    6718             :         use pm_kind, only: RKC => RK2
    6719             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6720             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6721             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6722             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6723             :         integer(IK)                 , intent(in)    , optional      :: roff
    6724             :         integer(IK)                 , intent(in)                    :: unit
    6725             :         integer(IK)                                                 :: err
    6726             :     end function
    6727             : #endif
    6728             : 
    6729             : #if RK1_ENABLED
    6730             :     module function getErrTableWriteUnit_NO_D1_RK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6731             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6732             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D1_RK1
    6733             : #endif
    6734             :         use pm_kind, only: RKC => RK1
    6735             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    6736             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    6737             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6738             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6739             :         integer(IK)                 , intent(in)    , optional      :: roff
    6740             :         integer(IK)                 , intent(in)                    :: unit
    6741             :         integer(IK)                                                 :: err
    6742             :     end function
    6743             : #endif
    6744             : 
    6745             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6746             : 
    6747             :     end interface
    6748             : 
    6749             :     ! D2 file NO
    6750             : 
    6751             :     interface getErrTableWrite
    6752             : 
    6753             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6754             : 
    6755             : #if SK5_ENABLED
    6756             :     module function getErrTableWriteFile_NO_D2_SK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6757             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6758             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_SK5
    6759             : #endif
    6760             :         use pm_kind, only: SKC => SK5
    6761             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    6762             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6763             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6764             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6765             :         integer(IK)                 , intent(in)    , optional      :: roff
    6766             :         integer(IK)                                                 :: err
    6767             :     end function
    6768             : #endif
    6769             : 
    6770             : #if SK4_ENABLED
    6771             :     module function getErrTableWriteFile_NO_D2_SK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6773             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_SK4
    6774             : #endif
    6775             :         use pm_kind, only: SKC => SK4
    6776             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    6777             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6778             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6779             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6780             :         integer(IK)                 , intent(in)    , optional      :: roff
    6781             :         integer(IK)                                                 :: err
    6782             :     end function
    6783             : #endif
    6784             : 
    6785             : #if SK3_ENABLED
    6786             :     module function getErrTableWriteFile_NO_D2_SK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6787             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6788             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_SK3
    6789             : #endif
    6790             :         use pm_kind, only: SKC => SK3
    6791             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    6792             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6793             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6794             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6795             :         integer(IK)                 , intent(in)    , optional      :: roff
    6796             :         integer(IK)                                                 :: err
    6797             :     end function
    6798             : #endif
    6799             : 
    6800             : #if SK2_ENABLED
    6801             :     module function getErrTableWriteFile_NO_D2_SK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6802             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6803             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_SK2
    6804             : #endif
    6805             :         use pm_kind, only: SKC => SK2
    6806             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    6807             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6808             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6809             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6810             :         integer(IK)                 , intent(in)    , optional      :: roff
    6811             :         integer(IK)                                                 :: err
    6812             :     end function
    6813             : #endif
    6814             : 
    6815             : #if SK1_ENABLED
    6816             :     module function getErrTableWriteFile_NO_D2_SK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6817             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6818             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_SK1
    6819             : #endif
    6820             :         use pm_kind, only: SKC => SK1
    6821             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    6822             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6823             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6824             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6825             :         integer(IK)                 , intent(in)    , optional      :: roff
    6826             :         integer(IK)                                                 :: err
    6827             :     end function
    6828             : #endif
    6829             : 
    6830             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6831             : 
    6832             : #if IK5_ENABLED
    6833             :     module function getErrTableWriteFile_NO_D2_IK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6834             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6835             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_IK5
    6836             : #endif
    6837             :         use pm_kind, only: IKC => IK5
    6838             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    6839             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6840             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6841             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6842             :         integer(IK)                 , intent(in)    , optional      :: roff
    6843             :         integer(IK)                                                 :: err
    6844             :     end function
    6845             : #endif
    6846             : 
    6847             : #if IK4_ENABLED
    6848             :     module function getErrTableWriteFile_NO_D2_IK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6849             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6850             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_IK4
    6851             : #endif
    6852             :         use pm_kind, only: IKC => IK4
    6853             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    6854             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6855             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6856             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6857             :         integer(IK)                 , intent(in)    , optional      :: roff
    6858             :         integer(IK)                                                 :: err
    6859             :     end function
    6860             : #endif
    6861             : 
    6862             : #if IK3_ENABLED
    6863             :     module function getErrTableWriteFile_NO_D2_IK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6864             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6865             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_IK3
    6866             : #endif
    6867             :         use pm_kind, only: IKC => IK3
    6868             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    6869             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6870             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6871             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6872             :         integer(IK)                 , intent(in)    , optional      :: roff
    6873             :         integer(IK)                                                 :: err
    6874             :     end function
    6875             : #endif
    6876             : 
    6877             : #if IK2_ENABLED
    6878             :     module function getErrTableWriteFile_NO_D2_IK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6879             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6880             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_IK2
    6881             : #endif
    6882             :         use pm_kind, only: IKC => IK2
    6883             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    6884             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6885             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6886             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6887             :         integer(IK)                 , intent(in)    , optional      :: roff
    6888             :         integer(IK)                                                 :: err
    6889             :     end function
    6890             : #endif
    6891             : 
    6892             : #if IK1_ENABLED
    6893             :     module function getErrTableWriteFile_NO_D2_IK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6894             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6895             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_IK1
    6896             : #endif
    6897             :         use pm_kind, only: IKC => IK1
    6898             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    6899             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6900             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6901             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6902             :         integer(IK)                 , intent(in)    , optional      :: roff
    6903             :         integer(IK)                                                 :: err
    6904             :     end function
    6905             : #endif
    6906             : 
    6907             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6908             : 
    6909             : #if LK5_ENABLED
    6910             :     module function getErrTableWriteFile_NO_D2_LK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6911             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6912             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_LK5
    6913             : #endif
    6914             :         use pm_kind, only: LKC => LK5
    6915             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    6916             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6917             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6918             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6919             :         integer(IK)                 , intent(in)    , optional      :: roff
    6920             :         integer(IK)                                                 :: err
    6921             :     end function
    6922             : #endif
    6923             : 
    6924             : #if LK4_ENABLED
    6925             :     module function getErrTableWriteFile_NO_D2_LK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6926             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6927             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_LK4
    6928             : #endif
    6929             :         use pm_kind, only: LKC => LK4
    6930             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    6931             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6932             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6933             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6934             :         integer(IK)                 , intent(in)    , optional      :: roff
    6935             :         integer(IK)                                                 :: err
    6936             :     end function
    6937             : #endif
    6938             : 
    6939             : #if LK3_ENABLED
    6940             :     module function getErrTableWriteFile_NO_D2_LK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6941             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6942             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_LK3
    6943             : #endif
    6944             :         use pm_kind, only: LKC => LK3
    6945             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    6946             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6947             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6948             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6949             :         integer(IK)                 , intent(in)    , optional      :: roff
    6950             :         integer(IK)                                                 :: err
    6951             :     end function
    6952             : #endif
    6953             : 
    6954             : #if LK2_ENABLED
    6955             :     module function getErrTableWriteFile_NO_D2_LK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6956             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6957             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_LK2
    6958             : #endif
    6959             :         use pm_kind, only: LKC => LK2
    6960             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    6961             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6962             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6963             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6964             :         integer(IK)                 , intent(in)    , optional      :: roff
    6965             :         integer(IK)                                                 :: err
    6966             :     end function
    6967             : #endif
    6968             : 
    6969             : #if LK1_ENABLED
    6970             :     module function getErrTableWriteFile_NO_D2_LK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6971             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6972             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_LK1
    6973             : #endif
    6974             :         use pm_kind, only: LKC => LK1
    6975             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    6976             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6977             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6978             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6979             :         integer(IK)                 , intent(in)    , optional      :: roff
    6980             :         integer(IK)                                                 :: err
    6981             :     end function
    6982             : #endif
    6983             : 
    6984             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6985             : 
    6986             : #if CK5_ENABLED
    6987             :     module function getErrTableWriteFile_NO_D2_CK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    6988             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6989             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_CK5
    6990             : #endif
    6991             :         use pm_kind, only: CKC => CK5
    6992             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    6993             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    6994             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    6995             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    6996             :         integer(IK)                 , intent(in)    , optional      :: roff
    6997             :         integer(IK)                                                 :: err
    6998             :     end function
    6999             : #endif
    7000             : 
    7001             : #if CK4_ENABLED
    7002             :     module function getErrTableWriteFile_NO_D2_CK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7003             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7004             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_CK4
    7005             : #endif
    7006             :         use pm_kind, only: CKC => CK4
    7007             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7008             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7009             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7010             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7011             :         integer(IK)                 , intent(in)    , optional      :: roff
    7012             :         integer(IK)                                                 :: err
    7013             :     end function
    7014             : #endif
    7015             : 
    7016             : #if CK3_ENABLED
    7017             :     module function getErrTableWriteFile_NO_D2_CK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7018             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7019             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_CK3
    7020             : #endif
    7021             :         use pm_kind, only: CKC => CK3
    7022             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7023             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7024             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7025             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7026             :         integer(IK)                 , intent(in)    , optional      :: roff
    7027             :         integer(IK)                                                 :: err
    7028             :     end function
    7029             : #endif
    7030             : 
    7031             : #if CK2_ENABLED
    7032             :     module function getErrTableWriteFile_NO_D2_CK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7033             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7034             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_CK2
    7035             : #endif
    7036             :         use pm_kind, only: CKC => CK2
    7037             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7038             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7039             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7040             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7041             :         integer(IK)                 , intent(in)    , optional      :: roff
    7042             :         integer(IK)                                                 :: err
    7043             :     end function
    7044             : #endif
    7045             : 
    7046             : #if CK1_ENABLED
    7047             :     module function getErrTableWriteFile_NO_D2_CK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7048             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7049             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_CK1
    7050             : #endif
    7051             :         use pm_kind, only: CKC => CK1
    7052             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7053             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7054             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7055             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7056             :         integer(IK)                 , intent(in)    , optional      :: roff
    7057             :         integer(IK)                                                 :: err
    7058             :     end function
    7059             : #endif
    7060             : 
    7061             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7062             : 
    7063             : #if RK5_ENABLED
    7064             :     module function getErrTableWriteFile_NO_D2_RK5(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7065             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7066             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_RK5
    7067             : #endif
    7068             :         use pm_kind, only: RKC => RK5
    7069             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7070             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7071             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7072             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7073             :         integer(IK)                 , intent(in)    , optional      :: roff
    7074             :         integer(IK)                                                 :: err
    7075             :     end function
    7076             : #endif
    7077             : 
    7078             : #if RK4_ENABLED
    7079             :     module function getErrTableWriteFile_NO_D2_RK4(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7080             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7081             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_RK4
    7082             : #endif
    7083             :         use pm_kind, only: RKC => RK4
    7084             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7085             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7086             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7087             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7088             :         integer(IK)                 , intent(in)    , optional      :: roff
    7089             :         integer(IK)                                                 :: err
    7090             :     end function
    7091             : #endif
    7092             : 
    7093             : #if RK3_ENABLED
    7094             :     module function getErrTableWriteFile_NO_D2_RK3(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7095             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7096             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_RK3
    7097             : #endif
    7098             :         use pm_kind, only: RKC => RK3
    7099             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7100             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7101             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7102             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7103             :         integer(IK)                 , intent(in)    , optional      :: roff
    7104             :         integer(IK)                                                 :: err
    7105             :     end function
    7106             : #endif
    7107             : 
    7108             : #if RK2_ENABLED
    7109             :     module function getErrTableWriteFile_NO_D2_RK2(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7110             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7111             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_RK2
    7112             : #endif
    7113             :         use pm_kind, only: RKC => RK2
    7114             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7115             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7116             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7117             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7118             :         integer(IK)                 , intent(in)    , optional      :: roff
    7119             :         integer(IK)                                                 :: err
    7120             :     end function
    7121             : #endif
    7122             : 
    7123             : #if RK1_ENABLED
    7124             :     module function getErrTableWriteFile_NO_D2_RK1(file, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7125             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7126             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_NO_D2_RK1
    7127             : #endif
    7128             :         use pm_kind, only: RKC => RK1
    7129             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7130             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7131             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7132             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7133             :         integer(IK)                 , intent(in)    , optional      :: roff
    7134             :         integer(IK)                                                 :: err
    7135             :     end function
    7136             : #endif
    7137             : 
    7138             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7139             : 
    7140             :     end interface
    7141             : 
    7142             :     ! D2 unit NO
    7143             : 
    7144             :     interface getErrTableWrite
    7145             : 
    7146             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7147             : 
    7148             : #if SK5_ENABLED
    7149             :     module function getErrTableWriteUnit_NO_D2_SK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7150             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7151             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_SK5
    7152             : #endif
    7153             :         use pm_kind, only: SKC => SK5
    7154             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    7155             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7156             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7157             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7158             :         integer(IK)                 , intent(in)    , optional      :: roff
    7159             :         integer(IK)                 , intent(in)                    :: unit
    7160             :         integer(IK)                                                 :: err
    7161             :     end function
    7162             : #endif
    7163             : 
    7164             : #if SK4_ENABLED
    7165             :     module function getErrTableWriteUnit_NO_D2_SK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7166             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7167             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_SK4
    7168             : #endif
    7169             :         use pm_kind, only: SKC => SK4
    7170             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    7171             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7172             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7173             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7174             :         integer(IK)                 , intent(in)    , optional      :: roff
    7175             :         integer(IK)                 , intent(in)                    :: unit
    7176             :         integer(IK)                                                 :: err
    7177             :     end function
    7178             : #endif
    7179             : 
    7180             : #if SK3_ENABLED
    7181             :     module function getErrTableWriteUnit_NO_D2_SK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7182             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7183             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_SK3
    7184             : #endif
    7185             :         use pm_kind, only: SKC => SK3
    7186             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    7187             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7188             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7189             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7190             :         integer(IK)                 , intent(in)    , optional      :: roff
    7191             :         integer(IK)                 , intent(in)                    :: unit
    7192             :         integer(IK)                                                 :: err
    7193             :     end function
    7194             : #endif
    7195             : 
    7196             : #if SK2_ENABLED
    7197             :     module function getErrTableWriteUnit_NO_D2_SK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7198             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7199             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_SK2
    7200             : #endif
    7201             :         use pm_kind, only: SKC => SK2
    7202             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    7203             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7204             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7205             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7206             :         integer(IK)                 , intent(in)    , optional      :: roff
    7207             :         integer(IK)                 , intent(in)                    :: unit
    7208             :         integer(IK)                                                 :: err
    7209             :     end function
    7210             : #endif
    7211             : 
    7212             : #if SK1_ENABLED
    7213             :     module function getErrTableWriteUnit_NO_D2_SK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7214             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7215             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_SK1
    7216             : #endif
    7217             :         use pm_kind, only: SKC => SK1
    7218             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    7219             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7220             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7221             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7222             :         integer(IK)                 , intent(in)    , optional      :: roff
    7223             :         integer(IK)                 , intent(in)                    :: unit
    7224             :         integer(IK)                                                 :: err
    7225             :     end function
    7226             : #endif
    7227             : 
    7228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7229             : 
    7230             : #if IK5_ENABLED
    7231             :     module function getErrTableWriteUnit_NO_D2_IK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7232             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7233             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_IK5
    7234             : #endif
    7235             :         use pm_kind, only: IKC => IK5
    7236             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    7237             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7238             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7239             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7240             :         integer(IK)                 , intent(in)    , optional      :: roff
    7241             :         integer(IK)                 , intent(in)                    :: unit
    7242             :         integer(IK)                                                 :: err
    7243             :     end function
    7244             : #endif
    7245             : 
    7246             : #if IK4_ENABLED
    7247             :     module function getErrTableWriteUnit_NO_D2_IK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7248             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7249             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_IK4
    7250             : #endif
    7251             :         use pm_kind, only: IKC => IK4
    7252             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    7253             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7254             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7255             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7256             :         integer(IK)                 , intent(in)    , optional      :: roff
    7257             :         integer(IK)                 , intent(in)                    :: unit
    7258             :         integer(IK)                                                 :: err
    7259             :     end function
    7260             : #endif
    7261             : 
    7262             : #if IK3_ENABLED
    7263             :     module function getErrTableWriteUnit_NO_D2_IK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7265             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_IK3
    7266             : #endif
    7267             :         use pm_kind, only: IKC => IK3
    7268             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    7269             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7270             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7271             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7272             :         integer(IK)                 , intent(in)    , optional      :: roff
    7273             :         integer(IK)                 , intent(in)                    :: unit
    7274             :         integer(IK)                                                 :: err
    7275             :     end function
    7276             : #endif
    7277             : 
    7278             : #if IK2_ENABLED
    7279             :     module function getErrTableWriteUnit_NO_D2_IK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7280             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7281             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_IK2
    7282             : #endif
    7283             :         use pm_kind, only: IKC => IK2
    7284             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    7285             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7286             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7287             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7288             :         integer(IK)                 , intent(in)    , optional      :: roff
    7289             :         integer(IK)                 , intent(in)                    :: unit
    7290             :         integer(IK)                                                 :: err
    7291             :     end function
    7292             : #endif
    7293             : 
    7294             : #if IK1_ENABLED
    7295             :     module function getErrTableWriteUnit_NO_D2_IK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7296             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7297             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_IK1
    7298             : #endif
    7299             :         use pm_kind, only: IKC => IK1
    7300             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    7301             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7302             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7303             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7304             :         integer(IK)                 , intent(in)    , optional      :: roff
    7305             :         integer(IK)                 , intent(in)                    :: unit
    7306             :         integer(IK)                                                 :: err
    7307             :     end function
    7308             : #endif
    7309             : 
    7310             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7311             : 
    7312             : #if LK5_ENABLED
    7313             :     module function getErrTableWriteUnit_NO_D2_LK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7315             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_LK5
    7316             : #endif
    7317             :         use pm_kind, only: LKC => LK5
    7318             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    7319             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7320             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7321             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7322             :         integer(IK)                 , intent(in)    , optional      :: roff
    7323             :         integer(IK)                 , intent(in)                    :: unit
    7324             :         integer(IK)                                                 :: err
    7325             :     end function
    7326             : #endif
    7327             : 
    7328             : #if LK4_ENABLED
    7329             :     module function getErrTableWriteUnit_NO_D2_LK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7331             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_LK4
    7332             : #endif
    7333             :         use pm_kind, only: LKC => LK4
    7334             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    7335             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7336             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7337             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7338             :         integer(IK)                 , intent(in)    , optional      :: roff
    7339             :         integer(IK)                 , intent(in)                    :: unit
    7340             :         integer(IK)                                                 :: err
    7341             :     end function
    7342             : #endif
    7343             : 
    7344             : #if LK3_ENABLED
    7345             :     module function getErrTableWriteUnit_NO_D2_LK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7346             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7347             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_LK3
    7348             : #endif
    7349             :         use pm_kind, only: LKC => LK3
    7350             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    7351             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7352             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7353             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7354             :         integer(IK)                 , intent(in)    , optional      :: roff
    7355             :         integer(IK)                 , intent(in)                    :: unit
    7356             :         integer(IK)                                                 :: err
    7357             :     end function
    7358             : #endif
    7359             : 
    7360             : #if LK2_ENABLED
    7361             :     module function getErrTableWriteUnit_NO_D2_LK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7362             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7363             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_LK2
    7364             : #endif
    7365             :         use pm_kind, only: LKC => LK2
    7366             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    7367             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7368             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7369             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7370             :         integer(IK)                 , intent(in)    , optional      :: roff
    7371             :         integer(IK)                 , intent(in)                    :: unit
    7372             :         integer(IK)                                                 :: err
    7373             :     end function
    7374             : #endif
    7375             : 
    7376             : #if LK1_ENABLED
    7377             :     module function getErrTableWriteUnit_NO_D2_LK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7379             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_LK1
    7380             : #endif
    7381             :         use pm_kind, only: LKC => LK1
    7382             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    7383             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7384             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7385             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7386             :         integer(IK)                 , intent(in)    , optional      :: roff
    7387             :         integer(IK)                 , intent(in)                    :: unit
    7388             :         integer(IK)                                                 :: err
    7389             :     end function
    7390             : #endif
    7391             : 
    7392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7393             : 
    7394             : #if CK5_ENABLED
    7395             :     module function getErrTableWriteUnit_NO_D2_CK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7396             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7397             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_CK5
    7398             : #endif
    7399             :         use pm_kind, only: CKC => CK5
    7400             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7401             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7402             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7403             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7404             :         integer(IK)                 , intent(in)    , optional      :: roff
    7405             :         integer(IK)                 , intent(in)                    :: unit
    7406             :         integer(IK)                                                 :: err
    7407             :     end function
    7408             : #endif
    7409             : 
    7410             : #if CK4_ENABLED
    7411             :     module function getErrTableWriteUnit_NO_D2_CK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7412             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7413             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_CK4
    7414             : #endif
    7415             :         use pm_kind, only: CKC => CK4
    7416             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7417             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7418             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7419             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7420             :         integer(IK)                 , intent(in)    , optional      :: roff
    7421             :         integer(IK)                 , intent(in)                    :: unit
    7422             :         integer(IK)                                                 :: err
    7423             :     end function
    7424             : #endif
    7425             : 
    7426             : #if CK3_ENABLED
    7427             :     module function getErrTableWriteUnit_NO_D2_CK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7428             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7429             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_CK3
    7430             : #endif
    7431             :         use pm_kind, only: CKC => CK3
    7432             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7433             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7434             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7435             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7436             :         integer(IK)                 , intent(in)    , optional      :: roff
    7437             :         integer(IK)                 , intent(in)                    :: unit
    7438             :         integer(IK)                                                 :: err
    7439             :     end function
    7440             : #endif
    7441             : 
    7442             : #if CK2_ENABLED
    7443             :     module function getErrTableWriteUnit_NO_D2_CK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7445             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_CK2
    7446             : #endif
    7447             :         use pm_kind, only: CKC => CK2
    7448             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7449             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7450             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7451             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7452             :         integer(IK)                 , intent(in)    , optional      :: roff
    7453             :         integer(IK)                 , intent(in)                    :: unit
    7454             :         integer(IK)                                                 :: err
    7455             :     end function
    7456             : #endif
    7457             : 
    7458             : #if CK1_ENABLED
    7459             :     module function getErrTableWriteUnit_NO_D2_CK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7460             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7461             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_CK1
    7462             : #endif
    7463             :         use pm_kind, only: CKC => CK1
    7464             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    7465             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7466             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7467             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7468             :         integer(IK)                 , intent(in)    , optional      :: roff
    7469             :         integer(IK)                 , intent(in)                    :: unit
    7470             :         integer(IK)                                                 :: err
    7471             :     end function
    7472             : #endif
    7473             : 
    7474             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7475             : 
    7476             : #if RK5_ENABLED
    7477             :     module function getErrTableWriteUnit_NO_D2_RK5(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7478             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7479             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_RK5
    7480             : #endif
    7481             :         use pm_kind, only: RKC => RK5
    7482             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7483             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7484             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7485             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7486             :         integer(IK)                 , intent(in)    , optional      :: roff
    7487             :         integer(IK)                 , intent(in)                    :: unit
    7488             :         integer(IK)                                                 :: err
    7489             :     end function
    7490             : #endif
    7491             : 
    7492             : #if RK4_ENABLED
    7493             :     module function getErrTableWriteUnit_NO_D2_RK4(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7494             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7495             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_RK4
    7496             : #endif
    7497             :         use pm_kind, only: RKC => RK4
    7498             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7499             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7500             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7501             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7502             :         integer(IK)                 , intent(in)    , optional      :: roff
    7503             :         integer(IK)                 , intent(in)                    :: unit
    7504             :         integer(IK)                                                 :: err
    7505             :     end function
    7506             : #endif
    7507             : 
    7508             : #if RK3_ENABLED
    7509             :     module function getErrTableWriteUnit_NO_D2_RK3(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7510             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7511             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_RK3
    7512             : #endif
    7513             :         use pm_kind, only: RKC => RK3
    7514             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7515             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7516             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7517             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7518             :         integer(IK)                 , intent(in)    , optional      :: roff
    7519             :         integer(IK)                 , intent(in)                    :: unit
    7520             :         integer(IK)                                                 :: err
    7521             :     end function
    7522             : #endif
    7523             : 
    7524             : #if RK2_ENABLED
    7525             :     module function getErrTableWriteUnit_NO_D2_RK2(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7526             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7527             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_RK2
    7528             : #endif
    7529             :         use pm_kind, only: RKC => RK2
    7530             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7531             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7532             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7533             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7534             :         integer(IK)                 , intent(in)    , optional      :: roff
    7535             :         integer(IK)                 , intent(in)                    :: unit
    7536             :         integer(IK)                                                 :: err
    7537             :     end function
    7538             : #endif
    7539             : 
    7540             : #if RK1_ENABLED
    7541             :     module function getErrTableWriteUnit_NO_D2_RK1(unit, table, header, sep, deliml, delimr, roff, iomsg) result(err)
    7542             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7543             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_NO_D2_RK1
    7544             : #endif
    7545             :         use pm_kind, only: RKC => RK1
    7546             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    7547             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7548             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7549             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7550             :         integer(IK)                 , intent(in)    , optional      :: roff
    7551             :         integer(IK)                 , intent(in)                    :: unit
    7552             :         integer(IK)                                                 :: err
    7553             :     end function
    7554             : #endif
    7555             : 
    7556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7557             : 
    7558             :     end interface
    7559             : 
    7560             :     ! D1 file TO
    7561             : 
    7562             :     interface getErrTableWrite
    7563             : 
    7564             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7565             : 
    7566             : #if SK5_ENABLED
    7567             :     module function getErrTableWriteFile_TO_D1_SK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7568             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7569             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_SK5
    7570             : #endif
    7571             :         use pm_kind, only: SKC => SK5
    7572             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7573             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7574             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7575             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7576             :         type(trans_type)            , intent(in)                    :: operation
    7577             :         integer(IK)                 , intent(in)    , optional      :: roff
    7578             :         integer(IK)                                                 :: err
    7579             :     end function
    7580             : #endif
    7581             : 
    7582             : #if SK4_ENABLED
    7583             :     module function getErrTableWriteFile_TO_D1_SK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7584             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7585             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_SK4
    7586             : #endif
    7587             :         use pm_kind, only: SKC => SK4
    7588             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7589             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7590             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7591             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7592             :         type(trans_type)            , intent(in)                    :: operation
    7593             :         integer(IK)                 , intent(in)    , optional      :: roff
    7594             :         integer(IK)                                                 :: err
    7595             :     end function
    7596             : #endif
    7597             : 
    7598             : #if SK3_ENABLED
    7599             :     module function getErrTableWriteFile_TO_D1_SK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7600             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7601             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_SK3
    7602             : #endif
    7603             :         use pm_kind, only: SKC => SK3
    7604             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7605             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7606             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7607             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7608             :         type(trans_type)            , intent(in)                    :: operation
    7609             :         integer(IK)                 , intent(in)    , optional      :: roff
    7610             :         integer(IK)                                                 :: err
    7611             :     end function
    7612             : #endif
    7613             : 
    7614             : #if SK2_ENABLED
    7615             :     module function getErrTableWriteFile_TO_D1_SK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7616             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7617             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_SK2
    7618             : #endif
    7619             :         use pm_kind, only: SKC => SK2
    7620             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7621             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7622             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7623             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7624             :         type(trans_type)            , intent(in)                    :: operation
    7625             :         integer(IK)                 , intent(in)    , optional      :: roff
    7626             :         integer(IK)                                                 :: err
    7627             :     end function
    7628             : #endif
    7629             : 
    7630             : #if SK1_ENABLED
    7631             :     module function getErrTableWriteFile_TO_D1_SK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7632             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7633             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_SK1
    7634             : #endif
    7635             :         use pm_kind, only: SKC => SK1
    7636             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7637             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7638             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7639             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7640             :         type(trans_type)            , intent(in)                    :: operation
    7641             :         integer(IK)                 , intent(in)    , optional      :: roff
    7642             :         integer(IK)                                                 :: err
    7643             :     end function
    7644             : #endif
    7645             : 
    7646             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7647             : 
    7648             : #if IK5_ENABLED
    7649             :     module function getErrTableWriteFile_TO_D1_IK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7651             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_IK5
    7652             : #endif
    7653             :         use pm_kind, only: IKC => IK5
    7654             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    7655             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7656             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7657             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7658             :         type(trans_type)            , intent(in)                    :: operation
    7659             :         integer(IK)                 , intent(in)    , optional      :: roff
    7660             :         integer(IK)                                                 :: err
    7661             :     end function
    7662             : #endif
    7663             : 
    7664             : #if IK4_ENABLED
    7665             :     module function getErrTableWriteFile_TO_D1_IK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7666             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7667             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_IK4
    7668             : #endif
    7669             :         use pm_kind, only: IKC => IK4
    7670             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    7671             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7672             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7673             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7674             :         type(trans_type)            , intent(in)                    :: operation
    7675             :         integer(IK)                 , intent(in)    , optional      :: roff
    7676             :         integer(IK)                                                 :: err
    7677             :     end function
    7678             : #endif
    7679             : 
    7680             : #if IK3_ENABLED
    7681             :     module function getErrTableWriteFile_TO_D1_IK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7682             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7683             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_IK3
    7684             : #endif
    7685             :         use pm_kind, only: IKC => IK3
    7686             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    7687             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7688             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7689             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7690             :         type(trans_type)            , intent(in)                    :: operation
    7691             :         integer(IK)                 , intent(in)    , optional      :: roff
    7692             :         integer(IK)                                                 :: err
    7693             :     end function
    7694             : #endif
    7695             : 
    7696             : #if IK2_ENABLED
    7697             :     module function getErrTableWriteFile_TO_D1_IK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7698             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7699             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_IK2
    7700             : #endif
    7701             :         use pm_kind, only: IKC => IK2
    7702             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    7703             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7704             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7705             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7706             :         type(trans_type)            , intent(in)                    :: operation
    7707             :         integer(IK)                 , intent(in)    , optional      :: roff
    7708             :         integer(IK)                                                 :: err
    7709             :     end function
    7710             : #endif
    7711             : 
    7712             : #if IK1_ENABLED
    7713             :     module function getErrTableWriteFile_TO_D1_IK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7714             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7715             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_IK1
    7716             : #endif
    7717             :         use pm_kind, only: IKC => IK1
    7718             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    7719             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7720             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7721             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7722             :         type(trans_type)            , intent(in)                    :: operation
    7723             :         integer(IK)                 , intent(in)    , optional      :: roff
    7724             :         integer(IK)                                                 :: err
    7725             :     end function
    7726             : #endif
    7727             : 
    7728             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7729             : 
    7730             : #if LK5_ENABLED
    7731             :     module function getErrTableWriteFile_TO_D1_LK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7732             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7733             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_LK5
    7734             : #endif
    7735             :         use pm_kind, only: LKC => LK5
    7736             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    7737             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7738             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7739             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7740             :         type(trans_type)            , intent(in)                    :: operation
    7741             :         integer(IK)                 , intent(in)    , optional      :: roff
    7742             :         integer(IK)                                                 :: err
    7743             :     end function
    7744             : #endif
    7745             : 
    7746             : #if LK4_ENABLED
    7747             :     module function getErrTableWriteFile_TO_D1_LK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7748             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7749             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_LK4
    7750             : #endif
    7751             :         use pm_kind, only: LKC => LK4
    7752             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    7753             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7754             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7755             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7756             :         type(trans_type)            , intent(in)                    :: operation
    7757             :         integer(IK)                 , intent(in)    , optional      :: roff
    7758             :         integer(IK)                                                 :: err
    7759             :     end function
    7760             : #endif
    7761             : 
    7762             : #if LK3_ENABLED
    7763             :     module function getErrTableWriteFile_TO_D1_LK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7765             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_LK3
    7766             : #endif
    7767             :         use pm_kind, only: LKC => LK3
    7768             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    7769             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7770             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7771             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7772             :         type(trans_type)            , intent(in)                    :: operation
    7773             :         integer(IK)                 , intent(in)    , optional      :: roff
    7774             :         integer(IK)                                                 :: err
    7775             :     end function
    7776             : #endif
    7777             : 
    7778             : #if LK2_ENABLED
    7779             :     module function getErrTableWriteFile_TO_D1_LK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7780             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7781             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_LK2
    7782             : #endif
    7783             :         use pm_kind, only: LKC => LK2
    7784             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    7785             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7786             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7787             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7788             :         type(trans_type)            , intent(in)                    :: operation
    7789             :         integer(IK)                 , intent(in)    , optional      :: roff
    7790             :         integer(IK)                                                 :: err
    7791             :     end function
    7792             : #endif
    7793             : 
    7794             : #if LK1_ENABLED
    7795             :     module function getErrTableWriteFile_TO_D1_LK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7796             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7797             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_LK1
    7798             : #endif
    7799             :         use pm_kind, only: LKC => LK1
    7800             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    7801             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7802             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7803             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7804             :         type(trans_type)            , intent(in)                    :: operation
    7805             :         integer(IK)                 , intent(in)    , optional      :: roff
    7806             :         integer(IK)                                                 :: err
    7807             :     end function
    7808             : #endif
    7809             : 
    7810             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7811             : 
    7812             : #if CK5_ENABLED
    7813             :     module function getErrTableWriteFile_TO_D1_CK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7815             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_CK5
    7816             : #endif
    7817             :         use pm_kind, only: CKC => CK5
    7818             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    7819             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7820             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7821             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7822             :         type(trans_type)            , intent(in)                    :: operation
    7823             :         integer(IK)                 , intent(in)    , optional      :: roff
    7824             :         integer(IK)                                                 :: err
    7825             :     end function
    7826             : #endif
    7827             : 
    7828             : #if CK4_ENABLED
    7829             :     module function getErrTableWriteFile_TO_D1_CK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7831             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_CK4
    7832             : #endif
    7833             :         use pm_kind, only: CKC => CK4
    7834             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    7835             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7836             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7837             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7838             :         type(trans_type)            , intent(in)                    :: operation
    7839             :         integer(IK)                 , intent(in)    , optional      :: roff
    7840             :         integer(IK)                                                 :: err
    7841             :     end function
    7842             : #endif
    7843             : 
    7844             : #if CK3_ENABLED
    7845             :     module function getErrTableWriteFile_TO_D1_CK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7846             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7847             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_CK3
    7848             : #endif
    7849             :         use pm_kind, only: CKC => CK3
    7850             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    7851             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7852             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7853             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7854             :         type(trans_type)            , intent(in)                    :: operation
    7855             :         integer(IK)                 , intent(in)    , optional      :: roff
    7856             :         integer(IK)                                                 :: err
    7857             :     end function
    7858             : #endif
    7859             : 
    7860             : #if CK2_ENABLED
    7861             :     module function getErrTableWriteFile_TO_D1_CK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7862             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7863             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_CK2
    7864             : #endif
    7865             :         use pm_kind, only: CKC => CK2
    7866             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    7867             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7868             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7869             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7870             :         type(trans_type)            , intent(in)                    :: operation
    7871             :         integer(IK)                 , intent(in)    , optional      :: roff
    7872             :         integer(IK)                                                 :: err
    7873             :     end function
    7874             : #endif
    7875             : 
    7876             : #if CK1_ENABLED
    7877             :     module function getErrTableWriteFile_TO_D1_CK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7879             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_CK1
    7880             : #endif
    7881             :         use pm_kind, only: CKC => CK1
    7882             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    7883             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7884             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7885             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7886             :         type(trans_type)            , intent(in)                    :: operation
    7887             :         integer(IK)                 , intent(in)    , optional      :: roff
    7888             :         integer(IK)                                                 :: err
    7889             :     end function
    7890             : #endif
    7891             : 
    7892             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7893             : 
    7894             : #if RK5_ENABLED
    7895             :     module function getErrTableWriteFile_TO_D1_RK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7896             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7897             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_RK5
    7898             : #endif
    7899             :         use pm_kind, only: RKC => RK5
    7900             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    7901             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7902             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7903             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7904             :         type(trans_type)            , intent(in)                    :: operation
    7905             :         integer(IK)                 , intent(in)    , optional      :: roff
    7906             :         integer(IK)                                                 :: err
    7907             :     end function
    7908             : #endif
    7909             : 
    7910             : #if RK4_ENABLED
    7911             :     module function getErrTableWriteFile_TO_D1_RK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7912             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7913             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_RK4
    7914             : #endif
    7915             :         use pm_kind, only: RKC => RK4
    7916             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    7917             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7918             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7919             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7920             :         type(trans_type)            , intent(in)                    :: operation
    7921             :         integer(IK)                 , intent(in)    , optional      :: roff
    7922             :         integer(IK)                                                 :: err
    7923             :     end function
    7924             : #endif
    7925             : 
    7926             : #if RK3_ENABLED
    7927             :     module function getErrTableWriteFile_TO_D1_RK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7928             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7929             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_RK3
    7930             : #endif
    7931             :         use pm_kind, only: RKC => RK3
    7932             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    7933             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7934             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7935             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7936             :         type(trans_type)            , intent(in)                    :: operation
    7937             :         integer(IK)                 , intent(in)    , optional      :: roff
    7938             :         integer(IK)                                                 :: err
    7939             :     end function
    7940             : #endif
    7941             : 
    7942             : #if RK2_ENABLED
    7943             :     module function getErrTableWriteFile_TO_D1_RK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7945             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_RK2
    7946             : #endif
    7947             :         use pm_kind, only: RKC => RK2
    7948             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    7949             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7950             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7951             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7952             :         type(trans_type)            , intent(in)                    :: operation
    7953             :         integer(IK)                 , intent(in)    , optional      :: roff
    7954             :         integer(IK)                                                 :: err
    7955             :     end function
    7956             : #endif
    7957             : 
    7958             : #if RK1_ENABLED
    7959             :     module function getErrTableWriteFile_TO_D1_RK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7960             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7961             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D1_RK1
    7962             : #endif
    7963             :         use pm_kind, only: RKC => RK1
    7964             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    7965             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    7966             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7967             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7968             :         type(trans_type)            , intent(in)                    :: operation
    7969             :         integer(IK)                 , intent(in)    , optional      :: roff
    7970             :         integer(IK)                                                 :: err
    7971             :     end function
    7972             : #endif
    7973             : 
    7974             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7975             : 
    7976             :     end interface
    7977             : 
    7978             :     ! D1 unit TO
    7979             : 
    7980             :     interface getErrTableWrite
    7981             : 
    7982             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7983             : 
    7984             : #if SK5_ENABLED
    7985             :     module function getErrTableWriteUnit_TO_D1_SK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    7986             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7987             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_SK5
    7988             : #endif
    7989             :         use pm_kind, only: SKC => SK5
    7990             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    7991             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    7992             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    7993             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    7994             :         type(trans_type)            , intent(in)                    :: operation
    7995             :         integer(IK)                 , intent(in)    , optional      :: roff
    7996             :         integer(IK)                 , intent(in)                    :: unit
    7997             :         integer(IK)                                                 :: err
    7998             :     end function
    7999             : #endif
    8000             : 
    8001             : #if SK4_ENABLED
    8002             :     module function getErrTableWriteUnit_TO_D1_SK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8003             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8004             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_SK4
    8005             : #endif
    8006             :         use pm_kind, only: SKC => SK4
    8007             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    8008             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8009             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8010             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8011             :         type(trans_type)            , intent(in)                    :: operation
    8012             :         integer(IK)                 , intent(in)    , optional      :: roff
    8013             :         integer(IK)                 , intent(in)                    :: unit
    8014             :         integer(IK)                                                 :: err
    8015             :     end function
    8016             : #endif
    8017             : 
    8018             : #if SK3_ENABLED
    8019             :     module function getErrTableWriteUnit_TO_D1_SK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8020             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8021             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_SK3
    8022             : #endif
    8023             :         use pm_kind, only: SKC => SK3
    8024             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    8025             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8026             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8027             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8028             :         type(trans_type)            , intent(in)                    :: operation
    8029             :         integer(IK)                 , intent(in)    , optional      :: roff
    8030             :         integer(IK)                 , intent(in)                    :: unit
    8031             :         integer(IK)                                                 :: err
    8032             :     end function
    8033             : #endif
    8034             : 
    8035             : #if SK2_ENABLED
    8036             :     module function getErrTableWriteUnit_TO_D1_SK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8037             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8038             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_SK2
    8039             : #endif
    8040             :         use pm_kind, only: SKC => SK2
    8041             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    8042             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8043             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8044             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8045             :         type(trans_type)            , intent(in)                    :: operation
    8046             :         integer(IK)                 , intent(in)    , optional      :: roff
    8047             :         integer(IK)                 , intent(in)                    :: unit
    8048             :         integer(IK)                                                 :: err
    8049             :     end function
    8050             : #endif
    8051             : 
    8052             : #if SK1_ENABLED
    8053             :     module function getErrTableWriteUnit_TO_D1_SK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8054             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8055             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_SK1
    8056             : #endif
    8057             :         use pm_kind, only: SKC => SK1
    8058             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:)
    8059             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8060             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8061             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8062             :         type(trans_type)            , intent(in)                    :: operation
    8063             :         integer(IK)                 , intent(in)    , optional      :: roff
    8064             :         integer(IK)                 , intent(in)                    :: unit
    8065             :         integer(IK)                                                 :: err
    8066             :     end function
    8067             : #endif
    8068             : 
    8069             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8070             : 
    8071             : #if IK5_ENABLED
    8072             :     module function getErrTableWriteUnit_TO_D1_IK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8073             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8074             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_IK5
    8075             : #endif
    8076             :         use pm_kind, only: IKC => IK5
    8077             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    8078             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8079             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8080             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8081             :         type(trans_type)            , intent(in)                    :: operation
    8082             :         integer(IK)                 , intent(in)    , optional      :: roff
    8083             :         integer(IK)                 , intent(in)                    :: unit
    8084             :         integer(IK)                                                 :: err
    8085             :     end function
    8086             : #endif
    8087             : 
    8088             : #if IK4_ENABLED
    8089             :     module function getErrTableWriteUnit_TO_D1_IK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8090             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8091             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_IK4
    8092             : #endif
    8093             :         use pm_kind, only: IKC => IK4
    8094             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    8095             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8096             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8097             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8098             :         type(trans_type)            , intent(in)                    :: operation
    8099             :         integer(IK)                 , intent(in)    , optional      :: roff
    8100             :         integer(IK)                 , intent(in)                    :: unit
    8101             :         integer(IK)                                                 :: err
    8102             :     end function
    8103             : #endif
    8104             : 
    8105             : #if IK3_ENABLED
    8106             :     module function getErrTableWriteUnit_TO_D1_IK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8107             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8108             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_IK3
    8109             : #endif
    8110             :         use pm_kind, only: IKC => IK3
    8111             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    8112             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8113             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8114             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8115             :         type(trans_type)            , intent(in)                    :: operation
    8116             :         integer(IK)                 , intent(in)    , optional      :: roff
    8117             :         integer(IK)                 , intent(in)                    :: unit
    8118             :         integer(IK)                                                 :: err
    8119             :     end function
    8120             : #endif
    8121             : 
    8122             : #if IK2_ENABLED
    8123             :     module function getErrTableWriteUnit_TO_D1_IK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8124             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8125             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_IK2
    8126             : #endif
    8127             :         use pm_kind, only: IKC => IK2
    8128             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    8129             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8130             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8131             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8132             :         type(trans_type)            , intent(in)                    :: operation
    8133             :         integer(IK)                 , intent(in)    , optional      :: roff
    8134             :         integer(IK)                 , intent(in)                    :: unit
    8135             :         integer(IK)                                                 :: err
    8136             :     end function
    8137             : #endif
    8138             : 
    8139             : #if IK1_ENABLED
    8140             :     module function getErrTableWriteUnit_TO_D1_IK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8141             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8142             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_IK1
    8143             : #endif
    8144             :         use pm_kind, only: IKC => IK1
    8145             :         integer(IKC)                , intent(in)    , contiguous    :: table(:)
    8146             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8147             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8148             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8149             :         type(trans_type)            , intent(in)                    :: operation
    8150             :         integer(IK)                 , intent(in)    , optional      :: roff
    8151             :         integer(IK)                 , intent(in)                    :: unit
    8152             :         integer(IK)                                                 :: err
    8153             :     end function
    8154             : #endif
    8155             : 
    8156             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8157             : 
    8158             : #if LK5_ENABLED
    8159             :     module function getErrTableWriteUnit_TO_D1_LK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8160             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8161             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_LK5
    8162             : #endif
    8163             :         use pm_kind, only: LKC => LK5
    8164             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    8165             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8166             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8167             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8168             :         type(trans_type)            , intent(in)                    :: operation
    8169             :         integer(IK)                 , intent(in)    , optional      :: roff
    8170             :         integer(IK)                 , intent(in)                    :: unit
    8171             :         integer(IK)                                                 :: err
    8172             :     end function
    8173             : #endif
    8174             : 
    8175             : #if LK4_ENABLED
    8176             :     module function getErrTableWriteUnit_TO_D1_LK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8178             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_LK4
    8179             : #endif
    8180             :         use pm_kind, only: LKC => LK4
    8181             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    8182             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8183             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8184             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8185             :         type(trans_type)            , intent(in)                    :: operation
    8186             :         integer(IK)                 , intent(in)    , optional      :: roff
    8187             :         integer(IK)                 , intent(in)                    :: unit
    8188             :         integer(IK)                                                 :: err
    8189             :     end function
    8190             : #endif
    8191             : 
    8192             : #if LK3_ENABLED
    8193             :     module function getErrTableWriteUnit_TO_D1_LK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8194             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8195             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_LK3
    8196             : #endif
    8197             :         use pm_kind, only: LKC => LK3
    8198             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    8199             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8200             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8201             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8202             :         type(trans_type)            , intent(in)                    :: operation
    8203             :         integer(IK)                 , intent(in)    , optional      :: roff
    8204             :         integer(IK)                 , intent(in)                    :: unit
    8205             :         integer(IK)                                                 :: err
    8206             :     end function
    8207             : #endif
    8208             : 
    8209             : #if LK2_ENABLED
    8210             :     module function getErrTableWriteUnit_TO_D1_LK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8211             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8212             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_LK2
    8213             : #endif
    8214             :         use pm_kind, only: LKC => LK2
    8215             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    8216             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8217             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8218             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8219             :         type(trans_type)            , intent(in)                    :: operation
    8220             :         integer(IK)                 , intent(in)    , optional      :: roff
    8221             :         integer(IK)                 , intent(in)                    :: unit
    8222             :         integer(IK)                                                 :: err
    8223             :     end function
    8224             : #endif
    8225             : 
    8226             : #if LK1_ENABLED
    8227             :     module function getErrTableWriteUnit_TO_D1_LK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8229             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_LK1
    8230             : #endif
    8231             :         use pm_kind, only: LKC => LK1
    8232             :         logical(LKC)                , intent(in)    , contiguous    :: table(:)
    8233             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8234             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8235             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8236             :         type(trans_type)            , intent(in)                    :: operation
    8237             :         integer(IK)                 , intent(in)    , optional      :: roff
    8238             :         integer(IK)                 , intent(in)                    :: unit
    8239             :         integer(IK)                                                 :: err
    8240             :     end function
    8241             : #endif
    8242             : 
    8243             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8244             : 
    8245             : #if CK5_ENABLED
    8246             :     module function getErrTableWriteUnit_TO_D1_CK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8247             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8248             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_CK5
    8249             : #endif
    8250             :         use pm_kind, only: CKC => CK5
    8251             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    8252             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8253             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8254             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8255             :         type(trans_type)            , intent(in)                    :: operation
    8256             :         integer(IK)                 , intent(in)    , optional      :: roff
    8257             :         integer(IK)                 , intent(in)                    :: unit
    8258             :         integer(IK)                                                 :: err
    8259             :     end function
    8260             : #endif
    8261             : 
    8262             : #if CK4_ENABLED
    8263             :     module function getErrTableWriteUnit_TO_D1_CK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8265             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_CK4
    8266             : #endif
    8267             :         use pm_kind, only: CKC => CK4
    8268             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    8269             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8270             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8271             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8272             :         type(trans_type)            , intent(in)                    :: operation
    8273             :         integer(IK)                 , intent(in)    , optional      :: roff
    8274             :         integer(IK)                 , intent(in)                    :: unit
    8275             :         integer(IK)                                                 :: err
    8276             :     end function
    8277             : #endif
    8278             : 
    8279             : #if CK3_ENABLED
    8280             :     module function getErrTableWriteUnit_TO_D1_CK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8281             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8282             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_CK3
    8283             : #endif
    8284             :         use pm_kind, only: CKC => CK3
    8285             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    8286             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8287             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8288             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8289             :         type(trans_type)            , intent(in)                    :: operation
    8290             :         integer(IK)                 , intent(in)    , optional      :: roff
    8291             :         integer(IK)                 , intent(in)                    :: unit
    8292             :         integer(IK)                                                 :: err
    8293             :     end function
    8294             : #endif
    8295             : 
    8296             : #if CK2_ENABLED
    8297             :     module function getErrTableWriteUnit_TO_D1_CK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8298             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8299             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_CK2
    8300             : #endif
    8301             :         use pm_kind, only: CKC => CK2
    8302             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    8303             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8304             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8305             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8306             :         type(trans_type)            , intent(in)                    :: operation
    8307             :         integer(IK)                 , intent(in)    , optional      :: roff
    8308             :         integer(IK)                 , intent(in)                    :: unit
    8309             :         integer(IK)                                                 :: err
    8310             :     end function
    8311             : #endif
    8312             : 
    8313             : #if CK1_ENABLED
    8314             :     module function getErrTableWriteUnit_TO_D1_CK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8315             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8316             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_CK1
    8317             : #endif
    8318             :         use pm_kind, only: CKC => CK1
    8319             :         complex(CKC)                , intent(in)    , contiguous    :: table(:)
    8320             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8321             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8322             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8323             :         type(trans_type)            , intent(in)                    :: operation
    8324             :         integer(IK)                 , intent(in)    , optional      :: roff
    8325             :         integer(IK)                 , intent(in)                    :: unit
    8326             :         integer(IK)                                                 :: err
    8327             :     end function
    8328             : #endif
    8329             : 
    8330             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8331             : 
    8332             : #if RK5_ENABLED
    8333             :     module function getErrTableWriteUnit_TO_D1_RK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8334             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8335             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_RK5
    8336             : #endif
    8337             :         use pm_kind, only: RKC => RK5
    8338             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    8339             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8340             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8341             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8342             :         type(trans_type)            , intent(in)                    :: operation
    8343             :         integer(IK)                 , intent(in)    , optional      :: roff
    8344             :         integer(IK)                 , intent(in)                    :: unit
    8345             :         integer(IK)                                                 :: err
    8346             :     end function
    8347             : #endif
    8348             : 
    8349             : #if RK4_ENABLED
    8350             :     module function getErrTableWriteUnit_TO_D1_RK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8351             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8352             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_RK4
    8353             : #endif
    8354             :         use pm_kind, only: RKC => RK4
    8355             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    8356             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8357             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8358             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8359             :         type(trans_type)            , intent(in)                    :: operation
    8360             :         integer(IK)                 , intent(in)    , optional      :: roff
    8361             :         integer(IK)                 , intent(in)                    :: unit
    8362             :         integer(IK)                                                 :: err
    8363             :     end function
    8364             : #endif
    8365             : 
    8366             : #if RK3_ENABLED
    8367             :     module function getErrTableWriteUnit_TO_D1_RK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8368             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8369             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_RK3
    8370             : #endif
    8371             :         use pm_kind, only: RKC => RK3
    8372             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    8373             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8374             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8375             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8376             :         type(trans_type)            , intent(in)                    :: operation
    8377             :         integer(IK)                 , intent(in)    , optional      :: roff
    8378             :         integer(IK)                 , intent(in)                    :: unit
    8379             :         integer(IK)                                                 :: err
    8380             :     end function
    8381             : #endif
    8382             : 
    8383             : #if RK2_ENABLED
    8384             :     module function getErrTableWriteUnit_TO_D1_RK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8385             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8386             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_RK2
    8387             : #endif
    8388             :         use pm_kind, only: RKC => RK2
    8389             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    8390             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8391             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8392             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8393             :         type(trans_type)            , intent(in)                    :: operation
    8394             :         integer(IK)                 , intent(in)    , optional      :: roff
    8395             :         integer(IK)                 , intent(in)                    :: unit
    8396             :         integer(IK)                                                 :: err
    8397             :     end function
    8398             : #endif
    8399             : 
    8400             : #if RK1_ENABLED
    8401             :     module function getErrTableWriteUnit_TO_D1_RK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8402             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8403             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D1_RK1
    8404             : #endif
    8405             :         use pm_kind, only: RKC => RK1
    8406             :         real(RKC)                   , intent(in)    , contiguous    :: table(:)
    8407             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8408             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8409             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8410             :         type(trans_type)            , intent(in)                    :: operation
    8411             :         integer(IK)                 , intent(in)    , optional      :: roff
    8412             :         integer(IK)                 , intent(in)                    :: unit
    8413             :         integer(IK)                                                 :: err
    8414             :     end function
    8415             : #endif
    8416             : 
    8417             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8418             : 
    8419             :     end interface
    8420             : 
    8421             :     ! D2 file TO
    8422             : 
    8423             :     interface getErrTableWrite
    8424             : 
    8425             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8426             : 
    8427             : #if SK5_ENABLED
    8428             :     module function getErrTableWriteFile_TO_D2_SK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8429             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8430             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_SK5
    8431             : #endif
    8432             :         use pm_kind, only: SKC => SK5
    8433             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8434             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8435             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8436             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8437             :         type(trans_type)            , intent(in)                    :: operation
    8438             :         integer(IK)                 , intent(in)    , optional      :: roff
    8439             :         integer(IK)                                                 :: err
    8440             :     end function
    8441             : #endif
    8442             : 
    8443             : #if SK4_ENABLED
    8444             :     module function getErrTableWriteFile_TO_D2_SK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8445             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8446             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_SK4
    8447             : #endif
    8448             :         use pm_kind, only: SKC => SK4
    8449             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8450             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8451             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8452             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8453             :         type(trans_type)            , intent(in)                    :: operation
    8454             :         integer(IK)                 , intent(in)    , optional      :: roff
    8455             :         integer(IK)                                                 :: err
    8456             :     end function
    8457             : #endif
    8458             : 
    8459             : #if SK3_ENABLED
    8460             :     module function getErrTableWriteFile_TO_D2_SK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8461             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8462             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_SK3
    8463             : #endif
    8464             :         use pm_kind, only: SKC => SK3
    8465             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8466             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8467             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8468             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8469             :         type(trans_type)            , intent(in)                    :: operation
    8470             :         integer(IK)                 , intent(in)    , optional      :: roff
    8471             :         integer(IK)                                                 :: err
    8472             :     end function
    8473             : #endif
    8474             : 
    8475             : #if SK2_ENABLED
    8476             :     module function getErrTableWriteFile_TO_D2_SK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8477             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8478             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_SK2
    8479             : #endif
    8480             :         use pm_kind, only: SKC => SK2
    8481             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8482             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8483             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8484             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8485             :         type(trans_type)            , intent(in)                    :: operation
    8486             :         integer(IK)                 , intent(in)    , optional      :: roff
    8487             :         integer(IK)                                                 :: err
    8488             :     end function
    8489             : #endif
    8490             : 
    8491             : #if SK1_ENABLED
    8492             :     module function getErrTableWriteFile_TO_D2_SK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8493             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8494             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_SK1
    8495             : #endif
    8496             :         use pm_kind, only: SKC => SK1
    8497             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8498             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8499             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8500             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8501             :         type(trans_type)            , intent(in)                    :: operation
    8502             :         integer(IK)                 , intent(in)    , optional      :: roff
    8503             :         integer(IK)                                                 :: err
    8504             :     end function
    8505             : #endif
    8506             : 
    8507             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8508             : 
    8509             : #if IK5_ENABLED
    8510             :     module function getErrTableWriteFile_TO_D2_IK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8511             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8512             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_IK5
    8513             : #endif
    8514             :         use pm_kind, only: IKC => IK5
    8515             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8516             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8517             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8518             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8519             :         type(trans_type)            , intent(in)                    :: operation
    8520             :         integer(IK)                 , intent(in)    , optional      :: roff
    8521             :         integer(IK)                                                 :: err
    8522             :     end function
    8523             : #endif
    8524             : 
    8525             : #if IK4_ENABLED
    8526             :     module function getErrTableWriteFile_TO_D2_IK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8527             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8528             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_IK4
    8529             : #endif
    8530             :         use pm_kind, only: IKC => IK4
    8531             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8532             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8533             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8534             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8535             :         type(trans_type)            , intent(in)                    :: operation
    8536             :         integer(IK)                 , intent(in)    , optional      :: roff
    8537             :         integer(IK)                                                 :: err
    8538             :     end function
    8539             : #endif
    8540             : 
    8541             : #if IK3_ENABLED
    8542             :     module function getErrTableWriteFile_TO_D2_IK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8543             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8544             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_IK3
    8545             : #endif
    8546             :         use pm_kind, only: IKC => IK3
    8547             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8548             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8549             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8550             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8551             :         type(trans_type)            , intent(in)                    :: operation
    8552             :         integer(IK)                 , intent(in)    , optional      :: roff
    8553             :         integer(IK)                                                 :: err
    8554             :     end function
    8555             : #endif
    8556             : 
    8557             : #if IK2_ENABLED
    8558             :     module function getErrTableWriteFile_TO_D2_IK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8559             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8560             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_IK2
    8561             : #endif
    8562             :         use pm_kind, only: IKC => IK2
    8563             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8564             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8565             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8566             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8567             :         type(trans_type)            , intent(in)                    :: operation
    8568             :         integer(IK)                 , intent(in)    , optional      :: roff
    8569             :         integer(IK)                                                 :: err
    8570             :     end function
    8571             : #endif
    8572             : 
    8573             : #if IK1_ENABLED
    8574             :     module function getErrTableWriteFile_TO_D2_IK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8575             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8576             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_IK1
    8577             : #endif
    8578             :         use pm_kind, only: IKC => IK1
    8579             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8580             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8581             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8582             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8583             :         type(trans_type)            , intent(in)                    :: operation
    8584             :         integer(IK)                 , intent(in)    , optional      :: roff
    8585             :         integer(IK)                                                 :: err
    8586             :     end function
    8587             : #endif
    8588             : 
    8589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8590             : 
    8591             : #if LK5_ENABLED
    8592             :     module function getErrTableWriteFile_TO_D2_LK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8594             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_LK5
    8595             : #endif
    8596             :         use pm_kind, only: LKC => LK5
    8597             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    8598             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8599             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8600             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8601             :         type(trans_type)            , intent(in)                    :: operation
    8602             :         integer(IK)                 , intent(in)    , optional      :: roff
    8603             :         integer(IK)                                                 :: err
    8604             :     end function
    8605             : #endif
    8606             : 
    8607             : #if LK4_ENABLED
    8608             :     module function getErrTableWriteFile_TO_D2_LK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8609             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8610             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_LK4
    8611             : #endif
    8612             :         use pm_kind, only: LKC => LK4
    8613             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    8614             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8615             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8616             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8617             :         type(trans_type)            , intent(in)                    :: operation
    8618             :         integer(IK)                 , intent(in)    , optional      :: roff
    8619             :         integer(IK)                                                 :: err
    8620             :     end function
    8621             : #endif
    8622             : 
    8623             : #if LK3_ENABLED
    8624             :     module function getErrTableWriteFile_TO_D2_LK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8625             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8626             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_LK3
    8627             : #endif
    8628             :         use pm_kind, only: LKC => LK3
    8629             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    8630             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8631             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8632             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8633             :         type(trans_type)            , intent(in)                    :: operation
    8634             :         integer(IK)                 , intent(in)    , optional      :: roff
    8635             :         integer(IK)                                                 :: err
    8636             :     end function
    8637             : #endif
    8638             : 
    8639             : #if LK2_ENABLED
    8640             :     module function getErrTableWriteFile_TO_D2_LK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8641             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8642             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_LK2
    8643             : #endif
    8644             :         use pm_kind, only: LKC => LK2
    8645             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    8646             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8647             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8648             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8649             :         type(trans_type)            , intent(in)                    :: operation
    8650             :         integer(IK)                 , intent(in)    , optional      :: roff
    8651             :         integer(IK)                                                 :: err
    8652             :     end function
    8653             : #endif
    8654             : 
    8655             : #if LK1_ENABLED
    8656             :     module function getErrTableWriteFile_TO_D2_LK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8657             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8658             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_LK1
    8659             : #endif
    8660             :         use pm_kind, only: LKC => LK1
    8661             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    8662             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8663             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8664             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8665             :         type(trans_type)            , intent(in)                    :: operation
    8666             :         integer(IK)                 , intent(in)    , optional      :: roff
    8667             :         integer(IK)                                                 :: err
    8668             :     end function
    8669             : #endif
    8670             : 
    8671             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8672             : 
    8673             : #if CK5_ENABLED
    8674             :     module function getErrTableWriteFile_TO_D2_CK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8675             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8676             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_CK5
    8677             : #endif
    8678             :         use pm_kind, only: CKC => CK5
    8679             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    8680             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8681             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8682             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8683             :         type(trans_type)            , intent(in)                    :: operation
    8684             :         integer(IK)                 , intent(in)    , optional      :: roff
    8685             :         integer(IK)                                                 :: err
    8686             :     end function
    8687             : #endif
    8688             : 
    8689             : #if CK4_ENABLED
    8690             :     module function getErrTableWriteFile_TO_D2_CK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8691             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8692             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_CK4
    8693             : #endif
    8694             :         use pm_kind, only: CKC => CK4
    8695             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    8696             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8697             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8698             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8699             :         type(trans_type)            , intent(in)                    :: operation
    8700             :         integer(IK)                 , intent(in)    , optional      :: roff
    8701             :         integer(IK)                                                 :: err
    8702             :     end function
    8703             : #endif
    8704             : 
    8705             : #if CK3_ENABLED
    8706             :     module function getErrTableWriteFile_TO_D2_CK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8708             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_CK3
    8709             : #endif
    8710             :         use pm_kind, only: CKC => CK3
    8711             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    8712             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8713             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8714             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8715             :         type(trans_type)            , intent(in)                    :: operation
    8716             :         integer(IK)                 , intent(in)    , optional      :: roff
    8717             :         integer(IK)                                                 :: err
    8718             :     end function
    8719             : #endif
    8720             : 
    8721             : #if CK2_ENABLED
    8722             :     module function getErrTableWriteFile_TO_D2_CK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8723             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8724             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_CK2
    8725             : #endif
    8726             :         use pm_kind, only: CKC => CK2
    8727             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    8728             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8729             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8730             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8731             :         type(trans_type)            , intent(in)                    :: operation
    8732             :         integer(IK)                 , intent(in)    , optional      :: roff
    8733             :         integer(IK)                                                 :: err
    8734             :     end function
    8735             : #endif
    8736             : 
    8737             : #if CK1_ENABLED
    8738             :     module function getErrTableWriteFile_TO_D2_CK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8739             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8740             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_CK1
    8741             : #endif
    8742             :         use pm_kind, only: CKC => CK1
    8743             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    8744             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8745             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8746             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8747             :         type(trans_type)            , intent(in)                    :: operation
    8748             :         integer(IK)                 , intent(in)    , optional      :: roff
    8749             :         integer(IK)                                                 :: err
    8750             :     end function
    8751             : #endif
    8752             : 
    8753             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8754             : 
    8755             : #if RK5_ENABLED
    8756             :     module function getErrTableWriteFile_TO_D2_RK5(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8757             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8758             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_RK5
    8759             : #endif
    8760             :         use pm_kind, only: RKC => RK5
    8761             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    8762             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8763             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8764             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8765             :         type(trans_type)            , intent(in)                    :: operation
    8766             :         integer(IK)                 , intent(in)    , optional      :: roff
    8767             :         integer(IK)                                                 :: err
    8768             :     end function
    8769             : #endif
    8770             : 
    8771             : #if RK4_ENABLED
    8772             :     module function getErrTableWriteFile_TO_D2_RK4(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8773             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8774             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_RK4
    8775             : #endif
    8776             :         use pm_kind, only: RKC => RK4
    8777             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    8778             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8779             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8780             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8781             :         type(trans_type)            , intent(in)                    :: operation
    8782             :         integer(IK)                 , intent(in)    , optional      :: roff
    8783             :         integer(IK)                                                 :: err
    8784             :     end function
    8785             : #endif
    8786             : 
    8787             : #if RK3_ENABLED
    8788             :     module function getErrTableWriteFile_TO_D2_RK3(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8789             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8790             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_RK3
    8791             : #endif
    8792             :         use pm_kind, only: RKC => RK3
    8793             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    8794             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8795             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8796             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8797             :         type(trans_type)            , intent(in)                    :: operation
    8798             :         integer(IK)                 , intent(in)    , optional      :: roff
    8799             :         integer(IK)                                                 :: err
    8800             :     end function
    8801             : #endif
    8802             : 
    8803             : #if RK2_ENABLED
    8804             :     module function getErrTableWriteFile_TO_D2_RK2(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8805             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8806             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_RK2
    8807             : #endif
    8808             :         use pm_kind, only: RKC => RK2
    8809             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    8810             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8811             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8812             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8813             :         type(trans_type)            , intent(in)                    :: operation
    8814             :         integer(IK)                 , intent(in)    , optional      :: roff
    8815             :         integer(IK)                                                 :: err
    8816             :     end function
    8817             : #endif
    8818             : 
    8819             : #if RK1_ENABLED
    8820             :     module function getErrTableWriteFile_TO_D2_RK1(file, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8821             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8822             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteFile_TO_D2_RK1
    8823             : #endif
    8824             :         use pm_kind, only: RKC => RK1
    8825             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    8826             :         character(*, SK)            , intent(in)    , optional      :: file, header, sep
    8827             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8828             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8829             :         type(trans_type)            , intent(in)                    :: operation
    8830             :         integer(IK)                 , intent(in)    , optional      :: roff
    8831             :         integer(IK)                                                 :: err
    8832             :     end function
    8833             : #endif
    8834             : 
    8835             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8836             : 
    8837             :     end interface
    8838             : 
    8839             :     ! D2 unit TO
    8840             : 
    8841             :     interface getErrTableWrite
    8842             : 
    8843             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8844             : 
    8845             : #if SK5_ENABLED
    8846             :     module function getErrTableWriteUnit_TO_D2_SK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8847             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8848             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_SK5
    8849             : #endif
    8850             :         use pm_kind, only: SKC => SK5
    8851             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8852             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8853             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8854             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8855             :         type(trans_type)            , intent(in)                    :: operation
    8856             :         integer(IK)                 , intent(in)    , optional      :: roff
    8857             :         integer(IK)                 , intent(in)                    :: unit
    8858             :         integer(IK)                                                 :: err
    8859             :     end function
    8860             : #endif
    8861             : 
    8862             : #if SK4_ENABLED
    8863             :     module function getErrTableWriteUnit_TO_D2_SK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8864             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8865             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_SK4
    8866             : #endif
    8867             :         use pm_kind, only: SKC => SK4
    8868             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8869             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8870             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8871             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8872             :         type(trans_type)            , intent(in)                    :: operation
    8873             :         integer(IK)                 , intent(in)    , optional      :: roff
    8874             :         integer(IK)                 , intent(in)                    :: unit
    8875             :         integer(IK)                                                 :: err
    8876             :     end function
    8877             : #endif
    8878             : 
    8879             : #if SK3_ENABLED
    8880             :     module function getErrTableWriteUnit_TO_D2_SK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8881             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8882             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_SK3
    8883             : #endif
    8884             :         use pm_kind, only: SKC => SK3
    8885             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8886             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8887             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8888             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8889             :         type(trans_type)            , intent(in)                    :: operation
    8890             :         integer(IK)                 , intent(in)    , optional      :: roff
    8891             :         integer(IK)                 , intent(in)                    :: unit
    8892             :         integer(IK)                                                 :: err
    8893             :     end function
    8894             : #endif
    8895             : 
    8896             : #if SK2_ENABLED
    8897             :     module function getErrTableWriteUnit_TO_D2_SK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8898             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8899             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_SK2
    8900             : #endif
    8901             :         use pm_kind, only: SKC => SK2
    8902             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8903             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8904             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8905             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8906             :         type(trans_type)            , intent(in)                    :: operation
    8907             :         integer(IK)                 , intent(in)    , optional      :: roff
    8908             :         integer(IK)                 , intent(in)                    :: unit
    8909             :         integer(IK)                                                 :: err
    8910             :     end function
    8911             : #endif
    8912             : 
    8913             : #if SK1_ENABLED
    8914             :     module function getErrTableWriteUnit_TO_D2_SK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8915             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8916             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_SK1
    8917             : #endif
    8918             :         use pm_kind, only: SKC => SK1
    8919             :         character(*,SKC)            , intent(in)    , contiguous    :: table(:,:)
    8920             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8921             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8922             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8923             :         type(trans_type)            , intent(in)                    :: operation
    8924             :         integer(IK)                 , intent(in)    , optional      :: roff
    8925             :         integer(IK)                 , intent(in)                    :: unit
    8926             :         integer(IK)                                                 :: err
    8927             :     end function
    8928             : #endif
    8929             : 
    8930             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8931             : 
    8932             : #if IK5_ENABLED
    8933             :     module function getErrTableWriteUnit_TO_D2_IK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8934             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8935             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_IK5
    8936             : #endif
    8937             :         use pm_kind, only: IKC => IK5
    8938             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8939             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8940             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8941             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8942             :         type(trans_type)            , intent(in)                    :: operation
    8943             :         integer(IK)                 , intent(in)    , optional      :: roff
    8944             :         integer(IK)                 , intent(in)                    :: unit
    8945             :         integer(IK)                                                 :: err
    8946             :     end function
    8947             : #endif
    8948             : 
    8949             : #if IK4_ENABLED
    8950             :     module function getErrTableWriteUnit_TO_D2_IK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8951             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8952             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_IK4
    8953             : #endif
    8954             :         use pm_kind, only: IKC => IK4
    8955             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8956             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8957             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8958             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8959             :         type(trans_type)            , intent(in)                    :: operation
    8960             :         integer(IK)                 , intent(in)    , optional      :: roff
    8961             :         integer(IK)                 , intent(in)                    :: unit
    8962             :         integer(IK)                                                 :: err
    8963             :     end function
    8964             : #endif
    8965             : 
    8966             : #if IK3_ENABLED
    8967             :     module function getErrTableWriteUnit_TO_D2_IK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8969             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_IK3
    8970             : #endif
    8971             :         use pm_kind, only: IKC => IK3
    8972             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8973             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8974             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8975             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8976             :         type(trans_type)            , intent(in)                    :: operation
    8977             :         integer(IK)                 , intent(in)    , optional      :: roff
    8978             :         integer(IK)                 , intent(in)                    :: unit
    8979             :         integer(IK)                                                 :: err
    8980             :     end function
    8981             : #endif
    8982             : 
    8983             : #if IK2_ENABLED
    8984             :     module function getErrTableWriteUnit_TO_D2_IK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    8985             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8986             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_IK2
    8987             : #endif
    8988             :         use pm_kind, only: IKC => IK2
    8989             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    8990             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    8991             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    8992             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    8993             :         type(trans_type)            , intent(in)                    :: operation
    8994             :         integer(IK)                 , intent(in)    , optional      :: roff
    8995             :         integer(IK)                 , intent(in)                    :: unit
    8996             :         integer(IK)                                                 :: err
    8997             :     end function
    8998             : #endif
    8999             : 
    9000             : #if IK1_ENABLED
    9001             :     module function getErrTableWriteUnit_TO_D2_IK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9002             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9003             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_IK1
    9004             : #endif
    9005             :         use pm_kind, only: IKC => IK1
    9006             :         integer(IKC)                , intent(in)    , contiguous    :: table(:,:)
    9007             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9008             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9009             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9010             :         type(trans_type)            , intent(in)                    :: operation
    9011             :         integer(IK)                 , intent(in)    , optional      :: roff
    9012             :         integer(IK)                 , intent(in)                    :: unit
    9013             :         integer(IK)                                                 :: err
    9014             :     end function
    9015             : #endif
    9016             : 
    9017             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9018             : 
    9019             : #if LK5_ENABLED
    9020             :     module function getErrTableWriteUnit_TO_D2_LK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9021             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9022             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_LK5
    9023             : #endif
    9024             :         use pm_kind, only: LKC => LK5
    9025             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    9026             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9027             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9028             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9029             :         type(trans_type)            , intent(in)                    :: operation
    9030             :         integer(IK)                 , intent(in)    , optional      :: roff
    9031             :         integer(IK)                 , intent(in)                    :: unit
    9032             :         integer(IK)                                                 :: err
    9033             :     end function
    9034             : #endif
    9035             : 
    9036             : #if LK4_ENABLED
    9037             :     module function getErrTableWriteUnit_TO_D2_LK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9038             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9039             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_LK4
    9040             : #endif
    9041             :         use pm_kind, only: LKC => LK4
    9042             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    9043             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9044             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9045             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9046             :         type(trans_type)            , intent(in)                    :: operation
    9047             :         integer(IK)                 , intent(in)    , optional      :: roff
    9048             :         integer(IK)                 , intent(in)                    :: unit
    9049             :         integer(IK)                                                 :: err
    9050             :     end function
    9051             : #endif
    9052             : 
    9053             : #if LK3_ENABLED
    9054             :     module function getErrTableWriteUnit_TO_D2_LK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9055             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9056             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_LK3
    9057             : #endif
    9058             :         use pm_kind, only: LKC => LK3
    9059             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    9060             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9061             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9062             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9063             :         type(trans_type)            , intent(in)                    :: operation
    9064             :         integer(IK)                 , intent(in)    , optional      :: roff
    9065             :         integer(IK)                 , intent(in)                    :: unit
    9066             :         integer(IK)                                                 :: err
    9067             :     end function
    9068             : #endif
    9069             : 
    9070             : #if LK2_ENABLED
    9071             :     module function getErrTableWriteUnit_TO_D2_LK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9072             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9073             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_LK2
    9074             : #endif
    9075             :         use pm_kind, only: LKC => LK2
    9076             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    9077             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9078             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9079             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9080             :         type(trans_type)            , intent(in)                    :: operation
    9081             :         integer(IK)                 , intent(in)    , optional      :: roff
    9082             :         integer(IK)                 , intent(in)                    :: unit
    9083             :         integer(IK)                                                 :: err
    9084             :     end function
    9085             : #endif
    9086             : 
    9087             : #if LK1_ENABLED
    9088             :     module function getErrTableWriteUnit_TO_D2_LK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9089             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9090             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_LK1
    9091             : #endif
    9092             :         use pm_kind, only: LKC => LK1
    9093             :         logical(LKC)                , intent(in)    , contiguous    :: table(:,:)
    9094             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9095             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9096             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9097             :         type(trans_type)            , intent(in)                    :: operation
    9098             :         integer(IK)                 , intent(in)    , optional      :: roff
    9099             :         integer(IK)                 , intent(in)                    :: unit
    9100             :         integer(IK)                                                 :: err
    9101             :     end function
    9102             : #endif
    9103             : 
    9104             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9105             : 
    9106             : #if CK5_ENABLED
    9107             :     module function getErrTableWriteUnit_TO_D2_CK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9108             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9109             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_CK5
    9110             : #endif
    9111             :         use pm_kind, only: CKC => CK5
    9112             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    9113             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9114             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9115             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9116             :         type(trans_type)            , intent(in)                    :: operation
    9117             :         integer(IK)                 , intent(in)    , optional      :: roff
    9118             :         integer(IK)                 , intent(in)                    :: unit
    9119             :         integer(IK)                                                 :: err
    9120             :     end function
    9121             : #endif
    9122             : 
    9123             : #if CK4_ENABLED
    9124             :     module function getErrTableWriteUnit_TO_D2_CK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9125             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9126             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_CK4
    9127             : #endif
    9128             :         use pm_kind, only: CKC => CK4
    9129             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    9130             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9131             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9132             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9133             :         type(trans_type)            , intent(in)                    :: operation
    9134             :         integer(IK)                 , intent(in)    , optional      :: roff
    9135             :         integer(IK)                 , intent(in)                    :: unit
    9136             :         integer(IK)                                                 :: err
    9137             :     end function
    9138             : #endif
    9139             : 
    9140             : #if CK3_ENABLED
    9141             :     module function getErrTableWriteUnit_TO_D2_CK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9142             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9143             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_CK3
    9144             : #endif
    9145             :         use pm_kind, only: CKC => CK3
    9146             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    9147             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9148             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9149             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9150             :         type(trans_type)            , intent(in)                    :: operation
    9151             :         integer(IK)                 , intent(in)    , optional      :: roff
    9152             :         integer(IK)                 , intent(in)                    :: unit
    9153             :         integer(IK)                                                 :: err
    9154             :     end function
    9155             : #endif
    9156             : 
    9157             : #if CK2_ENABLED
    9158             :     module function getErrTableWriteUnit_TO_D2_CK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9159             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9160             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_CK2
    9161             : #endif
    9162             :         use pm_kind, only: CKC => CK2
    9163             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    9164             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9165             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9166             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9167             :         type(trans_type)            , intent(in)                    :: operation
    9168             :         integer(IK)                 , intent(in)    , optional      :: roff
    9169             :         integer(IK)                 , intent(in)                    :: unit
    9170             :         integer(IK)                                                 :: err
    9171             :     end function
    9172             : #endif
    9173             : 
    9174             : #if CK1_ENABLED
    9175             :     module function getErrTableWriteUnit_TO_D2_CK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9176             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9177             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_CK1
    9178             : #endif
    9179             :         use pm_kind, only: CKC => CK1
    9180             :         complex(CKC)                , intent(in)    , contiguous    :: table(:,:)
    9181             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9182             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9183             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9184             :         type(trans_type)            , intent(in)                    :: operation
    9185             :         integer(IK)                 , intent(in)    , optional      :: roff
    9186             :         integer(IK)                 , intent(in)                    :: unit
    9187             :         integer(IK)                                                 :: err
    9188             :     end function
    9189             : #endif
    9190             : 
    9191             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9192             : 
    9193             : #if RK5_ENABLED
    9194             :     module function getErrTableWriteUnit_TO_D2_RK5(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9195             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9196             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_RK5
    9197             : #endif
    9198             :         use pm_kind, only: RKC => RK5
    9199             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    9200             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9201             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9202             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9203             :         type(trans_type)            , intent(in)                    :: operation
    9204             :         integer(IK)                 , intent(in)    , optional      :: roff
    9205             :         integer(IK)                 , intent(in)                    :: unit
    9206             :         integer(IK)                                                 :: err
    9207             :     end function
    9208             : #endif
    9209             : 
    9210             : #if RK4_ENABLED
    9211             :     module function getErrTableWriteUnit_TO_D2_RK4(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9212             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9213             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_RK4
    9214             : #endif
    9215             :         use pm_kind, only: RKC => RK4
    9216             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    9217             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9218             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9219             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9220             :         type(trans_type)            , intent(in)                    :: operation
    9221             :         integer(IK)                 , intent(in)    , optional      :: roff
    9222             :         integer(IK)                 , intent(in)                    :: unit
    9223             :         integer(IK)                                                 :: err
    9224             :     end function
    9225             : #endif
    9226             : 
    9227             : #if RK3_ENABLED
    9228             :     module function getErrTableWriteUnit_TO_D2_RK3(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9229             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9230             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_RK3
    9231             : #endif
    9232             :         use pm_kind, only: RKC => RK3
    9233             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    9234             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9235             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9236             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9237             :         type(trans_type)            , intent(in)                    :: operation
    9238             :         integer(IK)                 , intent(in)    , optional      :: roff
    9239             :         integer(IK)                 , intent(in)                    :: unit
    9240             :         integer(IK)                                                 :: err
    9241             :     end function
    9242             : #endif
    9243             : 
    9244             : #if RK2_ENABLED
    9245             :     module function getErrTableWriteUnit_TO_D2_RK2(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9246             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9247             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_RK2
    9248             : #endif
    9249             :         use pm_kind, only: RKC => RK2
    9250             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    9251             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9252             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9253             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9254             :         type(trans_type)            , intent(in)                    :: operation
    9255             :         integer(IK)                 , intent(in)    , optional      :: roff
    9256             :         integer(IK)                 , intent(in)                    :: unit
    9257             :         integer(IK)                                                 :: err
    9258             :     end function
    9259             : #endif
    9260             : 
    9261             : #if RK1_ENABLED
    9262             :     module function getErrTableWriteUnit_TO_D2_RK1(unit, table, operation, header, sep, deliml, delimr, roff, iomsg) result(err)
    9263             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9264             :         !DEC$ ATTRIBUTES DLLEXPORT :: getErrTableWriteUnit_TO_D2_RK1
    9265             : #endif
    9266             :         use pm_kind, only: RKC => RK1
    9267             :         real(RKC)                   , intent(in)    , contiguous    :: table(:,:)
    9268             :         character(*, SK)            , intent(in)    , optional      :: header, sep
    9269             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
    9270             :         character(*, SK)            , intent(inout) , optional      :: iomsg
    9271             :         type(trans_type)            , intent(in)                    :: operation
    9272             :         integer(IK)                 , intent(in)    , optional      :: roff
    9273             :         integer(IK)                 , intent(in)                    :: unit
    9274             :         integer(IK)                                                 :: err
    9275             :     end function
    9276             : #endif
    9277             : 
    9278             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9279             : 
    9280             :     end interface
    9281             : 
    9282             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9283             : 
    9284             :     !>  \brief
    9285             :     !>  Generate and return the best-guess field separator of a (sequential-access) file stored in the input `file`.
    9286             :     !>
    9287             :     !>  \details
    9288             :     !>  The current algorithm takes an input string from the user containing the set of best-guess single-character separators.<br>
    9289             :     !>  It then counts the frequency of the separators in the **first two lines** from the current file position.<br>
    9290             :     !>  If the file format is list-directed or [CSV](@ref pm_io::csv_type), the searcher will skip singly or doubly quoted strings in each line.<br>
    9291             :     !>  The search will be also skipped into the next line if an opening quotation does not close within the same line (characteristic of CSV files).<br>
    9292             :     !>  Finally, the first input separator whose frequency is the same in both lines is returned as the potential field separator of the file.<br>
    9293             :     !>  At the end of the search, the file position is returned to the original point at entry to the file.
    9294             :     !>
    9295             :     !>  \param[in]      file    :   The input scalar `character` of default kind \SK containing the path to the file whose separator is to be inferred.<br>
    9296             :     !>                              On input, the file position will be rewound to the starting point in the file and the file is closed upon return.<br>
    9297             :     !>                              If search from a particular point in the file is desirable, open the file first and pass the file `unit` as input to this generic interface.<br>
    9298             :     !>                              (**optional**. It must be present **if and only if** the input argument `unit` is missing.)
    9299             :     !>  \param[in]      unit    :   The input scalar `integer` of default kind \IK containing the unit of the connected file whose separator is to be inferred.<br>
    9300             :     !>                              (**optional**. It must be present **if and only if** the input argument `file` is missing.)
    9301             :     !>  \param[in]      seps    :   The input object that can be,<br>
    9302             :     !>                              <ol>
    9303             :     !>                                  <li>    a scalar of type `character` of default kind \SK of arbitrary length type parameter,
    9304             :     !>                                          **each character** of which will be considered as a potential field separator in the file records.<br>
    9305             :     !>                                          This form of inputting `seps` is useful when all potential separators are single characters.<br>
    9306             :     !>                                  <li>    a vector of type [css_type](@ref pm_container::css_type) container of arbitrary size,
    9307             :     !>                                          **each element** of which will be considered as a potential field separator in the file records.<br>
    9308             :     !>                                          This form of inputting `seps` is useful when the potential separators have differing length type parameters.<br>
    9309             :     !>                                          If there is only one separator candidate, simply wrap the scalar container in
    9310             :     !>                                          the Fortran intrinsic vector notation `[seps]` and pass it to the interface.<br>
    9311             :     !>                                          In such a case, the output `sep` is either
    9312             :     !>                                          <ol>
    9313             :     !>                                              <li>    the input `seps` implying that `sep` is the potential separator in the file record, or
    9314             :     !>                                              <li>    is an empty string implying that the input `seps` is not the record separator,
    9315             :     !>                                                      or otherwise, an error occurred.<br>
    9316             :     !>                              </ol>
    9317             :     !>  \param[in]      form    :   The input scalar constant that can be any of the following:<br>
    9318             :     !>                              <ol>
    9319             :     !>                                  <li>    the constant [csv](@ref pm_io::csv) or an object of type [csv_type](@ref pm_io::csv_type),
    9320             :     !>                                          implying that the contents quoted strings must be excluded from the search for the field separators.<br>
    9321             :     !>                                  <li>    the constant [fld](@ref pm_io::fld) or an object of type [fld_type](@ref pm_io::fld_type),
    9322             :     !>                                          implying that the contents quoted strings must be excluded from the search for the field separators.<br>
    9323             :     !>                                          Additionally, any multiple adjacent appearances of (unquoted) blank characters will be counted as one separator instance.<br>
    9324             :     !>                              </ol>
    9325             :     !>                              (**optional**. default = [unknown](@ref pm_io::unknown))
    9326             :     !>  \param[out]     nfield  :   The input scalar `integer` of default kind \IK containing the number of **fields**
    9327             :     !>                              (i.e., the number of output `sep` instances per file record plus `1`) identified in each row of file, separated by the output separator.<br>
    9328             :     !>                              If no separator is identified (i.e., the output `sep` is empty) and no runtime IO error occurs, the output value for `nfield` is `1`
    9329             :     !>                              implying that there is only one field in the file record.<br>
    9330             :     !>                              (**optional**.)
    9331             :     !>  \param[inout]   iomsg   :   The input/output scalar `character` of default kind \SK containing the error message, if any error occurs.<br>
    9332             :     !>                              A length type parameter value of [LEN_IOMSG](@ref pm_io::LEN_IOMSG) is generally sufficient for `iomsg` to contain the output error messages.<br>
    9333             :     !>                              (**optional**. If missing, no information other than an empty output `sep` will be given if the algorithm fails.)
    9334             :     !>
    9335             :     !>  \return
    9336             :     !>  `sep`                   :   The output `allocatable` scalar `character` of default kind \SK that will contain the inferred separator if the algorithm returns successfully.<br>
    9337             :     !>                              Otherwise, the output `sep` will be set to an empty string if,<br>
    9338             :     !>                              <ol>
    9339             :     !>                                  <li>    the target file does not exist,
    9340             :     !>                                  <li>    an IO error occurs while reading the file,
    9341             :     !>                                  <li>    the algorithm fails to detect the separator.
    9342             :     !>                              </ol>
    9343             :     !>
    9344             :     !>  \interface{getFieldSep}
    9345             :     !>  \code{.F90}
    9346             :     !>
    9347             :     !>      use pm_io, only: getFieldSep
    9348             :     !>      character(:, SK), allocatable :: sep
    9349             :     !>
    9350             :     !>      ! read from the current position in unit.
    9351             :     !>
    9352             :     !>      sep = getFieldSep(unit, seps, iomsg = iomsg)
    9353             :     !>      sep = getFieldSep(unit, seps, form, iomsg = iomsg)
    9354             :     !>      sep = getFieldSep(unit, seps, nfield, iomsg = iomsg)
    9355             :     !>      sep = getFieldSep(unit, seps, form, nfield, iomsg = iomsg)
    9356             :     !>
    9357             :     !>      ! read from the starting position in file.
    9358             :     !>
    9359             :     !>      sep = getFieldSep(file, seps, iomsg = iomsg)
    9360             :     !>      sep = getFieldSep(file, seps, form, iomsg = iomsg)
    9361             :     !>      sep = getFieldSep(file, seps, nfield, iomsg = iomsg)
    9362             :     !>      sep = getFieldSep(file, seps, form, nfield, iomsg = iomsg)
    9363             :     !>
    9364             :     !>  \endcode
    9365             :     !>
    9366             :     !>  \warning
    9367             :     !>  The condition `0 < len(seps)` must hold for the corresponding input arguments.<br>
    9368             :     !>  The condition `0 < size(seps)` must hold for the corresponding input arguments.<br>
    9369             :     !>  The condition `all(0 < [(len(seps(i)%val), i = 1, size(seps))]` must hold for the corresponding input arguments.<br>
    9370             :     !>
    9371             :     !>  \impure
    9372             :     !>
    9373             :     !>  \see
    9374             :     !>  [setRecordFrom](@ref pm_io::setRecordFrom)<br>
    9375             :     !>  [getContentsFrom](@ref pm_io::getContentsFrom)<br>
    9376             :     !>  [setContentsFrom](@ref pm_io::setContentsFrom)<br>
    9377             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
    9378             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
    9379             :     !>
    9380             :     !>  \example{getFieldSep}
    9381             :     !>  \include{lineno} example/pm_io/getFieldSep/main.F90
    9382             :     !>  \compilef{getFieldSep}
    9383             :     !>  \output{getFieldSep}
    9384             :     !>  \include{lineno} example/pm_io/getFieldSep/main.out.F90
    9385             :     !>
    9386             :     !>  \test
    9387             :     !>  [test_pm_io](@ref test_pm_io)
    9388             :     !>
    9389             :     !>  \todo
    9390             :     !>  \pmed
    9391             :     !>  An `optional` input argument `maxlenfield` must be added to return the maximum inferred length of a field in all records of the table.<br>
    9392             :     !>  This option is potentially useful for parsing tables of string fields, where the proper field lengths is unknown a priori.<br>
    9393             :     !>  Without this option, the `read` action may fail or otherwise, long fields would be truncated to fit the fixed length of `table` fields.<br>
    9394             :     !>
    9395             :     !>  \todo
    9396             :     !>  \pmed
    9397             :     !>  The `optional` input arguments `deliml` and `delimr` of rank `1` of type [css_type](@ref pm_container::css_type)
    9398             :     !>  must be added to allow field recognition with arbitrary left/right delimiters within a record.<br>
    9399             :     !>
    9400             :     !>  \finmain{getFieldSep}
    9401             :     !>
    9402             :     !>  \author
    9403             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    9404             : 
    9405             :     ! seps scalar character scalar nfield missing XX
    9406             : 
    9407             :     interface getFieldSep
    9408             : 
    9409             :     module function getFieldSepFile_ID0_FDEF_XX_SK(file, seps, iomsg) result(sep)
    9410             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9411             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FDEF_XX_SK
    9412             : #endif
    9413             :         use pm_kind, only: SKC => SK
    9414             :         character(*, SK)    , intent(in)                :: file
    9415             :         character(*,SKC)    , intent(in)                :: seps
    9416             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9417             :         character(:,SKC)    , allocatable               :: sep
    9418             :     end function
    9419             : 
    9420             :     module function getFieldSepUnit_ID0_FDEF_XX_SK(unit, seps, iomsg) result(sep)
    9421             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9422             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FDEF_XX_SK
    9423             : #endif
    9424             :         use pm_kind, only: SKC => SK
    9425             :         integer(IK)         , intent(in)                :: unit
    9426             :         character(*,SKC)    , intent(in)                :: seps
    9427             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9428             :         character(:,SKC)    , allocatable               :: sep
    9429             :     end function
    9430             : 
    9431             :     module function getFieldSepFile_ID0_FCSV_XX_SK(file, seps, form, iomsg) result(sep)
    9432             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9433             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FCSV_XX_SK
    9434             : #endif
    9435             :         use pm_kind, only: SKC => SK
    9436             :         character(*, SK)    , intent(in)                :: file
    9437             :         character(*,SKC)    , intent(in)                :: seps
    9438             :         type(csv_type)      , intent(in)                :: form
    9439             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9440             :         character(:,SKC)    , allocatable               :: sep
    9441             :     end function
    9442             : 
    9443             :     module function getFieldSepUnit_ID0_FCSV_XX_SK(unit, seps, form, iomsg) result(sep)
    9444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9445             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FCSV_XX_SK
    9446             : #endif
    9447             :         use pm_kind, only: SKC => SK
    9448             :         integer(IK)         , intent(in)                :: unit
    9449             :         character(*,SKC)    , intent(in)                :: seps
    9450             :         type(csv_type)      , intent(in)                :: form
    9451             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9452             :         character(:,SKC)    , allocatable               :: sep
    9453             :     end function
    9454             : 
    9455             :     module function getFieldSepFile_ID0_FFLD_XX_SK(file, seps, form, iomsg) result(sep)
    9456             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9457             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FFLD_XX_SK
    9458             : #endif
    9459             :         use pm_kind, only: SKC => SK
    9460             :         character(*, SK)    , intent(in)                :: file
    9461             :         character(*,SKC)    , intent(in)                :: seps
    9462             :         type(fld_type)      , intent(in)                :: form
    9463             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9464             :         character(:,SKC)    , allocatable               :: sep
    9465             :     end function
    9466             : 
    9467             :     module function getFieldSepUnit_ID0_FFLD_XX_SK(unit, seps, form, iomsg) result(sep)
    9468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9469             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FFLD_XX_SK
    9470             : #endif
    9471             :         use pm_kind, only: SKC => SK
    9472             :         integer(IK)         , intent(in)                :: unit
    9473             :         character(*,SKC)    , intent(in)                :: seps
    9474             :         type(fld_type)      , intent(in)                :: form
    9475             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9476             :         character(:,SKC)    , allocatable               :: sep
    9477             :     end function
    9478             : 
    9479             :     end interface
    9480             : 
    9481             :     ! seps scalar character nfield present NF
    9482             : 
    9483             :     interface getFieldSep
    9484             : 
    9485             :     module function getFieldSepFile_ID0_FDEF_NF_SK(file, seps, nfield, iomsg) result(sep)
    9486             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9487             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FDEF_NF_SK
    9488             : #endif
    9489             :         use pm_kind, only: SKC => SK
    9490             :         character(*, SK)    , intent(in)                :: file
    9491             :         character(*,SKC)    , intent(in)                :: seps
    9492             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9493             :         character(:,SKC)    , allocatable               :: sep
    9494             :         integer(IK)         , intent(out)               :: nfield
    9495             :     end function
    9496             : 
    9497             :     module function getFieldSepUnit_ID0_FDEF_NF_SK(unit, seps, nfield, iomsg) result(sep)
    9498             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9499             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FDEF_NF_SK
    9500             : #endif
    9501             :         use pm_kind, only: SKC => SK
    9502             :         integer(IK)         , intent(in)                :: unit
    9503             :         character(*,SKC)    , intent(in)                :: seps
    9504             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9505             :         character(:,SKC)    , allocatable               :: sep
    9506             :         integer(IK)         , intent(out)               :: nfield
    9507             :     end function
    9508             : 
    9509             :     module function getFieldSepFile_ID0_FCSV_NF_SK(file, seps, form, nfield, iomsg) result(sep)
    9510             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9511             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FCSV_NF_SK
    9512             : #endif
    9513             :         use pm_kind, only: SKC => SK
    9514             :         character(*, SK)    , intent(in)                :: file
    9515             :         character(*,SKC)    , intent(in)                :: seps
    9516             :         type(csv_type)      , intent(in)                :: form
    9517             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9518             :         character(:,SKC)    , allocatable               :: sep
    9519             :         integer(IK)         , intent(out)               :: nfield
    9520             :     end function
    9521             : 
    9522             :     module function getFieldSepUnit_ID0_FCSV_NF_SK(unit, seps, form, nfield, iomsg) result(sep)
    9523             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9524             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FCSV_NF_SK
    9525             : #endif
    9526             :         use pm_kind, only: SKC => SK
    9527             :         integer(IK)         , intent(in)                :: unit
    9528             :         character(*,SKC)    , intent(in)                :: seps
    9529             :         type(csv_type)      , intent(in)                :: form
    9530             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9531             :         character(:,SKC)    , allocatable               :: sep
    9532             :         integer(IK)         , intent(out)               :: nfield
    9533             :     end function
    9534             : 
    9535             :     module function getFieldSepFile_ID0_FFLD_NF_SK(file, seps, form, nfield, iomsg) result(sep)
    9536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9537             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_ID0_FFLD_NF_SK
    9538             : #endif
    9539             :         use pm_kind, only: SKC => SK
    9540             :         character(*, SK)    , intent(in)                :: file
    9541             :         character(*,SKC)    , intent(in)                :: seps
    9542             :         type(fld_type)      , intent(in)                :: form
    9543             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9544             :         character(:,SKC)    , allocatable               :: sep
    9545             :         integer(IK)         , intent(out)               :: nfield
    9546             :     end function
    9547             : 
    9548             :     module function getFieldSepUnit_ID0_FFLD_NF_SK(unit, seps, form, nfield, iomsg) result(sep)
    9549             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9550             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_ID0_FFLD_NF_SK
    9551             : #endif
    9552             :         use pm_kind, only: SKC => SK
    9553             :         integer(IK)         , intent(in)                :: unit
    9554             :         character(*,SKC)    , intent(in)                :: seps
    9555             :         type(fld_type)      , intent(in)                :: form
    9556             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9557             :         character(:,SKC)    , allocatable               :: sep
    9558             :         integer(IK)         , intent(out)               :: nfield
    9559             :     end function
    9560             : 
    9561             :     end interface
    9562             : 
    9563             :     ! seps scalar container scalar nfield missing XX
    9564             : 
    9565             :     interface getFieldSep
    9566             : 
    9567             :     module function getFieldSepFile_CD1_FDEF_XX_SK(file, seps, iomsg) result(sep)
    9568             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9569             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FDEF_XX_SK
    9570             : #endif
    9571             :         use pm_kind, only: SKC => SK
    9572             :         character(*, SK)    , intent(in)                :: file
    9573             :         type(css_type)      , intent(in)                :: seps(:)
    9574             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9575             :         character(:,SKC)    , allocatable               :: sep
    9576             :     end function
    9577             : 
    9578             :     module function getFieldSepUnit_CD1_FDEF_XX_SK(unit, seps, iomsg) result(sep)
    9579             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9580             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FDEF_XX_SK
    9581             : #endif
    9582             :         use pm_kind, only: SKC => SK
    9583             :         integer(IK)         , intent(in)                :: unit
    9584             :         type(css_type)      , intent(in)                :: seps(:)
    9585             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9586             :         character(:,SKC)    , allocatable               :: sep
    9587             :     end function
    9588             : 
    9589             :     module function getFieldSepFile_CD1_FCSV_XX_SK(file, seps, form, iomsg) result(sep)
    9590             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9591             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FCSV_XX_SK
    9592             : #endif
    9593             :         use pm_kind, only: SKC => SK
    9594             :         character(*, SK)    , intent(in)                :: file
    9595             :         type(css_type)      , intent(in)                :: seps(:)
    9596             :         type(csv_type)      , intent(in)                :: form
    9597             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9598             :         character(:,SKC)    , allocatable               :: sep
    9599             :     end function
    9600             : 
    9601             :     module function getFieldSepUnit_CD1_FCSV_XX_SK(unit, seps, form, iomsg) result(sep)
    9602             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9603             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FCSV_XX_SK
    9604             : #endif
    9605             :         use pm_kind, only: SKC => SK
    9606             :         integer(IK)         , intent(in)                :: unit
    9607             :         type(css_type)      , intent(in)                :: seps(:)
    9608             :         type(csv_type)      , intent(in)                :: form
    9609             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9610             :         character(:,SKC)    , allocatable               :: sep
    9611             :     end function
    9612             : 
    9613             :     module function getFieldSepFile_CD1_FFLD_XX_SK(file, seps, form, iomsg) result(sep)
    9614             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9615             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FFLD_XX_SK
    9616             : #endif
    9617             :         use pm_kind, only: SKC => SK
    9618             :         character(*, SK)    , intent(in)                :: file
    9619             :         type(css_type)      , intent(in)                :: seps(:)
    9620             :         type(fld_type)      , intent(in)                :: form
    9621             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9622             :         character(:,SKC)    , allocatable               :: sep
    9623             :     end function
    9624             : 
    9625             :     module function getFieldSepUnit_CD1_FFLD_XX_SK(unit, seps, form, iomsg) result(sep)
    9626             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9627             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FFLD_XX_SK
    9628             : #endif
    9629             :         use pm_kind, only: SKC => SK
    9630             :         integer(IK)         , intent(in)                :: unit
    9631             :         type(css_type)      , intent(in)                :: seps(:)
    9632             :         type(fld_type)      , intent(in)                :: form
    9633             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9634             :         character(:,SKC)    , allocatable               :: sep
    9635             :     end function
    9636             : 
    9637             :     end interface
    9638             : 
    9639             :     ! seps scalar container nfield present NF
    9640             : 
    9641             :     interface getFieldSep
    9642             : 
    9643             :     module function getFieldSepFile_CD1_FDEF_NF_SK(file, seps, nfield, iomsg) result(sep)
    9644             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9645             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FDEF_NF_SK
    9646             : #endif
    9647             :         use pm_kind, only: SKC => SK
    9648             :         character(*, SK)    , intent(in)                :: file
    9649             :         type(css_type)      , intent(in)                :: seps(:)
    9650             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9651             :         character(:,SKC)    , allocatable               :: sep
    9652             :         integer(IK)         , intent(out)               :: nfield
    9653             :     end function
    9654             : 
    9655             :     module function getFieldSepUnit_CD1_FDEF_NF_SK(unit, seps, nfield, iomsg) result(sep)
    9656             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9657             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FDEF_NF_SK
    9658             : #endif
    9659             :         use pm_kind, only: SKC => SK
    9660             :         integer(IK)         , intent(in)                :: unit
    9661             :         type(css_type)      , intent(in)                :: seps(:)
    9662             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9663             :         character(:,SKC)    , allocatable               :: sep
    9664             :         integer(IK)         , intent(out)               :: nfield
    9665             :     end function
    9666             : 
    9667             :     module function getFieldSepFile_CD1_FCSV_NF_SK(file, seps, form, nfield, iomsg) result(sep)
    9668             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9669             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FCSV_NF_SK
    9670             : #endif
    9671             :         use pm_kind, only: SKC => SK
    9672             :         character(*, SK)    , intent(in)                :: file
    9673             :         type(css_type)      , intent(in)                :: seps(:)
    9674             :         type(csv_type)      , intent(in)                :: form
    9675             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9676             :         character(:,SKC)    , allocatable               :: sep
    9677             :         integer(IK)         , intent(out)               :: nfield
    9678             :     end function
    9679             : 
    9680             :     module function getFieldSepUnit_CD1_FCSV_NF_SK(unit, seps, form, nfield, iomsg) result(sep)
    9681             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9682             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FCSV_NF_SK
    9683             : #endif
    9684             :         use pm_kind, only: SKC => SK
    9685             :         integer(IK)         , intent(in)                :: unit
    9686             :         type(css_type)      , intent(in)                :: seps(:)
    9687             :         type(csv_type)      , intent(in)                :: form
    9688             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9689             :         character(:,SKC)    , allocatable               :: sep
    9690             :         integer(IK)         , intent(out)               :: nfield
    9691             :     end function
    9692             : 
    9693             :     module function getFieldSepFile_CD1_FFLD_NF_SK(file, seps, form, nfield, iomsg) result(sep)
    9694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9695             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepFile_CD1_FFLD_NF_SK
    9696             : #endif
    9697             :         use pm_kind, only: SKC => SK
    9698             :         character(*, SK)    , intent(in)                :: file
    9699             :         type(css_type)      , intent(in)                :: seps(:)
    9700             :         type(fld_type)      , intent(in)                :: form
    9701             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9702             :         character(:,SKC)    , allocatable               :: sep
    9703             :         integer(IK)         , intent(out)               :: nfield
    9704             :     end function
    9705             : 
    9706             :     module function getFieldSepUnit_CD1_FFLD_NF_SK(unit, seps, form, nfield, iomsg) result(sep)
    9707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9708             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFieldSepUnit_CD1_FFLD_NF_SK
    9709             : #endif
    9710             :         use pm_kind, only: SKC => SK
    9711             :         integer(IK)         , intent(in)                :: unit
    9712             :         type(css_type)      , intent(in)                :: seps(:)
    9713             :         type(fld_type)      , intent(in)                :: form
    9714             :         character(*,SKC)    , intent(inout) , optional  :: iomsg
    9715             :         character(:,SKC)    , allocatable               :: sep
    9716             :         integer(IK)         , intent(out)               :: nfield
    9717             :     end function
    9718             : 
    9719             :     end interface
    9720             : 
    9721             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9722             : 
    9723             :     !>  \brief
    9724             :     !>  This is the derived type for constructing objects that contain the specifications of the [getStrWrapped](@ref pm_str::getStrWrapped)
    9725             :     !>  dynamic method of objects of derived type [wrap_type](@ref pm_io::wrap_type).<br>
    9726             :     !>
    9727             :     !>  \details
    9728             :     !>  See the documentation of [display_type](@ref pm_io::display_type) for further details and example usage.<br>
    9729             :     !>
    9730             :     !>  \param[in]  newline     :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9731             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9732             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9733             :     !>  \param[in]  fill        :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9734             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9735             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9736             :     !>  \param[in]  lwfill      :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9737             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9738             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9739             :     !>  \param[in]  rwfill      :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9740             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9741             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9742             :     !>  \param[in]  twfill      :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9743             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9744             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9745             :     !>  \param[in]  bwfill      :   The input scalar of type `character` of default kind \SK of arbitrary length type parameter.<br>
    9746             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9747             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9748             :     !>  \param[in]  lwsize      :   The input scalar `integer` of default kind \IK.<br>
    9749             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9750             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9751             :     !>  \param[in]  rwsize      :   The input scalar `integer` of default kind \IK.<br>
    9752             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9753             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9754             :     !>  \param[in]  twsize      :   The input scalar `integer` of default kind \IK.<br>
    9755             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9756             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9757             :     !>  \param[in]  bwsize      :   The input scalar `integer` of default kind \IK.<br>
    9758             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9759             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9760             :     !>  \param[in]  tmsize      :   The input scalar `integer` of default kind \IK representing the number of rows in the display to skip before printing the wrapped `str`.<br>
    9761             :     !>                              (**optional**, default = `0_IK`)
    9762             :     !>  \param[in]  bmsize      :   The input scalar `integer` of default kind \IK representing the number of rows in the display to skip after printing the wrapped `str`.<br>
    9763             :     !>                              (**optional**, default = `0_IK`)
    9764             :     !>  \param[in]  width       :   The input scalar `integer` of default kind \IK.<br>
    9765             :     !>                              For details, see the description of the corresponding argument of the [wrap_type%%wrap](@ref pm_io::wrap) dynamic method of the derived type [display_type](@ref pm_io::display_type).<br>
    9766             :     !>                              (**optional**. The default value is set as described in the documentation of the corresponding argument of [wrap_type%%wrap](@ref pm_io::wrap).)
    9767             :     !>  \param[in]  unit        :   The input scalar `integer` of default kind \IK representing the output display unit number where the text will be displayed.<br>
    9768             :     !>                              (**optional**, default = `output_unit` from `iso_fortran_env` intrinsic module.)
    9769             :     !>  \param[in]  sticky      :   The input scalar of type `logical` of default kind \LK.<br>
    9770             :     !>                              If `.true.`, the global properties (i.e., components) of the object of class [wrap_type](@ref pm_io::wrap_type)
    9771             :     !>                              can be overridden by the corresponding arguments passed to the dynamic methods of the object.<br>
    9772             :     !>                              (**optional**, default = `.false.`)
    9773             :     !>
    9774             :     !>  \interface{wrap_type}
    9775             :     !>  \code{.F90}
    9776             :     !>
    9777             :     !>      use pm_io, only: wrap_type
    9778             :     !>      type(wrap_type) :: wrap
    9779             :     !>
    9780             :     !>      wrap = wrap_type( newline = newline   &
    9781             :     !>                      , fill = fill         &
    9782             :     !>                      , lwfill = lwfill     &
    9783             :     !>                      , rwfill = rwfill     &
    9784             :     !>                      , twfill = twfill     &
    9785             :     !>                      , bwfill = bwfill     &
    9786             :     !>                      , lwsize = lwsize     &
    9787             :     !>                      , rwsize = rwsize     &
    9788             :     !>                      , twsize = twsize     &
    9789             :     !>                      , bwsize = bwsize     &
    9790             :     !>                      , tmsize = tmsize     &
    9791             :     !>                      , bmsize = bmsize     &
    9792             :     !>                      , width = width       &
    9793             :     !>                      , sticky = sticky     &
    9794             :     !>                      )
    9795             :     !>
    9796             :     !>  \endcode
    9797             :     !>
    9798             :     !>  \devnote
    9799             :     !>  The allocation status of the components is used as the actual argument presence within the derived type methods.<br>
    9800             :     !>
    9801             :     !>  \see
    9802             :     !>  [wrap_type](@ref pm_io::wrap_type)<br>
    9803             :     !>  [mark_type](@ref pm_err::mark_type)<br>
    9804             :     !>  [note_type](@ref pm_err::note_type)<br>
    9805             :     !>  [warn_type](@ref pm_err::warn_type)<br>
    9806             :     !>  [stop_type](@ref pm_err::stop_type)<br>
    9807             :     !>  [wrap_type%%wrap()](@ref pm_io::wrap)<br>
    9808             :     !>  [display_type%%show()](@ref pm_io::show)<br>
    9809             :     !>  [display_type%%skip()](@ref pm_io::skip)<br>
    9810             :     !>  [display_type%%text](@ref pm_io::wrap_type)<br>
    9811             :     !>  [getStrWrapped](@ref pm_str::getStrWrapped)<br>
    9812             :     !>  [getCentered](@ref pm_arrayCenter::getCentered)<br>
    9813             :     !>  [setCentered](@ref pm_arrayCenter::setCentered)<br>
    9814             :     !>  [isFailedGetShellWidth](@ref pm_sysShell::isFailedGetShellWidth)<br>
    9815             :     !>  [isFailedGetShellHeight](@ref pm_sysShell::isFailedGetShellHeight)<br>
    9816             :     !>
    9817             :     !>  \example{wrap_type}
    9818             :     !>  \include{lineno} example/pm_io/wrap_type/main.F90
    9819             :     !>  \compilef{wrap_type}
    9820             :     !>  \output{wrap_type}
    9821             :     !>  \include{lineno} example/pm_io/wrap_type/main.out.F90
    9822             :     !>
    9823             :     !>  \test
    9824             :     !>  [test_pm_io](@ref test_pm_io)
    9825             :     !>
    9826             :     !>  \finmain{wrap_type}
    9827             :     !>
    9828             :     !>  \author
    9829             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    9830             :     type :: wrap_type
    9831             :         character(:, SK), allocatable   , public    :: newline              !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9832             :         character(:, SK), allocatable   , public    :: fill                 !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9833             :         character(:, SK), allocatable   , public    :: lwfill               !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9834             :         character(:, SK), allocatable   , public    :: rwfill               !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9835             :         character(:, SK), allocatable   , public    :: twfill               !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9836             :         character(:, SK), allocatable   , public    :: bwfill               !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9837             :         integer(IK)                     , public    :: lwsize = 2_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9838             :         integer(IK)                     , public    :: rwsize = 2_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9839             :         integer(IK)                     , public    :: twsize = 1_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9840             :         integer(IK)                     , public    :: bwsize = 1_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9841             :         integer(IK)                     , public    :: tmsize = 0_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9842             :         integer(IK)                     , public    :: bmsize = 0_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9843             :         integer(IK)                     , public    :: width = 96_IK        !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9844             :         integer(IK)                     , public    :: unit = output_unit   !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9845             :         logical(LK)                     , private   :: sticky = .false._LK  !<  \public See the description of the corresponding argument in the default constructor of [wrap_type](@ref pm_io::wrap_type).
    9846             :         logical(LK)                     , private   :: uninit = .true._LK   !<  \public The scalar of type `logical` of default kind \LK that is `.true.` if and only if the object has not been initialized for the first time.
    9847             :     contains
    9848             :         !>  \cond excluded
    9849             : #if     SK5_ENABLED
    9850             :         procedure, pass, private                ::          wrap_D0_SK5
    9851             :         generic                                 :: wrap =>  wrap_D0_SK5
    9852             : #endif
    9853             : #if     SK4_ENABLED
    9854             :         procedure, pass, private                ::          wrap_D0_SK4
    9855             :         generic                                 :: wrap =>  wrap_D0_SK4
    9856             : #endif
    9857             : #if     SK3_ENABLED
    9858             :         procedure, pass, private                ::          wrap_D0_SK3
    9859             :         generic                                 :: wrap =>  wrap_D0_SK3
    9860             : #endif
    9861             : #if     SK2_ENABLED
    9862             :         procedure, pass, private                ::          wrap_D0_SK2
    9863             :         generic                                 :: wrap =>  wrap_D0_SK2
    9864             : #endif
    9865             : #if     SK1_ENABLED
    9866             :         procedure, pass, private                ::          wrap_D0_SK1
    9867             :         generic                                 :: wrap =>  wrap_D0_SK1
    9868             : #endif
    9869             :         !>  \endcond excluded
    9870             :     end type
    9871             : 
    9872             :     !>  \brief
    9873             :     !>  This is a generic method of the derived type [display_type](@ref pm_io::display_type) with `pass` attribute.<br>
    9874             :     !>
    9875             :     !>  \details
    9876             :     !>  This method centers the input string `str` within the specified `width`, adds margins as requested on all sides, then displays the wrapped string in the output display.<br>
    9877             :     !>
    9878             :     !>  \note
    9879             :     !>  <ul>
    9880             :     !>      <li>    The procedures under this generic interface **do not perform any wrapping** of the input text as done by [getStrWrapped](@ref pm_str::getStrWrapped).<br>
    9881             :     !>      <li>    If needed, the input `str` must have been already wrapped via [getStrWrapped](@ref pm_str::getStrWrapped) with the desired input `newline`.<br>
    9882             :     !>      <li>    The procedures under this generic interface only **sandwich each line** in the input `str` with the specified left and right margins, then display the wrapped (sandwiched) lines.<br>
    9883             :     !>      <li>    If there are multiple lines within the input `str`, then they are all lef/right sandwiched in order, then displayed.<br>
    9884             :     !>      <li>    If top/bottom margins are also specified, then the entire set of output sandwiched lines is also collectively sandwiched by a top and a bottom margin, then displayed.<br>
    9885             :     !>  </ul>
    9886             :     !>
    9887             :     !>  \param[in]  str         :   The input scalar of type `character` of kind \SKALL that is to be wrapped (sandwiched).
    9888             :     !>  \param[in]  newline     :   The input scalar of the same type and kind as the input `str` of arbitrary length type parameter,
    9889             :     !>                              whose contents represent the dividing point between separate lines in the input `str` to display.<br>
    9890             :     !>                              For example, if the string contains the C-style newline character \f$\ms{\n}\f$, then set \f$\ms{newline = '\\n'}\f$.<br>
    9891             :     !>                              See also the documentation of the corresponding argument in [getStrWrapped](@ref pm_str::getStrWrapped).<br>
    9892             :     !>                              (**optional**, default = `new_line(SKC_"a")` where `SKC` refers to the kind of `str`.)
    9893             :     !>  \param[in]  fill        :   The input scalar of the same type and kind as the input `str` of length type parameter `len = 1`,
    9894             :     !>                              containing the value to fill the area between the content and left/right wrap margin in each line of the wrapped `str` in the display.<br>
    9895             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9896             :     !>                              (**optional**, default = `SKC_" "` where `SKC` is the kind of the input argument `str`.)
    9897             :     !>  \param[in]  lwfill      :   The input scalar of the same type and kind as the input `str` of length type parameter `len = 1`,
    9898             :     !>                              containing the value to fill the left wrap margin of each line of the wrapped `str` in the display.<br>
    9899             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9900             :     !>                              (**optional**, default = [MFILL](@ref pm_io::MFILL))
    9901             :     !>  \param[in]  rwfill      :   The input scalar of the same type and kind as the input `str` of length type parameter `len = 1`,
    9902             :     !>                              containing the value to fill the right wrap margin of each line of the wrapped `str` in the display.<br>
    9903             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9904             :     !>                              (**optional**, default = [MFILL](@ref pm_io::MFILL))
    9905             :     !>  \param[in]  twfill      :   The input scalar of the same type and kind as the input `str` of length type parameter `len = 1`,
    9906             :     !>                              containing the value to fill the top wrap margin of each line of the wrapped `str` in the display.<br>
    9907             :     !>                              (**optional**, default = [MFILL](@ref pm_io::MFILL))
    9908             :     !>  \param[in]  bwfill      :   The input scalar of the same type and kind as the input `str` of length type parameter `len = 1`,
    9909             :     !>                              containing the value to fill the bottom wrap margin of each line of the wrapped `str` in the display.<br>
    9910             :     !>                              (**optional**, default = [MFILL](@ref pm_io::MFILL))
    9911             :     !>  \param[in]  lwsize      :   The input scalar `integer` of default kind \IK representing the size of the left wrap margin of each line of the wrapped `str` in the display.<br>
    9912             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9913             :     !>                              (**optional**, default = `2_IK`)
    9914             :     !>  \param[in]  rwsize      :   The input scalar `integer` of default kind \IK representing the size of the right wrap margin of each line of the wrapped `str` in the display.<br>
    9915             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9916             :     !>                              (**optional**, default = `2_IK`)
    9917             :     !>  \param[in]  twsize      :   The input scalar `integer` of default kind \IK representing the size of the top wrap margin of the wrapped `str` in the display.<br>
    9918             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9919             :     !>                              (**optional**, default = `1_IK`)
    9920             :     !>  \param[in]  bwsize      :   The input scalar `integer` of default kind \IK representing the size of the bottom wrap margin of the wrapped `str` in the display.<br>
    9921             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9922             :     !>                              (**optional**, default = `1_IK`)
    9923             :     !>  \param[in]  tmsize      :   The input scalar `integer` of default kind \IK representing the number of rows in the display to skip before printing the wrapped `str` (i.e., the top margin).<br>
    9924             :     !>                              (**optional**, default = `0_IK`)
    9925             :     !>  \param[in]  bmsize      :   The input scalar `integer` of default kind \IK representing the number of rows in the display to skip after printing the wrapped `str` (i.e., the bottom margin).<br>
    9926             :     !>                              (**optional**, default = `0_IK`)
    9927             :     !>  \param[in]  width       :   The input scalar `integer` of default kind \IK representing the width of the contents of each wrapped line in the display.<br>
    9928             :     !>                              For more details, see the documentation of the `size` argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9929             :     !>                              Note that the full length of each line in the display is `lwsize + width + rwsize`.
    9930             :     !>                              (**optional**, default = `92_IK`)
    9931             :     !>  \param[in]  unit        :   The input scalar `integer` of default kind \IK representing the output display unit number where the text will be displayed.<br>
    9932             :     !>                              (**optional**, default = `display_type%%unit`)
    9933             :     !>  \param[in]  sticky      :   The input scalar of type `logical` of default kind \LK.<br>
    9934             :     !>                              If `.true.`, the global properties (i.e., components) of the object of class [wrap_type](@ref pm_io::wrap_type)
    9935             :     !>                              can be overridden by the corresponding arguments passed to the dynamic methods of the object.<br>
    9936             :     !>                              (**optional**, default = `.false.`)
    9937             :     !>
    9938             :     !>  \interface{wrap}
    9939             :     !>  \code{.F90}
    9940             :     !>
    9941             :     !>      use pm_io, only: wrap_type
    9942             :     !>      type(wrap_type) :: text
    9943             :     !>
    9944             :     !>      call text%wrap( str                 &
    9945             :     !>                    , newline = newline   &
    9946             :     !>                    , fill = fill         &
    9947             :     !>                    , lwfill = lwfill     &
    9948             :     !>                    , rwfill = rwfill     &
    9949             :     !>                    , twfill = twfill     &
    9950             :     !>                    , bwfill = bwfill     &
    9951             :     !>                    , lwsize = lwsize     &
    9952             :     !>                    , rwsize = rwsize     &
    9953             :     !>                    , twsize = twsize     &
    9954             :     !>                    , bwsize = bwsize     &
    9955             :     !>                    , tmsize = tmsize     &
    9956             :     !>                    , bmsize = bmsize     &
    9957             :     !>                    , width = width       &
    9958             :     !>                    , unit = unit         &
    9959             :     !>                    , sticky = sticky     &
    9960             :     !>                    )
    9961             :     !>
    9962             :     !>  \endcode
    9963             :     !>
    9964             :     !>  \warning
    9965             :     !>  Any overflow of a single line beyond the specified `width` is handled as described in the documentation of [getCentered](@ref pm_arrayCenter::getCentered).<br>
    9966             :     !>
    9967             :     !>  \impure
    9968             :     !>
    9969             :     !>  \note
    9970             :     !>  If the input `str` is potentially longer than the specified `width`, the overflowed text will be symmetrically cut from the beginning and the end of the `str`.<br>
    9971             :     !>  To avoid this behavior, `str` can be first passed to [getStrWrapped](@ref pm_str::getStrWrapped) to wrap it within the desired `width`.<br>
    9972             :     !>  The resulting `strWrapped` can be then passed to the procedures under this generic interface for centering, sandwiching, and displaying it.<br>
    9973             :     !>  This avoids the usually unnecessary and costly wrapping of the input `str` with the specified `width` by this interface.
    9974             :     !>
    9975             :     !>  \see
    9976             :     !>  [getStrWrapped](@ref pm_str::getStrWrapped)<br>
    9977             :     !>  [getCentered](@ref pm_arrayCenter::getCentered)<br>
    9978             :     !>  [setCentered](@ref pm_arrayCenter::setCentered)<br>
    9979             :     !>  [isFailedGetShellWidth](@ref pm_sysShell::isFailedGetShellWidth)<br>
    9980             :     !>  [isFailedGetShellHeight](@ref pm_sysShell::isFailedGetShellHeight)<br>
    9981             :     !>
    9982             :     !>  \example{wrap}
    9983             :     !>  \include{lineno} example/pm_io/wrap_type/main.F90
    9984             :     !>  \compilef{wrap}
    9985             :     !>  \output{wrap}
    9986             :     !>  \include{lineno} example/pm_io/wrap_type/main.out.F90
    9987             :     !>
    9988             :     !>  \test
    9989             :     !>  [test_pm_io](@ref test_pm_io)
    9990             :     !>
    9991             :     !>  \finmain
    9992             :     !>
    9993             :     !>  \author
    9994             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    9995             :     interface wrap
    9996             : 
    9997             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9998             : 
    9999             : #if SK5_ENABLED
   10000             :     impure module subroutine wrap_D0_SK5(self, str, newline, fill, lwfill, rwfill, twfill, bwfill, lwsize, rwsize, twsize, bwsize, tmsize, bmsize, width, unit, sticky)
   10001             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10002             :         !DEC$ ATTRIBUTES DLLEXPORT :: wrap_D0_SK5
   10003             : #endif
   10004             :         use pm_kind, only: SKC => SK5
   10005             :         class(wrap_type)            , intent(inout)                 :: self
   10006             :         character(*,SKC)            , intent(in)                    :: str
   10007             :         character(*,SKC)            , intent(in)    , optional      :: newline
   10008             :         character(1,SKC)            , intent(in)    , optional      :: fill, lwfill, rwfill, twfill, bwfill
   10009             :         integer(IK)                 , intent(in)    , optional      :: lwsize, twsize, rwsize, bwsize
   10010             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize
   10011             :         integer(IK)                 , intent(in)    , optional      :: width, unit
   10012             :         logical(LK)                 , intent(in)    , optional      :: sticky
   10013             :     end subroutine
   10014             : #endif
   10015             : 
   10016             : #if SK4_ENABLED
   10017             :     impure module subroutine wrap_D0_SK4(self, str, newline, fill, lwfill, rwfill, twfill, bwfill, lwsize, rwsize, twsize, bwsize, tmsize, bmsize, width, unit, sticky)
   10018             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10019             :         !DEC$ ATTRIBUTES DLLEXPORT :: wrap_D0_SK4
   10020             : #endif
   10021             :         use pm_kind, only: SKC => SK4
   10022             :         class(wrap_type)            , intent(inout)                 :: self
   10023             :         character(*,SKC)            , intent(in)                    :: str
   10024             :         character(*,SKC)            , intent(in)    , optional      :: newline
   10025             :         character(1,SKC)            , intent(in)    , optional      :: fill, lwfill, rwfill, twfill, bwfill
   10026             :         integer(IK)                 , intent(in)    , optional      :: lwsize, twsize, rwsize, bwsize
   10027             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize
   10028             :         integer(IK)                 , intent(in)    , optional      :: width, unit
   10029             :         logical(LK)                 , intent(in)    , optional      :: sticky
   10030             :     end subroutine
   10031             : #endif
   10032             : 
   10033             : #if SK3_ENABLED
   10034             :     impure module subroutine wrap_D0_SK3(self, str, newline, fill, lwfill, rwfill, twfill, bwfill, lwsize, rwsize, twsize, bwsize, tmsize, bmsize, width, unit, sticky)
   10035             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10036             :         !DEC$ ATTRIBUTES DLLEXPORT :: wrap_D0_SK3
   10037             : #endif
   10038             :         use pm_kind, only: SKC => SK3
   10039             :         class(wrap_type)            , intent(inout)                 :: self
   10040             :         character(*,SKC)            , intent(in)                    :: str
   10041             :         character(*,SKC)            , intent(in)    , optional      :: newline
   10042             :         character(1,SKC)            , intent(in)    , optional      :: fill, lwfill, rwfill, twfill, bwfill
   10043             :         integer(IK)                 , intent(in)    , optional      :: lwsize, twsize, rwsize, bwsize
   10044             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize
   10045             :         integer(IK)                 , intent(in)    , optional      :: width, unit
   10046             :         logical(LK)                 , intent(in)    , optional      :: sticky
   10047             :     end subroutine
   10048             : #endif
   10049             : 
   10050             : #if SK2_ENABLED
   10051             :     impure module subroutine wrap_D0_SK2(self, str, newline, fill, lwfill, rwfill, twfill, bwfill, lwsize, rwsize, twsize, bwsize, tmsize, bmsize, width, unit, sticky)
   10052             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10053             :         !DEC$ ATTRIBUTES DLLEXPORT :: wrap_D0_SK2
   10054             : #endif
   10055             :         use pm_kind, only: SKC => SK2
   10056             :         class(wrap_type)            , intent(inout)                 :: self
   10057             :         character(*,SKC)            , intent(in)                    :: str
   10058             :         character(*,SKC)            , intent(in)    , optional      :: newline
   10059             :         character(1,SKC)            , intent(in)    , optional      :: fill, lwfill, rwfill, twfill, bwfill
   10060             :         integer(IK)                 , intent(in)    , optional      :: lwsize, twsize, rwsize, bwsize
   10061             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize
   10062             :         integer(IK)                 , intent(in)    , optional      :: width, unit
   10063             :         logical(LK)                 , intent(in)    , optional      :: sticky
   10064             :     end subroutine
   10065             : #endif
   10066             : 
   10067             : #if SK1_ENABLED
   10068             :     impure module subroutine wrap_D0_SK1(self, str, newline, fill, lwfill, rwfill, twfill, bwfill, lwsize, rwsize, twsize, bwsize, tmsize, bmsize, width, unit, sticky)
   10069             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10070             :         !DEC$ ATTRIBUTES DLLEXPORT :: wrap_D0_SK1
   10071             : #endif
   10072             :         use pm_kind, only: SKC => SK1
   10073             :         class(wrap_type)            , intent(inout)                 :: self
   10074             :         character(*,SKC)            , intent(in)                    :: str
   10075             :         character(*,SKC)            , intent(in)    , optional      :: newline
   10076             :         character(1,SKC)            , intent(in)    , optional      :: fill, lwfill, rwfill, twfill, bwfill
   10077             :         integer(IK)                 , intent(in)    , optional      :: lwsize, twsize, rwsize, bwsize
   10078             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize
   10079             :         integer(IK)                 , intent(in)    , optional      :: width, unit
   10080             :         logical(LK)                 , intent(in)    , optional      :: sticky
   10081             :     end subroutine
   10082             : #endif
   10083             : 
   10084             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10085             : 
   10086             :     end interface
   10087             : 
   10088             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10089             : 
   10090             :     !>  \brief
   10091             :     !>  Generate and return an object of type [display_type](@ref pm_io::display_type).
   10092             :     !>
   10093             :     !>  \details
   10094             :     !>  The generated object can be used to show decorated string or other string
   10095             :     !>  values on the standard output or an optionally-specified external file.
   10096             :     !>
   10097             :     !>  \param[in]  file        :   The input scalar of type `character` of default kind \SK, containing the path to the <b>un</b>connected external file to be opened and used as the display.<br>
   10098             :     !>                              <ol>
   10099             :     !>                                  <li>    If the `file` does not exist, it will be created, unless other behavior is dictated by the input `optional` argument `status`.<br>
   10100             :     !>                                  <li>    If it exists, it will be closed and reopened and the file position will be set to the input `position` argument.<br>
   10101             :     !>                              </ol>
   10102             :     !>                              If present, the `unit` component of the output display object will be set to the unit of the connected `file`.<br>
   10103             :     !>                              (**optional**. It can be present only if the input argument `unit` is missing.)
   10104             :     !>  \param[in]  unit        :   The input scalar `integer` of default kind \IK representing the output display unit number where contents will be displayed.<br>
   10105             :     !>                              If the specified `unit` is not connected, it will be connected to a temporary file with `status = "scratch"`.<br>
   10106             :     !>                              (**optional**, default = `output_unit`. It can be present <b>only if</b> the input argument `file` is missing.)
   10107             :     !>  \param[in]  status      :   The input scalar of type `character` of default kind \SK, whose contents represent the `status` of the input `file`.<br>
   10108             :     !>                              It can take any value acceptable by the same argument to the Fortran intrinsic `open()` statement: `"old"`, `"replace"`, `"new"`, `"unknown"`, etc.<br>
   10109             :     !>                              (**optional**, default = `SK_"old"` if the input `file` is already opened, otherwise `SK_"unknown"`. It can be present only if the input argument `file` is also present.)
   10110             :     !>  \param[in]  position    :   The input scalar of type `character` of default kind \SK, whose contents represent the `position` of the input connected `file`.<br>
   10111             :     !>                              It can take any value acceptable by the same argument to the Fortran intrinsic `open()` statement: `"asis"`, `"rewind"`, `"append"`, etc.<br>
   10112             :     !>                              (**optional**, default = `SK_"append"` if the input `file` is already opened, otherwise `SK_"asis"`. It can be present only if the input argument `file` is also present.)
   10113             :     !>  \param[in]  advance     :   The input scalar of type `character` of default kind \SK, whose contents represent the default `advance` mode of the IO.<br>
   10114             :     !>                              The contents of `advance` are directly passed to the corresponding `advance` argument of the Fortran intrinsic `read()` or `write` procedures.<br>
   10115             :     !>                              (**optional**, default = \f$\ms{SK_"YES"}\f$.)
   10116             :     !>  \param[in]  format      :   The input scalar of type [field_type](@ref pm_io::field_type),
   10117             :     !>                              whose components represent the **formats** to be used for the output records of various intrinsic types.<br>
   10118             :     !>                              Note that the components of the input `format` are applied to each output `record`, that is, one output row.<br>
   10119             :     !>                              The components of `format` are directly used as the `format` argument of the Fortran intrinsic `read()` and `write()` statements.<br>
   10120             :     !>                              To simply the specification of mathematical display formats for complex values as in \f$u + v\up{i}\f$, the `complex` component of the input object of type [field_type](@ref pm_io::field_type) can be also set to `SK_"math"`.<br>
   10121             :     !>                              In such a case, the math-style complex format [FORMAT_GENERIC_DISPLAY_COMPLEX_MATH](@ref pm_io::FORMAT_GENERIC_DISPLAY_COMPLEX_MATH) will be used for displaying `complex` valued objects.<br>
   10122             :     !>                              See also the generic interface [getFormat](@ref pm_io::getFormat) for creating custom formats for objects of specific type and kind.<br>
   10123             :     !>                              (**optional**, default = \f$\ms{"(sp,*(deliml,g0,', ',g0,delimr,:,', '))"}\f$ for `complex` fields and \f$\ms{"(sp,*(deliml,g0,delimr,:,', '))"}\f$ for all other field types,
   10124             :     !>                              where `deliml` and `delimr` refer to the corresponding left and right fields delimiter components of the input arguments `deliml` and `delimr`.)
   10125             :     !>  \param[in]  deliml      :   The input scalar of type [field_type](@ref pm_io::field_type),
   10126             :     !>                              whose components represent the left-delimiters to be used for left-delimiting (wrapping) fields of various intrinsic types.<br>
   10127             :     !>                              The two most common left-delimiters for strings are the single \f$\texttt{'}\f$ and double \f$\texttt{"}\f$ quotation marks.<br>
   10128             :     !>                              The common Fortran-style left-delimiter for `complex` values is the left-parenthesis \f$\texttt{(}\f$.<br>
   10129             :     !>                              The left-delimiter can be also set directly individually for objects of specific intrinsic types as an input argument to the relevant methods for displaying objects (e.g., [show()](@ref pm_io::show)).<br>
   10130             :     !>                              Initializing the left-delimiters here, however, defines it globally for all relevant methods throughout the life of the current object of type [display_type](@ref pm_io::display_type).<br>
   10131             :     !>                              Any component of the input `deliml` will be ignored in constructing the generic field formats, if the input argument `format` is present and its corresponding component is allocated.<br>
   10132             :     !>                              (**optional**, default = `delimr` or if missing or any component is unallocated, `"("` for `field` of type `complex` and \f$\ms{""}\f$ (i.e., no left-delimiter) for all other `field` types.)
   10133             :     !>  \param[in]  delimr      :   The input scalar of type [field_type](@ref pm_io::field_type),
   10134             :     !>                              whose components represent the right-delimiters to be used for right-delimiting (wrapping) fields of various intrinsic types.<br>
   10135             :     !>                              The two most common right-delimiters for strings are the single \f$\texttt{'}\f$ and double \f$\texttt{"}\f$ quotation marks.<br>
   10136             :     !>                              The common Fortran-style right-delimiter for `complex` values is the right-parenthesis \f$\texttt{)}\f$.<br>
   10137             :     !>                              The right-delimiter can be also set directly individually for objects of specific intrinsic types as an input argument to the relevant methods for displaying objects (e.g., [show()](@ref pm_io::show)).<br>
   10138             :     !>                              Initializing the right-delimiters here, however, defines it globally for all relevant methods throughout the life of the current object of type [display_type](@ref pm_io::display_type).<br>
   10139             :     !>                              Any component of the input `delimr` will be ignored in constructing the generic field formats, if the input argument `format` is present and its corresponding component is allocated.<br>
   10140             :     !>                              (**optional**, default = `deliml` or if missing or any component is unallocated, `")"` for `field` of type `complex` and \f$\ms{""}\f$ (i.e., no right-delimiter) for all other `field` types.)
   10141             :     !>  \param[in]  tmsize      :   The input scalar `integer` of default kind \IK representing the size of the top margin of any value that will be shown in the display.<br>
   10142             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
   10143             :     !>                              (**optional**, default = `0`)
   10144             :     !>  \param[in]  bmsize      :   The input scalar `integer` of default kind \IK representing the size of the bottom margin of value that will be shown in the display.<br>
   10145             :     !>                              For more details, see the documentation of the corresponding argument in [getCentered](@ref pm_arrayCenter::getCentered).<br>
   10146             :     !>                              (**optional**, default = `0`)
   10147             :     !>  \param[in]  count       :   The input scalar `integer` of default kind \IK representing the number of times each input value has to be displayed.
   10148             :     !>                              (**optional**, default = `1`. It can be present <b>if and only if</b> the `optional` input argument `file` is missing.)
   10149             :     !>  \param[in]  sticky      :   The input scalar of type `logical` of default kind \LK.<br>
   10150             :     !>                              If `.true.`, the global properties (i.e., components) of the object of class [display_type](@ref pm_io::display_type)
   10151             :     !>                              can be overridden by the corresponding arguments passed to the dynamic methods of the object.<br>
   10152             :     !>                              (**optional**, default = `.false.`)
   10153             :     !>  \param[in]  text        :   The input scalar of type [wrap_type](@ref pm_io::wrap_type) containing the runtime settings and a method to wrap strings within a fixed width.<br>
   10154             :     !>                              (**optional**, default = `wrap_type(tmsize = disp%%tmsize, bmsize = disp%%bmsize, width = disp%%width, unit = disp%%unit, sticky = disp%%sticky)`)
   10155             :     !>  \param[in]  mark        :   The input scalar of type [mark_type](@ref pm_err::mark_type) containing the runtime settings and a method to display remarks.<br>
   10156             :     !>                              (**optional**, default = `mark_type(tmsize = disp%%tmsize, bmsize = disp%%bmsize, width = disp%%width, unit = disp%%unit, sticky = disp%%sticky)`)
   10157             :     !>  \param[in]  note        :   The input scalar of type [note_type](@ref pm_err::note_type) containing the runtime settings and a method to display notification messages.<br>
   10158             :     !>                              (**optional**, default = `note_type(tmsize = disp%%tmsize, bmsize = disp%%bmsize, width = disp%%width, unit = disp%%unit, sticky = disp%%sticky)`)
   10159             :     !>  \param[in]  warn        :   The input scalar of type [warn_type](@ref pm_err::warn_type) containing the runtime settings and a method to display warning messages.<br>
   10160             :     !>                              (**optional**, default = `warn_type(tmsize = disp%%tmsize, bmsize = disp%%bmsize, width = disp%%width, unit = disp%%unit, sticky = disp%%sticky)`)
   10161             :     !>  \param[in]  stop        :   The input scalar of type [stop_type](@ref pm_err::stop_type) containing the runtime settings and a method to and stop the program and display program abortion messages.<br>
   10162             :     !>                              (**optional**, default = `stop_type(tmsize = disp%%tmsize, bmsize = disp%%bmsize, width = disp%%width, unit = disp%%unit, sticky = disp%%sticky)`)
   10163             :     !>
   10164             :     !>  \interface{display_type}
   10165             :     !>  \code{.F90}
   10166             :     !>
   10167             :     !>      use pm_io, only: display_type
   10168             :     !>      type(display_type) :: disp
   10169             :     !>
   10170             :     !>      disp = display_type( format = format        &
   10171             :     !>                         , advance = advance      &
   10172             :     !>                         , deliml = deliml        &
   10173             :     !>                         , delimr = delimr        &
   10174             :     !>                         , tmsize = tmsize        &
   10175             :     !>                         , bmsize = bmsize        &
   10176             :     !>                         , count = count          &
   10177             :     !>                         , sticky = sticky        &
   10178             :     !>                         , text = text            &
   10179             :     !>                         , mark = mark            &
   10180             :     !>                         , note = note            &
   10181             :     !>                         , warn = warn            &
   10182             :     !>                         , stop = stop            &
   10183             :     !>                         )
   10184             :     !>
   10185             :     !>      ! The `unit` of an already opened (connected file). If not connected, will be connected to a `scratch` file.
   10186             :     !>
   10187             :     !>      disp = display_type( unit                   &
   10188             :     !>                         , format = format        &
   10189             :     !>                         , advance = advance      &
   10190             :     !>                         , format = format        &
   10191             :     !>                         , deliml = deliml        &
   10192             :     !>                         , delimr = delimr        &
   10193             :     !>                         , tmsize = tmsize        &
   10194             :     !>                         , bmsize = bmsize        &
   10195             :     !>                         , count = count          &
   10196             :     !>                         , sticky = sticky        &
   10197             :     !>                         , text = text            &
   10198             :     !>                         , mark = mark            &
   10199             :     !>                         , note = note            &
   10200             :     !>                         , warn = warn            &
   10201             :     !>                         , stop = stop            &
   10202             :     !>                         )
   10203             :     !>
   10204             :     !>      ! The path to an external old or new `file`. If `file` is connected, it will be closed and reopened.
   10205             :     !>
   10206             :     !>      disp = display_type( file                   &
   10207             :     !>                         , status = status        &
   10208             :     !>                         , position = position    &
   10209             :     !>                         , advance = advance      &
   10210             :     !>                         , format = format        &
   10211             :     !>                         , deliml = deliml        &
   10212             :     !>                         , delimr = delimr        &
   10213             :     !>                         , tmsize = tmsize        &
   10214             :     !>                         , bmsize = bmsize        &
   10215             :     !>                         , count = count          &
   10216             :     !>                         , sticky = sticky        &
   10217             :     !>                         , text = text            &
   10218             :     !>                         , mark = mark            &
   10219             :     !>                         , note = note            &
   10220             :     !>                         , warn = warn            &
   10221             :     !>                         , stop = stop            &
   10222             :     !>                         )
   10223             :     !>
   10224             :     !>  \endcode
   10225             :     !>
   10226             :     !>  \warning
   10227             :     !>  The condition [isValidStatus(status)](@ref pm_io::isValidStatus) must hold for the corresponding input arguments.<br>
   10228             :     !>  The condition [isValidPosition(position)](@ref pm_io::isValidPosition) must hold for the corresponding input arguments.<br>
   10229             :     !>  \vericons
   10230             :     !>
   10231             :     !>  \warning
   10232             :     !>  Any overflow of a single line beyond the specified `width` is handled as
   10233             :     !>  described in the documentation of [getCentered](@ref pm_arrayCenter::getCentered).<br>
   10234             :     !>
   10235             :     !>  \warning
   10236             :     !>  All components of this derived type are `protected` and **read-only**.<br>
   10237             :     !>  However, all components are currently `public` until the `protected` attribute of Fortran 2023 is implemented by the compiler vendors.<br>
   10238             :     !>
   10239             :     !>  \impure
   10240             :     !>
   10241             :     !>  \see
   10242             :     !>  [wrap_type%%wrap()](@ref pm_io::wrap)<br>
   10243             :     !>  [display_type%%show()](@ref pm_io::show)<br>
   10244             :     !>  [display_type%%skip()](@ref pm_io::skip)<br>
   10245             :     !>  [getStrWrapped](@ref pm_str::getStrWrapped)<br>
   10246             :     !>  [getCentered](@ref pm_arrayCenter::getCentered)<br>
   10247             :     !>  [setCentered](@ref pm_arrayCenter::setCentered)<br>
   10248             :     !>  [isFailedGetShellWidth](@ref pm_sysShell::isFailedGetShellWidth)<br>
   10249             :     !>  [isFailedGetShellHeight](@ref pm_sysShell::isFailedGetShellHeight)<br>
   10250             :     !>
   10251             :     !>  \example{display_type}
   10252             :     !>  \include{lineno} example/pm_io/display_type/main.F90
   10253             :     !>  \compilef{display_type}
   10254             :     !>  \output{display_type}
   10255             :     !>  \include{lineno} example/pm_io/display_type/main.out.F90
   10256             :     !>
   10257             :     !>  \test
   10258             :     !>  [test_pm_io](@ref test_pm_io)
   10259             :     !>
   10260             :     !>  \bug
   10261             :     !>  \status \unresolved
   10262             :     !>  \source \ifx{2024.0.0}
   10263             :     !>  \desc
   10264             :     !>  The \ifx{2024.0.0} memory sanitizer in debug compilation (with heap memory, serial shared library generation)
   10265             :     !>  reports an uninitialized heap memory allocation usage where the constructor opens the specified input file.<br>
   10266             :     !>  \code{.F90}
   10267             :     !>      open(newunit = disp%unit, file = file, status = status_def, position = position_def)
   10268             :     !>  \endcode
   10269             :     !>  The cause of this error could not be identified, although the error can be bypassed by compiling in `release` mode.
   10270             :     !>  \remedy
   10271             :     !>  Currently none. This may need the attention of the Intel LLVM compiler developer team.
   10272             :     !>
   10273             :     !>  \todo
   10274             :     !>  \pvhigh
   10275             :     !>  The `public` attributes of all components of this derived type must be converted to `protected`
   10276             :     !>  once the `protected` attribute of Fortran 2023 is supported by the Fortran compilers supported by the ParaMonte library.<br>
   10277             :     !>
   10278             :     !>  \finmain{display_type}
   10279             :     !>
   10280             :     !>  \author
   10281             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   10282             :     type                                            :: display_type
   10283             :         logical(LK)                     , private   :: sticky = .false._LK  !<  \private    The scalar `logical` of default kind \LK. If `.true.` the relevant properties of the current object can be later changed by its methods.
   10284             :         logical(LK)                     , private   :: uninit = .true._LK   !<  \private    The scalar `logical` of default kind \LK that is internally set to `.false.` once the object is constructed.<br>
   10285             :                                                                             !!              The presence of this variable is to ensure seamless functioning of objects of [display_type](@ref pm_io::display_type)
   10286             :                                                                             !!              when the user forgets to call the type constructor.<br>
   10287             :                                                                             !!              The constructor call is critical for setting the allocatable components.<br>
   10288             :         integer(IK)                     , public    :: width = -huge(0_IK)  !<  \public     The scalar `integer` of default kind \IK containing the width of the runtime Shell screen or `-huge(0_IK)` if the inference fails or the display is not the standard output `output_unit`.
   10289             :         integer(IK)                     , public    :: height = -huge(0_IK) !<  \public     The scalar `integer` of default kind \IK containing the height of the runtime Shell screen or `-huge(0_IK)` if the inference fails or the display is not the standard output `output_unit`.
   10290             :         integer(IK)                     , public    :: tmsize = 0_IK        !<  \public     The scalar `integer` of default kind \IK containing the number of records to skip on top of the current record.
   10291             :         integer(IK)                     , public    :: count = 1_IK         !<  \public     The scalar `integer` of default kind \IK containing the number of times to repeat the current record.
   10292             :         integer(IK)                     , public    :: bmsize = 0_IK        !<  \public     The scalar `integer` of default kind \IK containing the number of records to skip on the bottom of the current record.
   10293             :         integer(IK)                     , public    :: unit = output_unit   !<  \public     The scalar `integer` of default kind \IK containing the unit number of the file to which the record must be written.
   10294             :         character(3, SK)                , public    :: advance = SK_"YES"   !<  \public     The scalar `character` of default kind \SK containing the default IO `advance` mode for reading/writing actions.
   10295             :         character(:, SK), allocatable   , public    :: file                 !<  \public     The scalar `character` of default kind \SK containing the file path to which the record must be written.
   10296             :         type(field_type)                , public    :: format               !<  \public     The scalar `character` of default kind \SK containing the default IO format with which the records should be displayed.
   10297             :         type(field_type)                , public    :: deliml               !<  \public     The scalar object of type [field_type](@ref pm_io::field_type) containing the left-delimiters for objects of various types.
   10298             :         type(field_type)                , public    :: delimr               !<  \public     The scalar object of type [field_type](@ref pm_io::field_type) containing the right-delimiters for objects of various types.
   10299             :         type(wrap_type)                 , public    :: text                 !<  \public     The scalar of type [wrap_type](@ref pm_io::wrap_type) containing the runtime settings and a method to wrap strings within a fixed width.
   10300             :         type(mark_type)                 , public    :: mark                 !<  \public     The scalar of type [mark_type](@ref pm_err::mark_type) containing the runtime settings and a method to display remarks.
   10301             :         type(note_type)                 , public    :: note                 !<  \public     The scalar of type [note_type](@ref pm_err::note_type) containing the runtime settings and a method to display notification messages.
   10302             :         type(warn_type)                 , public    :: warn                 !<  \public     The scalar of type [warn_type](@ref pm_err::warn_type) containing the runtime settings and a method to display warning messages.
   10303             :         type(stop_type)                 , public    :: stop                 !<  \public     The scalar of type [stop_type](@ref pm_err::stop_type) containing the runtime settings and a method to and stop the program and display program abortion messages.
   10304             :         !> \cond excluded
   10305             :     contains
   10306             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10307             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10308             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10309             : 
   10310             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10311             : 
   10312             : #if     SK5_ENABLED
   10313             :         procedure, pass, private                ::          show_D0_SK5, show_D1_SK5, show_D2_SK5, show_D3_SK5
   10314             :         generic                                 :: show =>  show_D0_SK5, show_D1_SK5, show_D2_SK5, show_D3_SK5
   10315             : #endif
   10316             : #if     SK4_ENABLED
   10317             :         procedure, pass, private                ::          show_D0_SK4, show_D1_SK4, show_D2_SK4, show_D3_SK4
   10318             :         generic                                 :: show =>  show_D0_SK4, show_D1_SK4, show_D2_SK4, show_D3_SK4
   10319             : #endif
   10320             : #if     SK3_ENABLED
   10321             :         procedure, pass, private                ::          show_D0_SK3, show_D1_SK3, show_D2_SK3, show_D3_SK3
   10322             :         generic                                 :: show =>  show_D0_SK3, show_D1_SK3, show_D2_SK3, show_D3_SK3
   10323             : #endif
   10324             : #if     SK2_ENABLED
   10325             :         procedure, pass, private                ::          show_D0_SK2, show_D1_SK2, show_D2_SK2, show_D3_SK2
   10326             :         generic                                 :: show =>  show_D0_SK2, show_D1_SK2, show_D2_SK2, show_D3_SK2
   10327             : #endif
   10328             : #if     SK1_ENABLED
   10329             :         procedure, pass, private                ::          show_D0_SK1, show_D1_SK1, show_D2_SK1, show_D3_SK1
   10330             :         generic                                 :: show =>  show_D0_SK1, show_D1_SK1, show_D2_SK1, show_D3_SK1
   10331             : #endif
   10332             : 
   10333             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10334             : 
   10335             : #if     IK5_ENABLED
   10336             :         procedure, pass, private                ::          show_D0_IK5, show_D1_IK5, show_D2_IK5, show_D3_IK5
   10337             :         generic                                 :: show =>  show_D0_IK5, show_D1_IK5, show_D2_IK5, show_D3_IK5
   10338             : #endif
   10339             : #if     IK4_ENABLED
   10340             :         procedure, pass, private                ::          show_D0_IK4, show_D1_IK4, show_D2_IK4, show_D3_IK4
   10341             :         generic                                 :: show =>  show_D0_IK4, show_D1_IK4, show_D2_IK4, show_D3_IK4
   10342             : #endif
   10343             : #if     IK3_ENABLED
   10344             :         procedure, pass, private                ::          show_D0_IK3, show_D1_IK3, show_D2_IK3, show_D3_IK3
   10345             :         generic                                 :: show =>  show_D0_IK3, show_D1_IK3, show_D2_IK3, show_D3_IK3
   10346             : #endif
   10347             : #if     IK2_ENABLED
   10348             :         procedure, pass, private                ::          show_D0_IK2, show_D1_IK2, show_D2_IK2, show_D3_IK2
   10349             :         generic                                 :: show =>  show_D0_IK2, show_D1_IK2, show_D2_IK2, show_D3_IK2
   10350             : #endif
   10351             : #if     IK1_ENABLED
   10352             :         procedure, pass, private                ::          show_D0_IK1, show_D1_IK1, show_D2_IK1, show_D3_IK1
   10353             :         generic                                 :: show =>  show_D0_IK1, show_D1_IK1, show_D2_IK1, show_D3_IK1
   10354             : #endif
   10355             : 
   10356             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10357             : 
   10358             : #if     LK5_ENABLED
   10359             :         procedure, pass, private                ::          show_D0_LK5, show_D1_LK5, show_D2_LK5, show_D3_LK5
   10360             :         generic                                 :: show =>  show_D0_LK5, show_D1_LK5, show_D2_LK5, show_D3_LK5
   10361             : #endif
   10362             : #if     LK4_ENABLED
   10363             :         procedure, pass, private                ::          show_D0_LK4, show_D1_LK4, show_D2_LK4, show_D3_LK4
   10364             :         generic                                 :: show =>  show_D0_LK4, show_D1_LK4, show_D2_LK4, show_D3_LK4
   10365             : #endif
   10366             : #if     LK3_ENABLED
   10367             :         procedure, pass, private                ::          show_D0_LK3, show_D1_LK3, show_D2_LK3, show_D3_LK3
   10368             :         generic                                 :: show =>  show_D0_LK3, show_D1_LK3, show_D2_LK3, show_D3_LK3
   10369             : #endif
   10370             : #if     LK2_ENABLED
   10371             :         procedure, pass, private                ::          show_D0_LK2, show_D1_LK2, show_D2_LK2, show_D3_LK2
   10372             :         generic                                 :: show =>  show_D0_LK2, show_D1_LK2, show_D2_LK2, show_D3_LK2
   10373             : #endif
   10374             : #if     LK1_ENABLED
   10375             :         procedure, pass, private                ::          show_D0_LK1, show_D1_LK1, show_D2_LK1, show_D3_LK1
   10376             :         generic                                 :: show =>  show_D0_LK1, show_D1_LK1, show_D2_LK1, show_D3_LK1
   10377             : #endif
   10378             : 
   10379             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10380             : 
   10381             : #if     CK5_ENABLED
   10382             :         procedure, pass, private                ::          show_D0_CK5, show_D1_CK5, show_D2_CK5, show_D3_CK5
   10383             :         generic                                 :: show =>  show_D0_CK5, show_D1_CK5, show_D2_CK5, show_D3_CK5
   10384             : #endif
   10385             : #if     CK4_ENABLED
   10386             :         procedure, pass, private                ::          show_D0_CK4, show_D1_CK4, show_D2_CK4, show_D3_CK4
   10387             :         generic                                 :: show =>  show_D0_CK4, show_D1_CK4, show_D2_CK4, show_D3_CK4
   10388             : #endif
   10389             : #if     CK3_ENABLED
   10390             :         procedure, pass, private                ::          show_D0_CK3, show_D1_CK3, show_D2_CK3, show_D3_CK3
   10391             :         generic                                 :: show =>  show_D0_CK3, show_D1_CK3, show_D2_CK3, show_D3_CK3
   10392             : #endif
   10393             : #if     CK2_ENABLED
   10394             :         procedure, pass, private                ::          show_D0_CK2, show_D1_CK2, show_D2_CK2, show_D3_CK2
   10395             :         generic                                 :: show =>  show_D0_CK2, show_D1_CK2, show_D2_CK2, show_D3_CK2
   10396             : #endif
   10397             : #if     CK1_ENABLED
   10398             :         procedure, pass, private                ::          show_D0_CK1, show_D1_CK1, show_D2_CK1, show_D3_CK1
   10399             :         generic                                 :: show =>  show_D0_CK1, show_D1_CK1, show_D2_CK1, show_D3_CK1
   10400             : #endif
   10401             : 
   10402             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10403             : 
   10404             : #if     RK5_ENABLED
   10405             :         procedure, pass, private                ::          show_D0_RK5, show_D1_RK5, show_D2_RK5, show_D3_RK5
   10406             :         generic                                 :: show =>  show_D0_RK5, show_D1_RK5, show_D2_RK5, show_D3_RK5
   10407             : #endif
   10408             : #if     RK4_ENABLED
   10409             :         procedure, pass, private                ::          show_D0_RK4, show_D1_RK4, show_D2_RK4, show_D3_RK4
   10410             :         generic                                 :: show =>  show_D0_RK4, show_D1_RK4, show_D2_RK4, show_D3_RK4
   10411             : #endif
   10412             : #if     RK3_ENABLED
   10413             :         procedure, pass, private                ::          show_D0_RK3, show_D1_RK3, show_D2_RK3, show_D3_RK3
   10414             :         generic                                 :: show =>  show_D0_RK3, show_D1_RK3, show_D2_RK3, show_D3_RK3
   10415             : #endif
   10416             : #if     RK2_ENABLED
   10417             :         procedure, pass, private                ::          show_D0_RK2, show_D1_RK2, show_D2_RK2, show_D3_RK2
   10418             :         generic                                 :: show =>  show_D0_RK2, show_D1_RK2, show_D2_RK2, show_D3_RK2
   10419             : #endif
   10420             : #if     RK1_ENABLED
   10421             :         procedure, pass, private                ::          show_D0_RK1, show_D1_RK1, show_D2_RK1, show_D3_RK1
   10422             :         generic                                 :: show =>  show_D0_RK1, show_D1_RK1, show_D2_RK1, show_D3_RK1
   10423             : #endif
   10424             : 
   10425             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10426             : 
   10427             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10428             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10429             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10430             : 
   10431             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10432             : 
   10433             : #if     SK5_ENABLED
   10434             :         procedure, pass, private                ::          show_D0_PSSK5, show_D1_PSSK5, show_D2_PSSK5, show_D3_PSSK5
   10435             :         generic                                 :: show =>  show_D0_PSSK5, show_D1_PSSK5, show_D2_PSSK5, show_D3_PSSK5
   10436             : #endif
   10437             : #if     SK4_ENABLED
   10438             :         procedure, pass, private                ::          show_D0_PSSK4, show_D1_PSSK4, show_D2_PSSK4, show_D3_PSSK4
   10439             :         generic                                 :: show =>  show_D0_PSSK4, show_D1_PSSK4, show_D2_PSSK4, show_D3_PSSK4
   10440             : #endif
   10441             : #if     SK3_ENABLED
   10442             :         procedure, pass, private                ::          show_D0_PSSK3, show_D1_PSSK3, show_D2_PSSK3, show_D3_PSSK3
   10443             :         generic                                 :: show =>  show_D0_PSSK3, show_D1_PSSK3, show_D2_PSSK3, show_D3_PSSK3
   10444             : #endif
   10445             : #if     SK2_ENABLED
   10446             :         procedure, pass, private                ::          show_D0_PSSK2, show_D1_PSSK2, show_D2_PSSK2, show_D3_PSSK2
   10447             :         generic                                 :: show =>  show_D0_PSSK2, show_D1_PSSK2, show_D2_PSSK2, show_D3_PSSK2
   10448             : #endif
   10449             : #if     SK1_ENABLED
   10450             :         procedure, pass, private                ::          show_D0_PSSK1, show_D1_PSSK1, show_D2_PSSK1, show_D3_PSSK1
   10451             :         generic                                 :: show =>  show_D0_PSSK1, show_D1_PSSK1, show_D2_PSSK1, show_D3_PSSK1
   10452             : #endif
   10453             : 
   10454             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10455             : 
   10456             : #if     IK5_ENABLED
   10457             :         procedure, pass, private                ::          show_D0_PSIK5, show_D1_PSIK5, show_D2_PSIK5, show_D3_PSIK5
   10458             :         generic                                 :: show =>  show_D0_PSIK5, show_D1_PSIK5, show_D2_PSIK5, show_D3_PSIK5
   10459             : #endif
   10460             : #if     IK4_ENABLED
   10461             :         procedure, pass, private                ::          show_D0_PSIK4, show_D1_PSIK4, show_D2_PSIK4, show_D3_PSIK4
   10462             :         generic                                 :: show =>  show_D0_PSIK4, show_D1_PSIK4, show_D2_PSIK4, show_D3_PSIK4
   10463             : #endif
   10464             : #if     IK3_ENABLED
   10465             :         procedure, pass, private                ::          show_D0_PSIK3, show_D1_PSIK3, show_D2_PSIK3, show_D3_PSIK3
   10466             :         generic                                 :: show =>  show_D0_PSIK3, show_D1_PSIK3, show_D2_PSIK3, show_D3_PSIK3
   10467             : #endif
   10468             : #if     IK2_ENABLED
   10469             :         procedure, pass, private                ::          show_D0_PSIK2, show_D1_PSIK2, show_D2_PSIK2, show_D3_PSIK2
   10470             :         generic                                 :: show =>  show_D0_PSIK2, show_D1_PSIK2, show_D2_PSIK2, show_D3_PSIK2
   10471             : #endif
   10472             : #if     IK1_ENABLED
   10473             :         procedure, pass, private                ::          show_D0_PSIK1, show_D1_PSIK1, show_D2_PSIK1, show_D3_PSIK1
   10474             :         generic                                 :: show =>  show_D0_PSIK1, show_D1_PSIK1, show_D2_PSIK1, show_D3_PSIK1
   10475             : #endif
   10476             : 
   10477             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10478             : 
   10479             : #if     LK5_ENABLED
   10480             :         procedure, pass, private                ::          show_D0_PSLK5, show_D1_PSLK5, show_D2_PSLK5, show_D3_PSLK5
   10481             :         generic                                 :: show =>  show_D0_PSLK5, show_D1_PSLK5, show_D2_PSLK5, show_D3_PSLK5
   10482             : #endif
   10483             : #if     LK4_ENABLED
   10484             :         procedure, pass, private                ::          show_D0_PSLK4, show_D1_PSLK4, show_D2_PSLK4, show_D3_PSLK4
   10485             :         generic                                 :: show =>  show_D0_PSLK4, show_D1_PSLK4, show_D2_PSLK4, show_D3_PSLK4
   10486             : #endif
   10487             : #if     LK3_ENABLED
   10488             :         procedure, pass, private                ::          show_D0_PSLK3, show_D1_PSLK3, show_D2_PSLK3, show_D3_PSLK3
   10489             :         generic                                 :: show =>  show_D0_PSLK3, show_D1_PSLK3, show_D2_PSLK3, show_D3_PSLK3
   10490             : #endif
   10491             : #if     LK2_ENABLED
   10492             :         procedure, pass, private                ::          show_D0_PSLK2, show_D1_PSLK2, show_D2_PSLK2, show_D3_PSLK2
   10493             :         generic                                 :: show =>  show_D0_PSLK2, show_D1_PSLK2, show_D2_PSLK2, show_D3_PSLK2
   10494             : #endif
   10495             : #if     LK1_ENABLED
   10496             :         procedure, pass, private                ::          show_D0_PSLK1, show_D1_PSLK1, show_D2_PSLK1, show_D3_PSLK1
   10497             :         generic                                 :: show =>  show_D0_PSLK1, show_D1_PSLK1, show_D2_PSLK1, show_D3_PSLK1
   10498             : #endif
   10499             : 
   10500             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10501             : 
   10502             : #if     CK5_ENABLED
   10503             :         procedure, pass, private                ::          show_D0_PSCK5, show_D1_PSCK5, show_D2_PSCK5, show_D3_PSCK5
   10504             :         generic                                 :: show =>  show_D0_PSCK5, show_D1_PSCK5, show_D2_PSCK5, show_D3_PSCK5
   10505             : #endif
   10506             : #if     CK4_ENABLED
   10507             :         procedure, pass, private                ::          show_D0_PSCK4, show_D1_PSCK4, show_D2_PSCK4, show_D3_PSCK4
   10508             :         generic                                 :: show =>  show_D0_PSCK4, show_D1_PSCK4, show_D2_PSCK4, show_D3_PSCK4
   10509             : #endif
   10510             : #if     CK3_ENABLED
   10511             :         procedure, pass, private                ::          show_D0_PSCK3, show_D1_PSCK3, show_D2_PSCK3, show_D3_PSCK3
   10512             :         generic                                 :: show =>  show_D0_PSCK3, show_D1_PSCK3, show_D2_PSCK3, show_D3_PSCK3
   10513             : #endif
   10514             : #if     CK2_ENABLED
   10515             :         procedure, pass, private                ::          show_D0_PSCK2, show_D1_PSCK2, show_D2_PSCK2, show_D3_PSCK2
   10516             :         generic                                 :: show =>  show_D0_PSCK2, show_D1_PSCK2, show_D2_PSCK2, show_D3_PSCK2
   10517             : #endif
   10518             : #if     CK1_ENABLED
   10519             :         procedure, pass, private                ::          show_D0_PSCK1, show_D1_PSCK1, show_D2_PSCK1, show_D3_PSCK1
   10520             :         generic                                 :: show =>  show_D0_PSCK1, show_D1_PSCK1, show_D2_PSCK1, show_D3_PSCK1
   10521             : #endif
   10522             : 
   10523             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10524             : 
   10525             : #if     RK5_ENABLED
   10526             :         procedure, pass, private                ::          show_D0_PSRK5, show_D1_PSRK5, show_D2_PSRK5, show_D3_PSRK5
   10527             :         generic                                 :: show =>  show_D0_PSRK5, show_D1_PSRK5, show_D2_PSRK5, show_D3_PSRK5
   10528             : #endif
   10529             : #if     RK4_ENABLED
   10530             :         procedure, pass, private                ::          show_D0_PSRK4, show_D1_PSRK4, show_D2_PSRK4, show_D3_PSRK4
   10531             :         generic                                 :: show =>  show_D0_PSRK4, show_D1_PSRK4, show_D2_PSRK4, show_D3_PSRK4
   10532             : #endif
   10533             : #if     RK3_ENABLED
   10534             :         procedure, pass, private                ::          show_D0_PSRK3, show_D1_PSRK3, show_D2_PSRK3, show_D3_PSRK3
   10535             :         generic                                 :: show =>  show_D0_PSRK3, show_D1_PSRK3, show_D2_PSRK3, show_D3_PSRK3
   10536             : #endif
   10537             : #if     RK2_ENABLED
   10538             :         procedure, pass, private                ::          show_D0_PSRK2, show_D1_PSRK2, show_D2_PSRK2, show_D3_PSRK2
   10539             :         generic                                 :: show =>  show_D0_PSRK2, show_D1_PSRK2, show_D2_PSRK2, show_D3_PSRK2
   10540             : #endif
   10541             : #if     RK1_ENABLED
   10542             :         procedure, pass, private                ::          show_D0_PSRK1, show_D1_PSRK1, show_D2_PSRK1, show_D3_PSRK1
   10543             :         generic                                 :: show =>  show_D0_PSRK1, show_D1_PSRK1, show_D2_PSRK1, show_D3_PSRK1
   10544             : #endif
   10545             : 
   10546             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10547             : 
   10548             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10549             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10550             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10551             : 
   10552             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10553             : 
   10554             : #if     SK5_ENABLED
   10555             :         procedure, pass, private                ::          show_D0_PVSK5, show_D1_PVSK5, show_D2_PVSK5
   10556             :         generic                                 :: show =>  show_D0_PVSK5, show_D1_PVSK5, show_D2_PVSK5
   10557             : #endif
   10558             : #if     SK4_ENABLED
   10559             :         procedure, pass, private                ::          show_D0_PVSK4, show_D1_PVSK4, show_D2_PVSK4
   10560             :         generic                                 :: show =>  show_D0_PVSK4, show_D1_PVSK4, show_D2_PVSK4
   10561             : #endif
   10562             : #if     SK3_ENABLED
   10563             :         procedure, pass, private                ::          show_D0_PVSK3, show_D1_PVSK3, show_D2_PVSK3
   10564             :         generic                                 :: show =>  show_D0_PVSK3, show_D1_PVSK3, show_D2_PVSK3
   10565             : #endif
   10566             : #if     SK2_ENABLED
   10567             :         procedure, pass, private                ::          show_D0_PVSK2, show_D1_PVSK2, show_D2_PVSK2
   10568             :         generic                                 :: show =>  show_D0_PVSK2, show_D1_PVSK2, show_D2_PVSK2
   10569             : #endif
   10570             : #if     SK1_ENABLED
   10571             :         procedure, pass, private                ::          show_D0_PVSK1, show_D1_PVSK1, show_D2_PVSK1
   10572             :         generic                                 :: show =>  show_D0_PVSK1, show_D1_PVSK1, show_D2_PVSK1
   10573             : #endif
   10574             : 
   10575             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10576             : 
   10577             : #if     IK5_ENABLED
   10578             :         procedure, pass, private                ::          show_D0_PVIK5, show_D1_PVIK5, show_D2_PVIK5
   10579             :         generic                                 :: show =>  show_D0_PVIK5, show_D1_PVIK5, show_D2_PVIK5
   10580             : #endif
   10581             : #if     IK4_ENABLED
   10582             :         procedure, pass, private                ::          show_D0_PVIK4, show_D1_PVIK4, show_D2_PVIK4
   10583             :         generic                                 :: show =>  show_D0_PVIK4, show_D1_PVIK4, show_D2_PVIK4
   10584             : #endif
   10585             : #if     IK3_ENABLED
   10586             :         procedure, pass, private                ::          show_D0_PVIK3, show_D1_PVIK3, show_D2_PVIK3
   10587             :         generic                                 :: show =>  show_D0_PVIK3, show_D1_PVIK3, show_D2_PVIK3
   10588             : #endif
   10589             : #if     IK2_ENABLED
   10590             :         procedure, pass, private                ::          show_D0_PVIK2, show_D1_PVIK2, show_D2_PVIK2
   10591             :         generic                                 :: show =>  show_D0_PVIK2, show_D1_PVIK2, show_D2_PVIK2
   10592             : #endif
   10593             : #if     IK1_ENABLED
   10594             :         procedure, pass, private                ::          show_D0_PVIK1, show_D1_PVIK1, show_D2_PVIK1
   10595             :         generic                                 :: show =>  show_D0_PVIK1, show_D1_PVIK1, show_D2_PVIK1
   10596             : #endif
   10597             : 
   10598             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10599             : 
   10600             : #if     LK5_ENABLED
   10601             :         procedure, pass, private                ::          show_D0_PVLK5, show_D1_PVLK5, show_D2_PVLK5
   10602             :         generic                                 :: show =>  show_D0_PVLK5, show_D1_PVLK5, show_D2_PVLK5
   10603             : #endif
   10604             : #if     LK4_ENABLED
   10605             :         procedure, pass, private                ::          show_D0_PVLK4, show_D1_PVLK4, show_D2_PVLK4
   10606             :         generic                                 :: show =>  show_D0_PVLK4, show_D1_PVLK4, show_D2_PVLK4
   10607             : #endif
   10608             : #if     LK3_ENABLED
   10609             :         procedure, pass, private                ::          show_D0_PVLK3, show_D1_PVLK3, show_D2_PVLK3
   10610             :         generic                                 :: show =>  show_D0_PVLK3, show_D1_PVLK3, show_D2_PVLK3
   10611             : #endif
   10612             : #if     LK2_ENABLED
   10613             :         procedure, pass, private                ::          show_D0_PVLK2, show_D1_PVLK2, show_D2_PVLK2
   10614             :         generic                                 :: show =>  show_D0_PVLK2, show_D1_PVLK2, show_D2_PVLK2
   10615             : #endif
   10616             : #if     LK1_ENABLED
   10617             :         procedure, pass, private                ::          show_D0_PVLK1, show_D1_PVLK1, show_D2_PVLK1
   10618             :         generic                                 :: show =>  show_D0_PVLK1, show_D1_PVLK1, show_D2_PVLK1
   10619             : #endif
   10620             : 
   10621             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10622             : 
   10623             : #if     CK5_ENABLED
   10624             :         procedure, pass, private                ::          show_D0_PVCK5, show_D1_PVCK5, show_D2_PVCK5
   10625             :         generic                                 :: show =>  show_D0_PVCK5, show_D1_PVCK5, show_D2_PVCK5
   10626             : #endif
   10627             : #if     CK4_ENABLED
   10628             :         procedure, pass, private                ::          show_D0_PVCK4, show_D1_PVCK4, show_D2_PVCK4
   10629             :         generic                                 :: show =>  show_D0_PVCK4, show_D1_PVCK4, show_D2_PVCK4
   10630             : #endif
   10631             : #if     CK3_ENABLED
   10632             :         procedure, pass, private                ::          show_D0_PVCK3, show_D1_PVCK3, show_D2_PVCK3
   10633             :         generic                                 :: show =>  show_D0_PVCK3, show_D1_PVCK3, show_D2_PVCK3
   10634             : #endif
   10635             : #if     CK2_ENABLED
   10636             :         procedure, pass, private                ::          show_D0_PVCK2, show_D1_PVCK2, show_D2_PVCK2
   10637             :         generic                                 :: show =>  show_D0_PVCK2, show_D1_PVCK2, show_D2_PVCK2
   10638             : #endif
   10639             : #if     CK1_ENABLED
   10640             :         procedure, pass, private                ::          show_D0_PVCK1, show_D1_PVCK1, show_D2_PVCK1
   10641             :         generic                                 :: show =>  show_D0_PVCK1, show_D1_PVCK1, show_D2_PVCK1
   10642             : #endif
   10643             : 
   10644             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10645             : 
   10646             : #if     RK5_ENABLED
   10647             :         procedure, pass, private                ::          show_D0_PVRK5, show_D1_PVRK5, show_D2_PVRK5
   10648             :         generic                                 :: show =>  show_D0_PVRK5, show_D1_PVRK5, show_D2_PVRK5
   10649             : #endif
   10650             : #if     RK4_ENABLED
   10651             :         procedure, pass, private                ::          show_D0_PVRK4, show_D1_PVRK4, show_D2_PVRK4
   10652             :         generic                                 :: show =>  show_D0_PVRK4, show_D1_PVRK4, show_D2_PVRK4
   10653             : #endif
   10654             : #if     RK3_ENABLED
   10655             :         procedure, pass, private                ::          show_D0_PVRK3, show_D1_PVRK3, show_D2_PVRK3
   10656             :         generic                                 :: show =>  show_D0_PVRK3, show_D1_PVRK3, show_D2_PVRK3
   10657             : #endif
   10658             : #if     RK2_ENABLED
   10659             :         procedure, pass, private                ::          show_D0_PVRK2, show_D1_PVRK2, show_D2_PVRK2
   10660             :         generic                                 :: show =>  show_D0_PVRK2, show_D1_PVRK2, show_D2_PVRK2
   10661             : #endif
   10662             : #if     RK1_ENABLED
   10663             :         procedure, pass, private                ::          show_D0_PVRK1, show_D1_PVRK1, show_D2_PVRK1
   10664             :         generic                                 :: show =>  show_D0_PVRK1, show_D1_PVRK1, show_D2_PVRK1
   10665             : #endif
   10666             : 
   10667             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10668             : 
   10669             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10670             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10671             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10672             : 
   10673             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10674             : 
   10675             : #if     SK5_ENABLED
   10676             :         procedure, pass, private                ::          show_D0_PMSK5, show_D1_PMSK5
   10677             :         generic                                 :: show =>  show_D0_PMSK5, show_D1_PMSK5
   10678             : #endif
   10679             : #if     SK4_ENABLED
   10680             :         procedure, pass, private                ::          show_D0_PMSK4, show_D1_PMSK4
   10681             :         generic                                 :: show =>  show_D0_PMSK4, show_D1_PMSK4
   10682             : #endif
   10683             : #if     SK3_ENABLED
   10684             :         procedure, pass, private                ::          show_D0_PMSK3, show_D1_PMSK3
   10685             :         generic                                 :: show =>  show_D0_PMSK3, show_D1_PMSK3
   10686             : #endif
   10687             : #if     SK2_ENABLED
   10688             :         procedure, pass, private                ::          show_D0_PMSK2, show_D1_PMSK2
   10689             :         generic                                 :: show =>  show_D0_PMSK2, show_D1_PMSK2
   10690             : #endif
   10691             : #if     SK1_ENABLED
   10692             :         procedure, pass, private                ::          show_D0_PMSK1, show_D1_PMSK1
   10693             :         generic                                 :: show =>  show_D0_PMSK1, show_D1_PMSK1
   10694             : #endif
   10695             : 
   10696             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10697             : 
   10698             : #if     IK5_ENABLED
   10699             :         procedure, pass, private                ::          show_D0_PMIK5, show_D1_PMIK5
   10700             :         generic                                 :: show =>  show_D0_PMIK5, show_D1_PMIK5
   10701             : #endif
   10702             : #if     IK4_ENABLED
   10703             :         procedure, pass, private                ::          show_D0_PMIK4, show_D1_PMIK4
   10704             :         generic                                 :: show =>  show_D0_PMIK4, show_D1_PMIK4
   10705             : #endif
   10706             : #if     IK3_ENABLED
   10707             :         procedure, pass, private                ::          show_D0_PMIK3, show_D1_PMIK3
   10708             :         generic                                 :: show =>  show_D0_PMIK3, show_D1_PMIK3
   10709             : #endif
   10710             : #if     IK2_ENABLED
   10711             :         procedure, pass, private                ::          show_D0_PMIK2, show_D1_PMIK2
   10712             :         generic                                 :: show =>  show_D0_PMIK2, show_D1_PMIK2
   10713             : #endif
   10714             : #if     IK1_ENABLED
   10715             :         procedure, pass, private                ::          show_D0_PMIK1, show_D1_PMIK1
   10716             :         generic                                 :: show =>  show_D0_PMIK1, show_D1_PMIK1
   10717             : #endif
   10718             : 
   10719             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10720             : 
   10721             : #if     LK5_ENABLED
   10722             :         procedure, pass, private                ::          show_D0_PMLK5, show_D1_PMLK5
   10723             :         generic                                 :: show =>  show_D0_PMLK5, show_D1_PMLK5
   10724             : #endif
   10725             : #if     LK4_ENABLED
   10726             :         procedure, pass, private                ::          show_D0_PMLK4, show_D1_PMLK4
   10727             :         generic                                 :: show =>  show_D0_PMLK4, show_D1_PMLK4
   10728             : #endif
   10729             : #if     LK3_ENABLED
   10730             :         procedure, pass, private                ::          show_D0_PMLK3, show_D1_PMLK3
   10731             :         generic                                 :: show =>  show_D0_PMLK3, show_D1_PMLK3
   10732             : #endif
   10733             : #if     LK2_ENABLED
   10734             :         procedure, pass, private                ::          show_D0_PMLK2, show_D1_PMLK2
   10735             :         generic                                 :: show =>  show_D0_PMLK2, show_D1_PMLK2
   10736             : #endif
   10737             : #if     LK1_ENABLED
   10738             :         procedure, pass, private                ::          show_D0_PMLK1, show_D1_PMLK1
   10739             :         generic                                 :: show =>  show_D0_PMLK1, show_D1_PMLK1
   10740             : #endif
   10741             : 
   10742             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10743             : 
   10744             : #if     CK5_ENABLED
   10745             :         procedure, pass, private                ::          show_D0_PMCK5, show_D1_PMCK5
   10746             :         generic                                 :: show =>  show_D0_PMCK5, show_D1_PMCK5
   10747             : #endif
   10748             : #if     CK4_ENABLED
   10749             :         procedure, pass, private                ::          show_D0_PMCK4, show_D1_PMCK4
   10750             :         generic                                 :: show =>  show_D0_PMCK4, show_D1_PMCK4
   10751             : #endif
   10752             : #if     CK3_ENABLED
   10753             :         procedure, pass, private                ::          show_D0_PMCK3, show_D1_PMCK3
   10754             :         generic                                 :: show =>  show_D0_PMCK3, show_D1_PMCK3
   10755             : #endif
   10756             : #if     CK2_ENABLED
   10757             :         procedure, pass, private                ::          show_D0_PMCK2, show_D1_PMCK2
   10758             :         generic                                 :: show =>  show_D0_PMCK2, show_D1_PMCK2
   10759             : #endif
   10760             : #if     CK1_ENABLED
   10761             :         procedure, pass, private                ::          show_D0_PMCK1, show_D1_PMCK1
   10762             :         generic                                 :: show =>  show_D0_PMCK1, show_D1_PMCK1
   10763             : #endif
   10764             : 
   10765             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10766             : 
   10767             : #if     RK5_ENABLED
   10768             :         procedure, pass, private                ::          show_D0_PMRK5, show_D1_PMRK5
   10769             :         generic                                 :: show =>  show_D0_PMRK5, show_D1_PMRK5
   10770             : #endif
   10771             : #if     RK4_ENABLED
   10772             :         procedure, pass, private                ::          show_D0_PMRK4, show_D1_PMRK4
   10773             :         generic                                 :: show =>  show_D0_PMRK4, show_D1_PMRK4
   10774             : #endif
   10775             : #if     RK3_ENABLED
   10776             :         procedure, pass, private                ::          show_D0_PMRK3, show_D1_PMRK3
   10777             :         generic                                 :: show =>  show_D0_PMRK3, show_D1_PMRK3
   10778             : #endif
   10779             : #if     RK2_ENABLED
   10780             :         procedure, pass, private                ::          show_D0_PMRK2, show_D1_PMRK2
   10781             :         generic                                 :: show =>  show_D0_PMRK2, show_D1_PMRK2
   10782             : #endif
   10783             : #if     RK1_ENABLED
   10784             :         procedure, pass, private                ::          show_D0_PMRK1, show_D1_PMRK1
   10785             :         generic                                 :: show =>  show_D0_PMRK1, show_D1_PMRK1
   10786             : #endif
   10787             : 
   10788             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10789             : 
   10790             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10791             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10792             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10793             : 
   10794             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10795             : 
   10796             : #if     SK5_ENABLED
   10797             :         procedure, pass, private                ::          show_D0_PCSK5
   10798             :         generic                                 :: show =>  show_D0_PCSK5
   10799             : #endif
   10800             : #if     SK4_ENABLED
   10801             :         procedure, pass, private                ::          show_D0_PCSK4
   10802             :         generic                                 :: show =>  show_D0_PCSK4
   10803             : #endif
   10804             : #if     SK3_ENABLED
   10805             :         procedure, pass, private                ::          show_D0_PCSK3
   10806             :         generic                                 :: show =>  show_D0_PCSK3
   10807             : #endif
   10808             : #if     SK2_ENABLED
   10809             :         procedure, pass, private                ::          show_D0_PCSK2
   10810             :         generic                                 :: show =>  show_D0_PCSK2
   10811             : #endif
   10812             : #if     SK1_ENABLED
   10813             :         procedure, pass, private                ::          show_D0_PCSK1
   10814             :         generic                                 :: show =>  show_D0_PCSK1
   10815             : #endif
   10816             : 
   10817             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10818             : 
   10819             : #if     IK5_ENABLED
   10820             :         procedure, pass, private                ::          show_D0_PCIK5
   10821             :         generic                                 :: show =>  show_D0_PCIK5
   10822             : #endif
   10823             : #if     IK4_ENABLED
   10824             :         procedure, pass, private                ::          show_D0_PCIK4
   10825             :         generic                                 :: show =>  show_D0_PCIK4
   10826             : #endif
   10827             : #if     IK3_ENABLED
   10828             :         procedure, pass, private                ::          show_D0_PCIK3
   10829             :         generic                                 :: show =>  show_D0_PCIK3
   10830             : #endif
   10831             : #if     IK2_ENABLED
   10832             :         procedure, pass, private                ::          show_D0_PCIK2
   10833             :         generic                                 :: show =>  show_D0_PCIK2
   10834             : #endif
   10835             : #if     IK1_ENABLED
   10836             :         procedure, pass, private                ::          show_D0_PCIK1
   10837             :         generic                                 :: show =>  show_D0_PCIK1
   10838             : #endif
   10839             : 
   10840             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10841             : 
   10842             : #if     LK5_ENABLED
   10843             :         procedure, pass, private                ::          show_D0_PCLK5
   10844             :         generic                                 :: show =>  show_D0_PCLK5
   10845             : #endif
   10846             : #if     LK4_ENABLED
   10847             :         procedure, pass, private                ::          show_D0_PCLK4
   10848             :         generic                                 :: show =>  show_D0_PCLK4
   10849             : #endif
   10850             : #if     LK3_ENABLED
   10851             :         procedure, pass, private                ::          show_D0_PCLK3
   10852             :         generic                                 :: show =>  show_D0_PCLK3
   10853             : #endif
   10854             : #if     LK2_ENABLED
   10855             :         procedure, pass, private                ::          show_D0_PCLK2
   10856             :         generic                                 :: show =>  show_D0_PCLK2
   10857             : #endif
   10858             : #if     LK1_ENABLED
   10859             :         procedure, pass, private                ::          show_D0_PCLK1
   10860             :         generic                                 :: show =>  show_D0_PCLK1
   10861             : #endif
   10862             : 
   10863             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10864             : 
   10865             : #if     CK5_ENABLED
   10866             :         procedure, pass, private                ::          show_D0_PCCK5
   10867             :         generic                                 :: show =>  show_D0_PCCK5
   10868             : #endif
   10869             : #if     CK4_ENABLED
   10870             :         procedure, pass, private                ::          show_D0_PCCK4
   10871             :         generic                                 :: show =>  show_D0_PCCK4
   10872             : #endif
   10873             : #if     CK3_ENABLED
   10874             :         procedure, pass, private                ::          show_D0_PCCK3
   10875             :         generic                                 :: show =>  show_D0_PCCK3
   10876             : #endif
   10877             : #if     CK2_ENABLED
   10878             :         procedure, pass, private                ::          show_D0_PCCK2
   10879             :         generic                                 :: show =>  show_D0_PCCK2
   10880             : #endif
   10881             : #if     CK1_ENABLED
   10882             :         procedure, pass, private                ::          show_D0_PCCK1
   10883             :         generic                                 :: show =>  show_D0_PCCK1
   10884             : #endif
   10885             : 
   10886             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10887             : 
   10888             : #if     RK5_ENABLED
   10889             :         procedure, pass, private                ::          show_D0_PCRK5
   10890             :         generic                                 :: show =>  show_D0_PCRK5
   10891             : #endif
   10892             : #if     RK4_ENABLED
   10893             :         procedure, pass, private                ::          show_D0_PCRK4
   10894             :         generic                                 :: show =>  show_D0_PCRK4
   10895             : #endif
   10896             : #if     RK3_ENABLED
   10897             :         procedure, pass, private                ::          show_D0_PCRK3
   10898             :         generic                                 :: show =>  show_D0_PCRK3
   10899             : #endif
   10900             : #if     RK2_ENABLED
   10901             :         procedure, pass, private                ::          show_D0_PCRK2
   10902             :         generic                                 :: show =>  show_D0_PCRK2
   10903             : #endif
   10904             : #if     RK1_ENABLED
   10905             :         procedure, pass, private                ::          show_D0_PCRK1
   10906             :         generic                                 :: show =>  show_D0_PCRK1
   10907             : #endif
   10908             : 
   10909             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10910             : 
   10911             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10912             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10913             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10914             : 
   10915             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10916             : 
   10917             :         procedure, pass, private                ::          show_D0_BSSK, show_D1_BSSK, show_D2_BSSK, show_D3_BSSK
   10918             :         generic                                 :: show =>  show_D0_BSSK, show_D1_BSSK, show_D2_BSSK, show_D3_BSSK
   10919             : 
   10920             :         procedure, pass, private                ::          show_D0_BSIK, show_D1_BSIK, show_D2_BSIK, show_D3_BSIK
   10921             :         generic                                 :: show =>  show_D0_BSIK, show_D1_BSIK, show_D2_BSIK, show_D3_BSIK
   10922             : 
   10923             :         procedure, pass, private                ::          show_D0_BSLK, show_D1_BSLK, show_D2_BSLK, show_D3_BSLK
   10924             :         generic                                 :: show =>  show_D0_BSLK, show_D1_BSLK, show_D2_BSLK, show_D3_BSLK
   10925             : 
   10926             :         procedure, pass, private                ::          show_D0_BSCK, show_D1_BSCK, show_D2_BSCK, show_D3_BSCK
   10927             :         generic                                 :: show =>  show_D0_BSCK, show_D1_BSCK, show_D2_BSCK, show_D3_BSCK
   10928             : 
   10929             :         procedure, pass, private                ::          show_D0_BSRK, show_D1_BSRK, show_D2_BSRK, show_D3_BSRK
   10930             :         generic                                 :: show =>  show_D0_BSRK, show_D1_BSRK, show_D2_BSRK, show_D3_BSRK
   10931             : 
   10932             :         procedure, pass, private                ::          show_D0_BVSK, show_D1_BVSK, show_D2_BVSK
   10933             :         generic                                 :: show =>  show_D0_BVSK, show_D1_BVSK, show_D2_BVSK
   10934             : 
   10935             :         procedure, pass, private                ::          show_D0_BVIK, show_D1_BVIK, show_D2_BVIK
   10936             :         generic                                 :: show =>  show_D0_BVIK, show_D1_BVIK, show_D2_BVIK
   10937             : 
   10938             :         procedure, pass, private                ::          show_D0_BVLK, show_D1_BVLK, show_D2_BVLK
   10939             :         generic                                 :: show =>  show_D0_BVLK, show_D1_BVLK, show_D2_BVLK
   10940             : 
   10941             :         procedure, pass, private                ::          show_D0_BVCK, show_D1_BVCK, show_D2_BVCK
   10942             :         generic                                 :: show =>  show_D0_BVCK, show_D1_BVCK, show_D2_BVCK
   10943             : 
   10944             :         procedure, pass, private                ::          show_D0_BVRK, show_D1_BVRK, show_D2_BVRK
   10945             :         generic                                 :: show =>  show_D0_BVRK, show_D1_BVRK, show_D2_BVRK
   10946             : 
   10947             :         procedure, pass, private                ::          show_D0_BMSK, show_D1_BMSK
   10948             :         generic                                 :: show =>  show_D0_BMSK, show_D1_BMSK
   10949             : 
   10950             :         procedure, pass, private                ::          show_D0_BMIK, show_D1_BMIK
   10951             :         generic                                 :: show =>  show_D0_BMIK, show_D1_BMIK
   10952             : 
   10953             :         procedure, pass, private                ::          show_D0_BMLK, show_D1_BMLK
   10954             :         generic                                 :: show =>  show_D0_BMLK, show_D1_BMLK
   10955             : 
   10956             :         procedure, pass, private                ::          show_D0_BMCK, show_D1_BMCK
   10957             :         generic                                 :: show =>  show_D0_BMCK, show_D1_BMCK
   10958             : 
   10959             :         procedure, pass, private                ::          show_D0_BMRK, show_D1_BMRK
   10960             :         generic                                 :: show =>  show_D0_BMRK, show_D1_BMRK
   10961             : 
   10962             :         procedure, pass, private                ::          show_D0_BCSK
   10963             :         generic                                 :: show =>  show_D0_BCSK
   10964             : 
   10965             :         procedure, pass, private                ::          show_D0_BCIK
   10966             :         generic                                 :: show =>  show_D0_BCIK
   10967             : 
   10968             :         procedure, pass, private                ::          show_D0_BCLK
   10969             :         generic                                 :: show =>  show_D0_BCLK
   10970             : 
   10971             :         procedure, pass, private                ::          show_D0_BCCK
   10972             :         generic                                 :: show =>  show_D0_BCCK
   10973             : 
   10974             :         procedure, pass, private                ::          show_D0_BCRK
   10975             :         generic                                 :: show =>  show_D0_BCRK
   10976             : 
   10977             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10978             : 
   10979             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10980             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10981             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10982             : 
   10983             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10984             : 
   10985             :         procedure, pass, private                ::          dump_D0, dump_D1, dump_D2
   10986             :         generic                                 :: dump =>  dump_D0, dump_D1, dump_D2
   10987             : 
   10988             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10989             : 
   10990             :         procedure, pass                         :: skip_IK
   10991             :         generic                                 :: skip =>  skip_IK
   10992             : 
   10993             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10994             : 
   10995             :        !final                                   :: finalizeDisplay
   10996             : 
   10997             :         !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10998             : 
   10999             :         !> \endcond excluded
   11000             : 
   11001             :     end type display_type
   11002             : 
   11003             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11004             : 
   11005             :     !>  \brief
   11006             :     !>  This is a scalar module variable an object of type [display_type](@ref pm_io::display_type) for general display.<br>
   11007             :     !>
   11008             :     !>  \details
   11009             :     !>  The existence of this object is to merely facilitate quick tests and displays of items on the default stdout.<br>
   11010             :     !>  Given the global nature of this object, its usage is not recommended beyond simple tests and debugging tasks.<br>
   11011             :     !>
   11012             :     !>  \finmain{disp}
   11013             :     !>
   11014             :     !>  \author
   11015             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   11016             :     type(display_type) :: disp
   11017             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11018             :     !DIR$ ATTRIBUTES DLLEXPORT :: disp
   11019             : #endif
   11020             : 
   11021             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11022             : 
   11023             :     !>  \cond excluded
   11024             :     interface display_type
   11025             : 
   11026             :     module function constructDisplayFile(file, status, position, advance, format, deliml, delimr, tmsize, bmsize, count, sticky, text, mark, note, warn, stop) result(disp)
   11027             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11028             :         !DEC$ ATTRIBUTES DLLEXPORT :: constructDisplayFile
   11029             : #endif
   11030             :         character(*, SK), intent(in)            :: file
   11031             :         logical(LK)     , intent(in), optional  :: sticky
   11032             :         integer(IK)     , intent(in), optional  :: count
   11033             :         integer(IK)     , intent(in), optional  :: tmsize, bmsize
   11034             :         character(*, SK), intent(in), optional  :: position
   11035             :         character(*, SK), intent(in), optional  :: advance
   11036             :         character(*, SK), intent(in), optional  :: status
   11037             :         type(field_type), intent(in), optional  :: format
   11038             :         type(field_type), intent(in), optional  :: deliml
   11039             :         type(field_type), intent(in), optional  :: delimr
   11040             :         type(mark_type) , intent(in), optional  :: mark
   11041             :         type(note_type) , intent(in), optional  :: note
   11042             :         type(warn_type) , intent(in), optional  :: warn
   11043             :         type(stop_type) , intent(in), optional  :: stop
   11044             :         type(wrap_type) , intent(in), optional  :: text
   11045             :         type(display_type) :: disp
   11046             :     end function
   11047             : 
   11048             :     module function constructDisplayUnit(unit, advance, format, deliml, delimr, tmsize, bmsize, count, sticky, text, mark, note, warn, stop) result(disp)
   11049             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11050             :         !DEC$ ATTRIBUTES DLLEXPORT :: constructDisplayUnit
   11051             : #endif
   11052             :         integer(IK)     , intent(in), optional  :: unit
   11053             :         logical(LK)     , intent(in), optional  :: sticky
   11054             :         integer(IK)     , intent(in), optional  :: count
   11055             :         integer(IK)     , intent(in), optional  :: tmsize, bmsize
   11056             :         character(*, SK), intent(in), optional  :: advance
   11057             :         type(field_type), intent(in), optional  :: format
   11058             :         type(field_type), intent(in), optional  :: deliml
   11059             :         type(field_type), intent(in), optional  :: delimr
   11060             :         type(mark_type) , intent(in), optional  :: mark
   11061             :         type(note_type) , intent(in), optional  :: note
   11062             :         type(warn_type) , intent(in), optional  :: warn
   11063             :         type(stop_type) , intent(in), optional  :: stop
   11064             :         type(wrap_type) , intent(in), optional  :: text
   11065             :         type(display_type) :: disp
   11066             :     end function
   11067             : 
   11068             :     end interface
   11069             :     !>  \endcond excluded
   11070             : 
   11071             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11072             : 
   11073             : !    interface
   11074             : !    module subroutine finalizeDisplay(self)
   11075             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11076             : !        !DEC$ ATTRIBUTES DLLEXPORT :: finalizeDisplay
   11077             : !#endif
   11078             : !        type(display_type), intent(inout)   :: self
   11079             : !    end subroutine
   11080             : !    end interface
   11081             : 
   11082             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11083             : 
   11084             :     !>  \brief
   11085             :     !>  This is a generic method of the derived type [display_type](@ref pm_io::display_type) with `pass` attribute.<br>
   11086             :     !>
   11087             :     !>  \details
   11088             :     !>  This method skips a specified number of lines in the output display.<br>
   11089             :     !>
   11090             :     !>  \param[in]  count       :   The input scalar `integer` of default kind \IK, containing the number of lines to skip in the display.<br>
   11091             :     !>                              (**optional**, default = `1_IK`)
   11092             :     !>  \param[in]  unit        :   The input scalar `integer` of default kind \IK representing the output display unit number where the text will be displayed.<br>
   11093             :     !>                              (**optional**, default = `display_type%%unit`)
   11094             :     !>  \param[in]  sticky      :   The input scalar `logical` of default kind \LK. If `.true.` the display `unit` will be stored in `unit`
   11095             :     !>                              component of the current object of type [display_type](@ref pm_io::display_type) for later usage.<br>
   11096             :     !>                              (**optional**, default = `.false._LK`)
   11097             :     !>
   11098             :     !>  \interface{skip}
   11099             :     !>  \code{.F90}
   11100             :     !>
   11101             :     !>      use pm_io, only: display_type
   11102             :     !>      type(display_type) :: disp
   11103             :     !>
   11104             :     !>      call disp%skip( count = count       &
   11105             :     !>                    , unit = unit         &
   11106             :     !>                    , sticky = sticky     &
   11107             :     !>                    )
   11108             :     !>
   11109             :     !>  \endcode
   11110             :     !>
   11111             :     !>  \impure
   11112             :     !>
   11113             :     !>  \see
   11114             :     !>  [wrap_type%%wrap()](@ref pm_io::wrap)<br>
   11115             :     !>  [display_type%%show()](@ref pm_io::show)<br>
   11116             :     !>  [display_type%%skip()](@ref pm_io::skip)<br>
   11117             :     !>
   11118             :     !>  \example{skip}
   11119             :     !>  \include{lineno} example/pm_io/skip/main.F90
   11120             :     !>  \compilef{skip}
   11121             :     !>  \output{skip}
   11122             :     !>  \include{lineno} example/pm_io/skip/main.out.F90
   11123             :     !>
   11124             :     !>  \test
   11125             :     !>  [test_pm_io](@ref test_pm_io)
   11126             :     !>
   11127             :     !>  \finmain
   11128             :     !>
   11129             :     !>  \author
   11130             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   11131             :     interface skip
   11132             :     module subroutine skip_IK(self, count, unit, sticky)
   11133             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11134             :         !DEC$ ATTRIBUTES DLLEXPORT :: skip_IK
   11135             : #endif
   11136             :         class(display_type) , intent(inout)         :: self
   11137             :         integer(IK)         , intent(in), optional  :: unit
   11138             :         integer(IK)         , intent(in), optional  :: count
   11139             :         logical(LK)         , intent(in), optional  :: sticky
   11140             :     end subroutine
   11141             :     end interface
   11142             : 
   11143             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11144             : 
   11145             :     !>  \brief
   11146             :     !>  This is a generic method of the derived type [display_type](@ref pm_io::display_type) with `pass` attribute.<br>
   11147             :     !>
   11148             :     !>  \details
   11149             :     !>  This method displays the input `object` of supported type and kind and rank in the specified output.<br>
   11150             :     !>
   11151             :     !>  \param[in]  object  :   The input object of either,<br>
   11152             :     !>                          <ul>
   11153             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type `character` of kind \SKALL, or<br>
   11154             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type `integer` of kind \IKALL, or<br>
   11155             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type `logical` of kind \LKALL, or<br>
   11156             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type `complex` of kind \CKALL, or<br>
   11157             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type `real` of kind \RKALL, or<br>
   11158             :     !>                          </ul>
   11159             :     !>                          <ul>
   11160             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [css_type](@ref pm_container::css_type), or<br>
   11161             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csi_type](@ref pm_container::csi_type), or<br>
   11162             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csl_type](@ref pm_container::csl_type), or<br>
   11163             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csc_type](@ref pm_container::csc_type), or<br>
   11164             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csr_type](@ref pm_container::csr_type), or<br>
   11165             :     !>                          </ul>
   11166             :     !>                          <ul>
   11167             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvs_type](@ref pm_container::cvs_type), or<br>
   11168             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvi_type](@ref pm_container::cvi_type), or<br>
   11169             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvl_type](@ref pm_container::cvl_type), or<br>
   11170             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvc_type](@ref pm_container::cvc_type), or<br>
   11171             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvr_type](@ref pm_container::cvr_type), or<br>
   11172             :     !>                          </ul>
   11173             :     !>                          <ul>
   11174             :     !>                              <li>    scalar or array of rank `1` of type [cms_type](@ref pm_container::cms_type), or<br>
   11175             :     !>                              <li>    scalar or array of rank `1` of type [cmi_type](@ref pm_container::cmi_type), or<br>
   11176             :     !>                              <li>    scalar or array of rank `1` of type [cml_type](@ref pm_container::cml_type), or<br>
   11177             :     !>                              <li>    scalar or array of rank `1` of type [cmc_type](@ref pm_container::cmc_type), or<br>
   11178             :     !>                              <li>    scalar or array of rank `1` of type [cmr_type](@ref pm_container::cmr_type)<br>
   11179             :     !>                          </ul>
   11180             :     !>                          <ul>
   11181             :     !>                              <li>    scalar of type [ccs_type](@ref pm_container::ccs_type), or<br>
   11182             :     !>                              <li>    scalar of type [cci_type](@ref pm_container::cci_type), or<br>
   11183             :     !>                              <li>    scalar of type [ccl_type](@ref pm_container::ccl_type), or<br>
   11184             :     !>                              <li>    scalar of type [ccc_type](@ref pm_container::ccc_type), or<br>
   11185             :     !>                              <li>    scalar of type [ccr_type](@ref pm_container::ccr_type)<br>
   11186             :     !>                          </ul>
   11187             :     !>                          <ul>
   11188             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [css_pdt](@ref pm_container::css_pdt), or<br>
   11189             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csi_pdt](@ref pm_container::csi_pdt), or<br>
   11190             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csl_pdt](@ref pm_container::csl_pdt), or<br>
   11191             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csc_pdt](@ref pm_container::csc_pdt), or<br>
   11192             :     !>                              <li>    scalar or array of rank `1` or `2` or `3` of type [csr_pdt](@ref pm_container::csr_pdt), or<br>
   11193             :     !>                          </ul>
   11194             :     !>                          <ul>
   11195             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvs_pdt](@ref pm_container::cvs_pdt), or<br>
   11196             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvi_pdt](@ref pm_container::cvi_pdt), or<br>
   11197             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvl_pdt](@ref pm_container::cvl_pdt), or<br>
   11198             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvc_pdt](@ref pm_container::cvc_pdt), or<br>
   11199             :     !>                              <li>    scalar or array of rank `1` or `2` of type [cvr_pdt](@ref pm_container::cvr_pdt), or<br>
   11200             :     !>                          </ul>
   11201             :     !>                          <ul>
   11202             :     !>                              <li>    scalar or array of rank `1` of type [cms_pdt](@ref pm_container::cms_pdt), or<br>
   11203             :     !>                              <li>    scalar or array of rank `1` of type [cmi_pdt](@ref pm_container::cmi_pdt), or<br>
   11204             :     !>                              <li>    scalar or array of rank `1` of type [cml_pdt](@ref pm_container::cml_pdt), or<br>
   11205             :     !>                              <li>    scalar or array of rank `1` of type [cmc_pdt](@ref pm_container::cmc_pdt), or<br>
   11206             :     !>                              <li>    scalar or array of rank `1` of type [cmr_pdt](@ref pm_container::cmr_pdt)<br>
   11207             :     !>                          </ul>
   11208             :     !>                          <ul>
   11209             :     !>                              <li>    scalar of type [ccs_pdt](@ref pm_container::ccs_pdt), or<br>
   11210             :     !>                              <li>    scalar of type [cci_pdt](@ref pm_container::cci_pdt), or<br>
   11211             :     !>                              <li>    scalar of type [ccl_pdt](@ref pm_container::ccl_pdt), or<br>
   11212             :     !>                              <li>    scalar of type [ccc_pdt](@ref pm_container::ccc_pdt), or<br>
   11213             :     !>                              <li>    scalar of type [ccr_pdt](@ref pm_container::ccr_pdt)<br>
   11214             :     !>                          </ul>
   11215             :     !>                          containing the content to display.
   11216             :     !>  \param[in]  tmsize  :   The input scalar of `integer` of default kind \IK representing the number of empty lines preceding the object in the display.<br>
   11217             :     !>                          (**optional**, default = `0_IK`)
   11218             :     !>  \param[in]  bmsize  :   The input scalar of `integer` of default kind \IK representing the number of empty lines succeeding the object in the display.<br>
   11219             :     !>                          (**optional**, default = `0_IK`)
   11220             :     !>  \param[in]  count   :   The input scalar of `integer` of default kind \IK representing the number of times the object will have to be sequentially displayed in separate lines.<br>
   11221             :     !>                          (**optional**, default = `1_IK`)
   11222             :     !>  \param[in]  unit    :   The input scalar `integer` of default kind \IK representing the output display unit number where the text will be displayed.<br>
   11223             :     !>                          (**optional**, default = `display_type%%unit`)
   11224             :     !>  \param[in]  advance :   The input scalar `character` of default kind \SK that must be either `NO` or `YES`.<br>
   11225             :     !>                          It has the same functionality and meaning as the `advance` argument in the Fortran intrinsic IO statement `read()`.<br>
   11226             :     !>                          (**optional**, default = `YES`)
   11227             :     !>  \param[in]  format  :   The input scalar `character` of default kind \SK containing the format with which the `object` should be displayed.<br>
   11228             :     !>                          If present, the input value is directly passed to the Fortran `write()` statement for a formatted display.<br>
   11229             :     !>                          (**optional**, default = `YES`)
   11230             :     !>  \param[in]  deliml  :   The input scalar of type `character` of default kind default kind \SK,
   11231             :     !>                          whose contents represent the left-delimiter to be used for left-wrapping fields of the input object.<br>
   11232             :     !>                          The common Fortran-style left-delimiter for `complex` fields is the left-parenthesis \f$\texttt{(}\f$.<br>
   11233             :     !>                          The two most common left-delimiters string fields are the single \f$\texttt{'}\f$ and double \f$\texttt{"}\f$ quotation marks.<br>
   11234             :     !>                          The left-delimiter is particularly relevant to string and `complex` objects that are passed to the methods of [display_type](@ref pm_io::display_type).<br>
   11235             :     !>                          The input `deliml` will be used for constructing the field format only if the input argument `format` is missing.<br>
   11236             :     !>                          (**optional**. default = `delimr` or if missing, the corresponding value from the `deliml` component of the parent `disp` object of this method.)
   11237             :     !>  \param[in]  delimr  :   The input scalar of type `character` of default kind default kind \SK,
   11238             :     !>                          whose contents represent the right-delimiter to be used for right-wrapping fields of the input object.<br>
   11239             :     !>                          The common Fortran-style right-delimiter for `complex` fields is the right-parenthesis \f$\texttt{)}\f$.<br>
   11240             :     !>                          The two most common right-delimiters string fields are the single \f$\texttt{'}\f$ and double \f$\texttt{"}\f$ quotation marks.<br>
   11241             :     !>                          The right-delimiter is particularly relevant to string and `complex` objects that are passed to the methods of [display_type](@ref pm_io::display_type).<br>
   11242             :     !>                          The input `delimr` will be used for constructing the field format only if the input argument `format` is missing.<br>
   11243             :     !>                          (**optional**. default = `deliml` or if missing, the corresponding value from the `delimr` component of the parent `disp` object of this method.)
   11244             :     !>  \param[in]  sticky  :   The input scalar `logical` of default kind \LK.<br>
   11245             :     !>                          If `.true.` the input arguments will update the corresponding components of
   11246             :     !>                          the parent object of type [display_type](@ref pm_io::display_type) for later usage.<br>
   11247             :     !>                          (**optional**, default = `.false._LK`)
   11248             :     !>
   11249             :     !>  \interface{show}
   11250             :     !>  \code{.F90}
   11251             :     !>
   11252             :     !>      use pm_io, only: display_type
   11253             :     !>      type(display_type) :: disp
   11254             :     !>
   11255             :     !>      call disp%show( object &
   11256             :     !>                    , tmsize = tmsize &
   11257             :     !>                    , bmsize = bmsize &
   11258             :     !>                    , count = count &
   11259             :     !>                    , unit = unit &
   11260             :     !>                    , advance = advance &
   11261             :     !>                    , format = format &
   11262             :     !>                    , deliml = deliml &
   11263             :     !>                    , delimr = delimr &
   11264             :     !>                    , sticky = sticky &
   11265             :     !>                    )
   11266             :     !>
   11267             :     !>  \endcode
   11268             :     !>
   11269             :     !>  \impure
   11270             :     !>
   11271             :     !>  \see
   11272             :     !>  [wrap_type%%wrap()](@ref pm_io::wrap)<br>
   11273             :     !>  [display_type%%show()](@ref pm_io::show)<br>
   11274             :     !>  [display_type%%skip()](@ref pm_io::skip)<br>
   11275             :     !>
   11276             :     !>  \example{show}
   11277             :     !>  \include{lineno} example/pm_io/show/main.F90
   11278             :     !>  \compilef{show}
   11279             :     !>  \output{show}
   11280             :     !>  \include{lineno} example/pm_io/show/main.out.F90
   11281             :     !>
   11282             :     !>  \bug
   11283             :     !>  \status \unresolved
   11284             :     !>  \source \ifort{2021.5}
   11285             :     !>  \desc
   11286             :     !>  The \ifort{2021.5} cannot not compile the following interface specification for the procedures, yielding "ambiguous interface" error.<br>
   11287             :     !>  \code{.F90}
   11288             :     !>
   11289             :     !>      module container_module
   11290             :     !>
   11291             :     !>          use iso_fortran_env
   11292             :     !>
   11293             :     !>          integer, parameter :: lkc = logical_kinds(1)
   11294             :     !>          integer, parameter :: ikc = integer_kinds(1)
   11295             :     !>
   11296             :     !>          type :: container_ik(kind)
   11297             :     !>              integer         , kind  :: kind = integer_kinds(1)
   11298             :     !>              integer(kind)           :: value
   11299             :     !>          end type
   11300             :     !>
   11301             :     !>          type :: container_lk(kind)
   11302             :     !>              integer         , kind  :: kind = logical_kinds(1)
   11303             :     !>              logical(kind)           :: value
   11304             :     !>          end type
   11305             :     !>
   11306             :     !>      end module
   11307             :     !>
   11308             :     !>      module disp_module
   11309             :     !>
   11310             :     !>          use container_module
   11311             :     !>
   11312             :     !>          type :: disp_type
   11313             :     !>          end type
   11314             :     !>
   11315             :     !>          interface show
   11316             :     !>          module subroutine show_logical(self, object)
   11317             :     !>              use container_module, only: container => container_lk
   11318             :     !>              class(disp_type)        , intent(inout)               :: self
   11319             :     !>             !type(container_lk(lkc)) , intent(in)                  :: object
   11320             :     !>              type(container(lkc))    , intent(in)                  :: object
   11321             :     !>          end subroutine
   11322             :     !>          module subroutine show_integer(self, object)
   11323             :     !>              use container_module, only: container => container_ik
   11324             :     !>              class(disp_type)        , intent(inout)               :: self
   11325             :     !>             !type(container_ik(ikc)) , intent(in)                  :: object
   11326             :     !>              type(container(ikc))    , intent(in)                  :: object
   11327             :     !>          end subroutine
   11328             :     !>          end interface
   11329             :     !>
   11330             :     !>      end module
   11331             :     !>
   11332             :     !>      end
   11333             :     !>
   11334             :     !>  \endcode
   11335             :     !>  Note that the issue is with the aliasing of the pm_container module entities `use container_module, only: container => container_ik`.
   11336             :     !>  \remedy
   11337             :     !>  For now, all interfaces were painfully converted to explicit type names (instead of aliases).
   11338             :     !>
   11339             :     !>  \todo
   11340             :     !>  \pvhigh
   11341             :     !>  The syntax of the procedure interfaces must be fixed and reverted to the original aliasing style, as soon as the \ifort{2021.5} bug is resolved.
   11342             :     !>  Note that \gfortran{10-11} has no problem compiling the code.
   11343             :     !>
   11344             :     !>  \finmain
   11345             :     !>
   11346             :     !>  \author
   11347             :     !>  \AmirShahmoradi, Oct 16, 2009, 11:14 AM, Michigan
   11348             : 
   11349             :     interface show
   11350             : 
   11351             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11352             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11353             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11354             : 
   11355             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11356             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11357             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11358             : 
   11359             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11360             : 
   11361             : #if SK5_ENABLED
   11362             :     module subroutine show_D0_SK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11363             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11364             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_SK5
   11365             : #endif
   11366             :         use pm_kind, only: SKC => SK5
   11367             :         class(display_type)         , intent(inout)                 :: self
   11368             :         character(*,SKC)            , intent(in)                    :: object
   11369             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11370             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11371             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11372             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11373             :     end subroutine
   11374             : #endif
   11375             : 
   11376             : #if SK4_ENABLED
   11377             :     module subroutine show_D0_SK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11379             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_SK4
   11380             : #endif
   11381             :         use pm_kind, only: SKC => SK4
   11382             :         class(display_type)         , intent(inout)                 :: self
   11383             :         character(*,SKC)            , intent(in)                    :: object
   11384             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11385             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11386             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11387             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11388             :     end subroutine
   11389             : #endif
   11390             : 
   11391             : #if SK3_ENABLED
   11392             :     module subroutine show_D0_SK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11393             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11394             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_SK3
   11395             : #endif
   11396             :         use pm_kind, only: SKC => SK3
   11397             :         class(display_type)         , intent(inout)                 :: self
   11398             :         character(*,SKC)            , intent(in)                    :: object
   11399             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11400             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11401             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11402             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11403             :     end subroutine
   11404             : #endif
   11405             : 
   11406             : #if SK2_ENABLED
   11407             :     module subroutine show_D0_SK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11408             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11409             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_SK2
   11410             : #endif
   11411             :         use pm_kind, only: SKC => SK2
   11412             :         class(display_type)         , intent(inout)                 :: self
   11413             :         character(*,SKC)            , intent(in)                    :: object
   11414             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11415             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11416             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11417             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11418             :     end subroutine
   11419             : #endif
   11420             : 
   11421             : #if SK1_ENABLED
   11422             :     module subroutine show_D0_SK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11423             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11424             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_SK1
   11425             : #endif
   11426             :         use pm_kind, only: SKC => SK1
   11427             :         class(display_type)         , intent(inout)                 :: self
   11428             :         character(*,SKC)            , intent(in)                    :: object
   11429             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11430             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11431             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11432             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11433             :     end subroutine
   11434             : #endif
   11435             : 
   11436             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11437             : 
   11438             : #if IK5_ENABLED
   11439             :     module subroutine show_D0_IK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11440             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11441             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_IK5
   11442             : #endif
   11443             :         use pm_kind, only: SKC => SK, IKC => IK5
   11444             :         class(display_type)         , intent(inout)                 :: self
   11445             :         integer(IKC)                , intent(in)                    :: object
   11446             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11447             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11448             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11449             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11450             :     end subroutine
   11451             : #endif
   11452             : 
   11453             : #if IK4_ENABLED
   11454             :     module subroutine show_D0_IK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11455             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11456             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_IK4
   11457             : #endif
   11458             :         use pm_kind, only: SKC => SK, IKC => IK4
   11459             :         class(display_type)         , intent(inout)                 :: self
   11460             :         integer(IKC)                , intent(in)                    :: object
   11461             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11462             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11463             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11464             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11465             :     end subroutine
   11466             : #endif
   11467             : 
   11468             : #if IK3_ENABLED
   11469             :     module subroutine show_D0_IK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11470             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11471             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_IK3
   11472             : #endif
   11473             :         use pm_kind, only: SKC => SK, IKC => IK3
   11474             :         class(display_type)         , intent(inout)                 :: self
   11475             :         integer(IKC)                , intent(in)                    :: object
   11476             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11477             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11478             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11479             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11480             :     end subroutine
   11481             : #endif
   11482             : 
   11483             : #if IK2_ENABLED
   11484             :     module subroutine show_D0_IK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11485             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11486             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_IK2
   11487             : #endif
   11488             :         use pm_kind, only: SKC => SK, IKC => IK2
   11489             :         class(display_type)         , intent(inout)                 :: self
   11490             :         integer(IKC)                , intent(in)                    :: object
   11491             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11492             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11493             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11494             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11495             :     end subroutine
   11496             : #endif
   11497             : 
   11498             : #if IK1_ENABLED
   11499             :     module subroutine show_D0_IK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11500             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11501             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_IK1
   11502             : #endif
   11503             :         use pm_kind, only: SKC => SK, IKC => IK1
   11504             :         class(display_type)         , intent(inout)                 :: self
   11505             :         integer(IKC)                , intent(in)                    :: object
   11506             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11507             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11508             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11509             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11510             :     end subroutine
   11511             : #endif
   11512             : 
   11513             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11514             : 
   11515             : #if LK5_ENABLED
   11516             :     module subroutine show_D0_LK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11517             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11518             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_LK5
   11519             : #endif
   11520             :         use pm_kind, only: SKC => SK, LKC => LK5
   11521             :         class(display_type)         , intent(inout)                 :: self
   11522             :         logical(LKC)                , intent(in)                    :: object
   11523             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11524             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11525             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11526             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11527             :     end subroutine
   11528             : #endif
   11529             : 
   11530             : #if LK4_ENABLED
   11531             :     module subroutine show_D0_LK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11532             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11533             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_LK4
   11534             : #endif
   11535             :         use pm_kind, only: SKC => SK, LKC => LK4
   11536             :         class(display_type)         , intent(inout)                 :: self
   11537             :         logical(LKC)                , intent(in)                    :: object
   11538             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11539             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11540             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11541             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11542             :     end subroutine
   11543             : #endif
   11544             : 
   11545             : #if LK3_ENABLED
   11546             :     module subroutine show_D0_LK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11548             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_LK3
   11549             : #endif
   11550             :         use pm_kind, only: SKC => SK, LKC => LK3
   11551             :         class(display_type)         , intent(inout)                 :: self
   11552             :         logical(LKC)                , intent(in)                    :: object
   11553             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11554             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11555             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11556             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11557             :     end subroutine
   11558             : #endif
   11559             : 
   11560             : #if LK2_ENABLED
   11561             :     module subroutine show_D0_LK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11562             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11563             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_LK2
   11564             : #endif
   11565             :         use pm_kind, only: SKC => SK, LKC => LK2
   11566             :         class(display_type)         , intent(inout)                 :: self
   11567             :         logical(LKC)                , intent(in)                    :: object
   11568             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11569             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11570             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11571             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11572             :     end subroutine
   11573             : #endif
   11574             : 
   11575             : #if LK1_ENABLED
   11576             :     module subroutine show_D0_LK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11577             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11578             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_LK1
   11579             : #endif
   11580             :         use pm_kind, only: SKC => SK, LKC => LK1
   11581             :         class(display_type)         , intent(inout)                 :: self
   11582             :         logical(LKC)                , intent(in)                    :: object
   11583             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11584             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11585             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11586             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11587             :     end subroutine
   11588             : #endif
   11589             : 
   11590             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11591             : 
   11592             : #if CK5_ENABLED
   11593             :     module subroutine show_D0_CK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11594             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11595             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_CK5
   11596             : #endif
   11597             :         use pm_kind, only: SKC => SK, CKC => CK5
   11598             :         class(display_type)         , intent(inout)                 :: self
   11599             :         complex(CKC)                , intent(in)                    :: object
   11600             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11601             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11602             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11603             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11604             :     end subroutine
   11605             : #endif
   11606             : 
   11607             : #if CK4_ENABLED
   11608             :     module subroutine show_D0_CK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11609             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11610             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_CK4
   11611             : #endif
   11612             :         use pm_kind, only: SKC => SK, CKC => CK4
   11613             :         class(display_type)         , intent(inout)                 :: self
   11614             :         complex(CKC)                , intent(in)                    :: object
   11615             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11616             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11617             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11618             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11619             :     end subroutine
   11620             : #endif
   11621             : 
   11622             : #if CK3_ENABLED
   11623             :     module subroutine show_D0_CK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11624             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11625             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_CK3
   11626             : #endif
   11627             :         use pm_kind, only: SKC => SK, CKC => CK3
   11628             :         class(display_type)         , intent(inout)                 :: self
   11629             :         complex(CKC)                , intent(in)                    :: object
   11630             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11631             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11632             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11633             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11634             :     end subroutine
   11635             : #endif
   11636             : 
   11637             : #if CK2_ENABLED
   11638             :     module subroutine show_D0_CK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11639             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11640             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_CK2
   11641             : #endif
   11642             :         use pm_kind, only: SKC => SK, CKC => CK2
   11643             :         class(display_type)         , intent(inout)                 :: self
   11644             :         complex(CKC)                , intent(in)                    :: object
   11645             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11646             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11647             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11648             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11649             :     end subroutine
   11650             : #endif
   11651             : 
   11652             : #if CK1_ENABLED
   11653             :     module subroutine show_D0_CK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11654             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11655             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_CK1
   11656             : #endif
   11657             :         use pm_kind, only: SKC => SK, CKC => CK1
   11658             :         class(display_type)         , intent(inout)                 :: self
   11659             :         complex(CKC)                , intent(in)                    :: object
   11660             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11661             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11662             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11663             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11664             :     end subroutine
   11665             : #endif
   11666             : 
   11667             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11668             : 
   11669             : #if RK5_ENABLED
   11670             :     module subroutine show_D0_RK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11671             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11672             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_RK5
   11673             : #endif
   11674             :         use pm_kind, only: SKC => SK, RKC => RK5
   11675             :         class(display_type)         , intent(inout)                 :: self
   11676             :         real(RKC)                   , intent(in)                    :: object
   11677             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11678             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11679             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11680             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11681             :     end subroutine
   11682             : #endif
   11683             : 
   11684             : #if RK4_ENABLED
   11685             :     module subroutine show_D0_RK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11686             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11687             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_RK4
   11688             : #endif
   11689             :         use pm_kind, only: SKC => SK, RKC => RK4
   11690             :         class(display_type)         , intent(inout)                 :: self
   11691             :         real(RKC)                   , intent(in)                    :: object
   11692             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11693             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11694             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11695             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11696             :     end subroutine
   11697             : #endif
   11698             : 
   11699             : #if RK3_ENABLED
   11700             :     module subroutine show_D0_RK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11701             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11702             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_RK3
   11703             : #endif
   11704             :         use pm_kind, only: SKC => SK, RKC => RK3
   11705             :         class(display_type)         , intent(inout)                 :: self
   11706             :         real(RKC)                   , intent(in)                    :: object
   11707             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11708             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11709             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11710             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11711             :     end subroutine
   11712             : #endif
   11713             : 
   11714             : #if RK2_ENABLED
   11715             :     module subroutine show_D0_RK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11716             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11717             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_RK2
   11718             : #endif
   11719             :         use pm_kind, only: SKC => SK, RKC => RK2
   11720             :         class(display_type)         , intent(inout)                 :: self
   11721             :         real(RKC)                   , intent(in)                    :: object
   11722             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11723             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11724             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11725             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11726             :     end subroutine
   11727             : #endif
   11728             : 
   11729             : #if RK1_ENABLED
   11730             :     module subroutine show_D0_RK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11731             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11732             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_RK1
   11733             : #endif
   11734             :         use pm_kind, only: SKC => SK, RKC => RK1
   11735             :         class(display_type)         , intent(inout)                 :: self
   11736             :         real(RKC)                   , intent(in)                    :: object
   11737             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11738             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11739             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11740             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11741             :     end subroutine
   11742             : #endif
   11743             : 
   11744             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11745             : 
   11746             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11747             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11748             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11749             : 
   11750             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11751             : 
   11752             : #if SK5_ENABLED
   11753             :     module subroutine show_D1_SK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11754             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11755             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_SK5
   11756             : #endif
   11757             :         use pm_kind, only: SKC => SK5
   11758             :         class(display_type)         , intent(inout)                 :: self
   11759             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:)
   11760             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11761             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11762             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11763             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11764             :     end subroutine
   11765             : #endif
   11766             : 
   11767             : #if SK4_ENABLED
   11768             :     module subroutine show_D1_SK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11769             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11770             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_SK4
   11771             : #endif
   11772             :         use pm_kind, only: SKC => SK4
   11773             :         class(display_type)         , intent(inout)                 :: self
   11774             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:)
   11775             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11776             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11777             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11778             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11779             :     end subroutine
   11780             : #endif
   11781             : 
   11782             : #if SK3_ENABLED
   11783             :     module subroutine show_D1_SK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11784             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11785             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_SK3
   11786             : #endif
   11787             :         use pm_kind, only: SKC => SK3
   11788             :         class(display_type)         , intent(inout)                 :: self
   11789             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:)
   11790             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11791             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11792             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11793             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11794             :     end subroutine
   11795             : #endif
   11796             : 
   11797             : #if SK2_ENABLED
   11798             :     module subroutine show_D1_SK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11799             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11800             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_SK2
   11801             : #endif
   11802             :         use pm_kind, only: SKC => SK2
   11803             :         class(display_type)         , intent(inout)                 :: self
   11804             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:)
   11805             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11806             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11807             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11808             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11809             :     end subroutine
   11810             : #endif
   11811             : 
   11812             : #if SK1_ENABLED
   11813             :     module subroutine show_D1_SK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11815             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_SK1
   11816             : #endif
   11817             :         use pm_kind, only: SKC => SK1
   11818             :         class(display_type)         , intent(inout)                 :: self
   11819             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:)
   11820             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11821             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11822             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11823             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11824             :     end subroutine
   11825             : #endif
   11826             : 
   11827             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11828             : 
   11829             : #if IK5_ENABLED
   11830             :     module subroutine show_D1_IK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11831             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11832             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_IK5
   11833             : #endif
   11834             :         use pm_kind, only: SKC => SK, IKC => IK5
   11835             :         class(display_type)         , intent(inout)                 :: self
   11836             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11837             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11838             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11839             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11840             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11841             :     end subroutine
   11842             : #endif
   11843             : 
   11844             : #if IK4_ENABLED
   11845             :     module subroutine show_D1_IK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11846             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11847             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_IK4
   11848             : #endif
   11849             :         use pm_kind, only: SKC => SK, IKC => IK4
   11850             :         class(display_type)         , intent(inout)                 :: self
   11851             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11852             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11853             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11854             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11855             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11856             :     end subroutine
   11857             : #endif
   11858             : 
   11859             : #if IK3_ENABLED
   11860             :     module subroutine show_D1_IK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11861             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11862             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_IK3
   11863             : #endif
   11864             :         use pm_kind, only: SKC => SK, IKC => IK3
   11865             :         class(display_type)         , intent(inout)                 :: self
   11866             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11867             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11868             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11869             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11870             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11871             :     end subroutine
   11872             : #endif
   11873             : 
   11874             : #if IK2_ENABLED
   11875             :     module subroutine show_D1_IK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11877             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_IK2
   11878             : #endif
   11879             :         use pm_kind, only: SKC => SK, IKC => IK2
   11880             :         class(display_type)         , intent(inout)                 :: self
   11881             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11882             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11883             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11884             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11885             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11886             :     end subroutine
   11887             : #endif
   11888             : 
   11889             : #if IK1_ENABLED
   11890             :     module subroutine show_D1_IK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11891             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11892             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_IK1
   11893             : #endif
   11894             :         use pm_kind, only: SKC => SK, IKC => IK1
   11895             :         class(display_type)         , intent(inout)                 :: self
   11896             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11897             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11898             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11899             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11900             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11901             :     end subroutine
   11902             : #endif
   11903             : 
   11904             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11905             : 
   11906             : #if LK5_ENABLED
   11907             :     module subroutine show_D1_LK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11908             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11909             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_LK5
   11910             : #endif
   11911             :         use pm_kind, only: SKC => SK, LKC => LK5
   11912             :         class(display_type)         , intent(inout)                 :: self
   11913             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11914             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11915             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11916             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11917             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11918             :     end subroutine
   11919             : #endif
   11920             : 
   11921             : #if LK4_ENABLED
   11922             :     module subroutine show_D1_LK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11923             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11924             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_LK4
   11925             : #endif
   11926             :         use pm_kind, only: SKC => SK, LKC => LK4
   11927             :         class(display_type)         , intent(inout)                 :: self
   11928             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11929             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11930             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11931             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11932             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11933             :     end subroutine
   11934             : #endif
   11935             : 
   11936             : #if LK3_ENABLED
   11937             :     module subroutine show_D1_LK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11938             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11939             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_LK3
   11940             : #endif
   11941             :         use pm_kind, only: SKC => SK, LKC => LK3
   11942             :         class(display_type)         , intent(inout)                 :: self
   11943             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11944             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11945             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11946             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11947             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11948             :     end subroutine
   11949             : #endif
   11950             : 
   11951             : #if LK2_ENABLED
   11952             :     module subroutine show_D1_LK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11953             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11954             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_LK2
   11955             : #endif
   11956             :         use pm_kind, only: SKC => SK, LKC => LK2
   11957             :         class(display_type)         , intent(inout)                 :: self
   11958             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11959             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11960             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11961             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11962             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11963             :     end subroutine
   11964             : #endif
   11965             : 
   11966             : #if LK1_ENABLED
   11967             :     module subroutine show_D1_LK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11969             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_LK1
   11970             : #endif
   11971             :         use pm_kind, only: SKC => SK, LKC => LK1
   11972             :         class(display_type)         , intent(inout)                 :: self
   11973             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11974             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11975             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11976             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11977             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11978             :     end subroutine
   11979             : #endif
   11980             : 
   11981             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11982             : 
   11983             : #if CK5_ENABLED
   11984             :     module subroutine show_D1_CK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   11985             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11986             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_CK5
   11987             : #endif
   11988             :         use pm_kind, only: SKC => SK, CKC => CK5
   11989             :         class(display_type)         , intent(inout)                 :: self
   11990             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   11991             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   11992             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   11993             :         logical(LK)                 , intent(in)    , optional      :: sticky
   11994             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   11995             :     end subroutine
   11996             : #endif
   11997             : 
   11998             : #if CK4_ENABLED
   11999             :     module subroutine show_D1_CK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12000             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12001             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_CK4
   12002             : #endif
   12003             :         use pm_kind, only: SKC => SK, CKC => CK4
   12004             :         class(display_type)         , intent(inout)                 :: self
   12005             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   12006             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12007             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12008             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12009             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12010             :     end subroutine
   12011             : #endif
   12012             : 
   12013             : #if CK3_ENABLED
   12014             :     module subroutine show_D1_CK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12016             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_CK3
   12017             : #endif
   12018             :         use pm_kind, only: SKC => SK, CKC => CK3
   12019             :         class(display_type)         , intent(inout)                 :: self
   12020             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   12021             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12022             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12023             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12024             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12025             :     end subroutine
   12026             : #endif
   12027             : 
   12028             : #if CK2_ENABLED
   12029             :     module subroutine show_D1_CK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12030             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12031             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_CK2
   12032             : #endif
   12033             :         use pm_kind, only: SKC => SK, CKC => CK2
   12034             :         class(display_type)         , intent(inout)                 :: self
   12035             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   12036             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12037             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12038             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12039             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12040             :     end subroutine
   12041             : #endif
   12042             : 
   12043             : #if CK1_ENABLED
   12044             :     module subroutine show_D1_CK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12045             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12046             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_CK1
   12047             : #endif
   12048             :         use pm_kind, only: SKC => SK, CKC => CK1
   12049             :         class(display_type)         , intent(inout)                 :: self
   12050             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:)
   12051             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12052             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12053             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12054             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12055             :     end subroutine
   12056             : #endif
   12057             : 
   12058             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12059             : 
   12060             : #if RK5_ENABLED
   12061             :     module subroutine show_D1_RK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12063             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_RK5
   12064             : #endif
   12065             :         use pm_kind, only: SKC => SK, RKC => RK5
   12066             :         class(display_type)         , intent(inout)                 :: self
   12067             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:)
   12068             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12069             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12070             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12071             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12072             :     end subroutine
   12073             : #endif
   12074             : 
   12075             : #if RK4_ENABLED
   12076             :     module subroutine show_D1_RK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12077             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12078             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_RK4
   12079             : #endif
   12080             :         use pm_kind, only: SKC => SK, RKC => RK4
   12081             :         class(display_type)         , intent(inout)                 :: self
   12082             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:)
   12083             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12084             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12085             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12086             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12087             :     end subroutine
   12088             : #endif
   12089             : 
   12090             : #if RK3_ENABLED
   12091             :     module subroutine show_D1_RK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12092             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12093             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_RK3
   12094             : #endif
   12095             :         use pm_kind, only: SKC => SK, RKC => RK3
   12096             :         class(display_type)         , intent(inout)                 :: self
   12097             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:)
   12098             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12099             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12100             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12101             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12102             :     end subroutine
   12103             : #endif
   12104             : 
   12105             : #if RK2_ENABLED
   12106             :     module subroutine show_D1_RK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12107             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12108             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_RK2
   12109             : #endif
   12110             :         use pm_kind, only: SKC => SK, RKC => RK2
   12111             :         class(display_type)         , intent(inout)                 :: self
   12112             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:)
   12113             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12114             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12115             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12116             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12117             :     end subroutine
   12118             : #endif
   12119             : 
   12120             : #if RK1_ENABLED
   12121             :     module subroutine show_D1_RK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12122             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12123             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_RK1
   12124             : #endif
   12125             :         use pm_kind, only: SKC => SK, RKC => RK1
   12126             :         class(display_type)         , intent(inout)                 :: self
   12127             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:)
   12128             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12129             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12130             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12131             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12132             :     end subroutine
   12133             : #endif
   12134             : 
   12135             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12136             : 
   12137             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12138             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12139             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12140             : 
   12141             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12142             : 
   12143             : #if SK5_ENABLED
   12144             :     module subroutine show_D2_SK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12145             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12146             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_SK5
   12147             : #endif
   12148             :         use pm_kind, only: SKC => SK5
   12149             :         class(display_type)         , intent(inout)                 :: self
   12150             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:)
   12151             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12152             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12153             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12154             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12155             :     end subroutine
   12156             : #endif
   12157             : 
   12158             : #if SK4_ENABLED
   12159             :     module subroutine show_D2_SK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12160             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12161             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_SK4
   12162             : #endif
   12163             :         use pm_kind, only: SKC => SK4
   12164             :         class(display_type)         , intent(inout)                 :: self
   12165             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:)
   12166             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12167             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12168             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12169             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12170             :     end subroutine
   12171             : #endif
   12172             : 
   12173             : #if SK3_ENABLED
   12174             :     module subroutine show_D2_SK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12175             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12176             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_SK3
   12177             : #endif
   12178             :         use pm_kind, only: SKC => SK3
   12179             :         class(display_type)         , intent(inout)                 :: self
   12180             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:)
   12181             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12182             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12183             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12184             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12185             :     end subroutine
   12186             : #endif
   12187             : 
   12188             : #if SK2_ENABLED
   12189             :     module subroutine show_D2_SK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12190             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12191             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_SK2
   12192             : #endif
   12193             :         use pm_kind, only: SKC => SK2
   12194             :         class(display_type)         , intent(inout)                 :: self
   12195             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:)
   12196             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12197             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12198             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12199             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12200             :     end subroutine
   12201             : #endif
   12202             : 
   12203             : #if SK1_ENABLED
   12204             :     module subroutine show_D2_SK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12205             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12206             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_SK1
   12207             : #endif
   12208             :         use pm_kind, only: SKC => SK1
   12209             :         class(display_type)         , intent(inout)                 :: self
   12210             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:)
   12211             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12212             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12213             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12214             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12215             :     end subroutine
   12216             : #endif
   12217             : 
   12218             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12219             : 
   12220             : #if IK5_ENABLED
   12221             :     module subroutine show_D2_IK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12222             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12223             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_IK5
   12224             : #endif
   12225             :         use pm_kind, only: SKC => SK, IKC => IK5
   12226             :         class(display_type)         , intent(inout)                 :: self
   12227             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12228             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12229             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12230             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12231             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12232             :     end subroutine
   12233             : #endif
   12234             : 
   12235             : #if IK4_ENABLED
   12236             :     module subroutine show_D2_IK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12237             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12238             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_IK4
   12239             : #endif
   12240             :         use pm_kind, only: SKC => SK, IKC => IK4
   12241             :         class(display_type)         , intent(inout)                 :: self
   12242             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12243             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12244             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12245             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12246             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12247             :     end subroutine
   12248             : #endif
   12249             : 
   12250             : #if IK3_ENABLED
   12251             :     module subroutine show_D2_IK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12252             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12253             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_IK3
   12254             : #endif
   12255             :         use pm_kind, only: SKC => SK, IKC => IK3
   12256             :         class(display_type)         , intent(inout)                 :: self
   12257             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12258             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12259             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12260             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12261             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12262             :     end subroutine
   12263             : #endif
   12264             : 
   12265             : #if IK2_ENABLED
   12266             :     module subroutine show_D2_IK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12267             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12268             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_IK2
   12269             : #endif
   12270             :         use pm_kind, only: SKC => SK, IKC => IK2
   12271             :         class(display_type)         , intent(inout)                 :: self
   12272             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12273             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12274             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12275             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12276             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12277             :     end subroutine
   12278             : #endif
   12279             : 
   12280             : #if IK1_ENABLED
   12281             :     module subroutine show_D2_IK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12282             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12283             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_IK1
   12284             : #endif
   12285             :         use pm_kind, only: SKC => SK, IKC => IK1
   12286             :         class(display_type)         , intent(inout)                 :: self
   12287             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12288             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12289             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12290             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12291             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12292             :     end subroutine
   12293             : #endif
   12294             : 
   12295             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12296             : 
   12297             : #if LK5_ENABLED
   12298             :     module subroutine show_D2_LK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12299             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12300             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_LK5
   12301             : #endif
   12302             :         use pm_kind, only: SKC => SK, LKC => LK5
   12303             :         class(display_type)         , intent(inout)                 :: self
   12304             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12305             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12306             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12307             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12308             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12309             :     end subroutine
   12310             : #endif
   12311             : 
   12312             : #if LK4_ENABLED
   12313             :     module subroutine show_D2_LK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12315             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_LK4
   12316             : #endif
   12317             :         use pm_kind, only: SKC => SK, LKC => LK4
   12318             :         class(display_type)         , intent(inout)                 :: self
   12319             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12320             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12321             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12322             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12323             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12324             :     end subroutine
   12325             : #endif
   12326             : 
   12327             : #if LK3_ENABLED
   12328             :     module subroutine show_D2_LK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12329             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12330             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_LK3
   12331             : #endif
   12332             :         use pm_kind, only: SKC => SK, LKC => LK3
   12333             :         class(display_type)         , intent(inout)                 :: self
   12334             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12335             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12336             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12337             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12338             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12339             :     end subroutine
   12340             : #endif
   12341             : 
   12342             : #if LK2_ENABLED
   12343             :     module subroutine show_D2_LK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12344             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12345             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_LK2
   12346             : #endif
   12347             :         use pm_kind, only: SKC => SK, LKC => LK2
   12348             :         class(display_type)         , intent(inout)                 :: self
   12349             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12350             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12351             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12352             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12353             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12354             :     end subroutine
   12355             : #endif
   12356             : 
   12357             : #if LK1_ENABLED
   12358             :     module subroutine show_D2_LK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12359             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12360             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_LK1
   12361             : #endif
   12362             :         use pm_kind, only: SKC => SK, LKC => LK1
   12363             :         class(display_type)         , intent(inout)                 :: self
   12364             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12365             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12366             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12367             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12368             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12369             :     end subroutine
   12370             : #endif
   12371             : 
   12372             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12373             : 
   12374             : #if CK5_ENABLED
   12375             :     module subroutine show_D2_CK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12377             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_CK5
   12378             : #endif
   12379             :         use pm_kind, only: SKC => SK, CKC => CK5
   12380             :         class(display_type)         , intent(inout)                 :: self
   12381             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12382             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12383             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12384             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12385             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12386             :     end subroutine
   12387             : #endif
   12388             : 
   12389             : #if CK4_ENABLED
   12390             :     module subroutine show_D2_CK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12391             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12392             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_CK4
   12393             : #endif
   12394             :         use pm_kind, only: SKC => SK, CKC => CK4
   12395             :         class(display_type)         , intent(inout)                 :: self
   12396             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12397             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12398             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12399             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12400             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12401             :     end subroutine
   12402             : #endif
   12403             : 
   12404             : #if CK3_ENABLED
   12405             :     module subroutine show_D2_CK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12406             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12407             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_CK3
   12408             : #endif
   12409             :         use pm_kind, only: SKC => SK, CKC => CK3
   12410             :         class(display_type)         , intent(inout)                 :: self
   12411             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12412             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12413             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12414             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12415             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12416             :     end subroutine
   12417             : #endif
   12418             : 
   12419             : #if CK2_ENABLED
   12420             :     module subroutine show_D2_CK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12421             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12422             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_CK2
   12423             : #endif
   12424             :         use pm_kind, only: SKC => SK, CKC => CK2
   12425             :         class(display_type)         , intent(inout)                 :: self
   12426             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12427             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12428             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12429             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12430             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12431             :     end subroutine
   12432             : #endif
   12433             : 
   12434             : #if CK1_ENABLED
   12435             :     module subroutine show_D2_CK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12436             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12437             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_CK1
   12438             : #endif
   12439             :         use pm_kind, only: SKC => SK, CKC => CK1
   12440             :         class(display_type)         , intent(inout)                 :: self
   12441             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:)
   12442             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12443             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12444             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12445             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12446             :     end subroutine
   12447             : #endif
   12448             : 
   12449             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12450             : 
   12451             : #if RK5_ENABLED
   12452             :     module subroutine show_D2_RK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12453             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12454             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_RK5
   12455             : #endif
   12456             :         use pm_kind, only: SKC => SK, RKC => RK5
   12457             :         class(display_type)         , intent(inout)                 :: self
   12458             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:)
   12459             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12460             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12461             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12462             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12463             :     end subroutine
   12464             : #endif
   12465             : 
   12466             : #if RK4_ENABLED
   12467             :     module subroutine show_D2_RK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12469             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_RK4
   12470             : #endif
   12471             :         use pm_kind, only: SKC => SK, RKC => RK4
   12472             :         class(display_type)         , intent(inout)                 :: self
   12473             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:)
   12474             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12475             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12476             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12477             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12478             :     end subroutine
   12479             : #endif
   12480             : 
   12481             : #if RK3_ENABLED
   12482             :     module subroutine show_D2_RK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12483             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12484             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_RK3
   12485             : #endif
   12486             :         use pm_kind, only: SKC => SK, RKC => RK3
   12487             :         class(display_type)         , intent(inout)                 :: self
   12488             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:)
   12489             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12490             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12491             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12492             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12493             :     end subroutine
   12494             : #endif
   12495             : 
   12496             : #if RK2_ENABLED
   12497             :     module subroutine show_D2_RK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12498             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12499             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_RK2
   12500             : #endif
   12501             :         use pm_kind, only: SKC => SK, RKC => RK2
   12502             :         class(display_type)         , intent(inout)                 :: self
   12503             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:)
   12504             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12505             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12506             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12507             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12508             :     end subroutine
   12509             : #endif
   12510             : 
   12511             : #if RK1_ENABLED
   12512             :     module subroutine show_D2_RK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12513             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12514             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_RK1
   12515             : #endif
   12516             :         use pm_kind, only: SKC => SK, RKC => RK1
   12517             :         class(display_type)         , intent(inout)                 :: self
   12518             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:)
   12519             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12520             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12521             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12522             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12523             :     end subroutine
   12524             : #endif
   12525             : 
   12526             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12527             : 
   12528             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12529             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12530             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12531             : 
   12532             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12533             : 
   12534             : #if SK5_ENABLED
   12535             :     module subroutine show_D3_SK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12537             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_SK5
   12538             : #endif
   12539             :         use pm_kind, only: SKC => SK5
   12540             :         class(display_type)         , intent(inout)                 :: self
   12541             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12542             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12543             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12544             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12545             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12546             :     end subroutine
   12547             : #endif
   12548             : 
   12549             : #if SK4_ENABLED
   12550             :     module subroutine show_D3_SK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12551             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12552             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_SK4
   12553             : #endif
   12554             :         use pm_kind, only: SKC => SK4
   12555             :         class(display_type)         , intent(inout)                 :: self
   12556             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12557             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12558             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12559             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12560             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12561             :     end subroutine
   12562             : #endif
   12563             : 
   12564             : #if SK3_ENABLED
   12565             :     module subroutine show_D3_SK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12566             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12567             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_SK3
   12568             : #endif
   12569             :         use pm_kind, only: SKC => SK3
   12570             :         class(display_type)         , intent(inout)                 :: self
   12571             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12572             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12573             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12574             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12575             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12576             :     end subroutine
   12577             : #endif
   12578             : 
   12579             : #if SK2_ENABLED
   12580             :     module subroutine show_D3_SK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12581             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12582             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_SK2
   12583             : #endif
   12584             :         use pm_kind, only: SKC => SK2
   12585             :         class(display_type)         , intent(inout)                 :: self
   12586             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12587             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12588             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12589             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12590             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12591             :     end subroutine
   12592             : #endif
   12593             : 
   12594             : #if SK1_ENABLED
   12595             :     module subroutine show_D3_SK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12596             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12597             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_SK1
   12598             : #endif
   12599             :         use pm_kind, only: SKC => SK1
   12600             :         class(display_type)         , intent(inout)                 :: self
   12601             :         character(*,SKC)            , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12602             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12603             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12604             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12605             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12606             :     end subroutine
   12607             : #endif
   12608             : 
   12609             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12610             : 
   12611             : #if IK5_ENABLED
   12612             :     module subroutine show_D3_IK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12613             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12614             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_IK5
   12615             : #endif
   12616             :         use pm_kind, only: SKC => SK, IKC => IK5
   12617             :         class(display_type)         , intent(inout)                 :: self
   12618             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12619             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12620             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12621             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12622             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12623             :     end subroutine
   12624             : #endif
   12625             : 
   12626             : #if IK4_ENABLED
   12627             :     module subroutine show_D3_IK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12628             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12629             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_IK4
   12630             : #endif
   12631             :         use pm_kind, only: SKC => SK, IKC => IK4
   12632             :         class(display_type)         , intent(inout)                 :: self
   12633             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12634             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12635             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12636             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12637             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12638             :     end subroutine
   12639             : #endif
   12640             : 
   12641             : #if IK3_ENABLED
   12642             :     module subroutine show_D3_IK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12643             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12644             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_IK3
   12645             : #endif
   12646             :         use pm_kind, only: SKC => SK, IKC => IK3
   12647             :         class(display_type)         , intent(inout)                 :: self
   12648             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12649             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12650             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12651             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12652             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12653             :     end subroutine
   12654             : #endif
   12655             : 
   12656             : #if IK2_ENABLED
   12657             :     module subroutine show_D3_IK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12659             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_IK2
   12660             : #endif
   12661             :         use pm_kind, only: SKC => SK, IKC => IK2
   12662             :         class(display_type)         , intent(inout)                 :: self
   12663             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12664             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12665             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12666             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12667             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12668             :     end subroutine
   12669             : #endif
   12670             : 
   12671             : #if IK1_ENABLED
   12672             :     module subroutine show_D3_IK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12673             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12674             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_IK1
   12675             : #endif
   12676             :         use pm_kind, only: SKC => SK, IKC => IK1
   12677             :         class(display_type)         , intent(inout)                 :: self
   12678             :         integer(IKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12679             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12680             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12681             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12682             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12683             :     end subroutine
   12684             : #endif
   12685             : 
   12686             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12687             : 
   12688             : #if LK5_ENABLED
   12689             :     module subroutine show_D3_LK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12690             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12691             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_LK5
   12692             : #endif
   12693             :         use pm_kind, only: SKC => SK, LKC => LK5
   12694             :         class(display_type)         , intent(inout)                 :: self
   12695             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12696             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12697             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12698             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12699             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12700             :     end subroutine
   12701             : #endif
   12702             : 
   12703             : #if LK4_ENABLED
   12704             :     module subroutine show_D3_LK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12705             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12706             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_LK4
   12707             : #endif
   12708             :         use pm_kind, only: SKC => SK, LKC => LK4
   12709             :         class(display_type)         , intent(inout)                 :: self
   12710             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12711             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12712             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12713             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12714             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12715             :     end subroutine
   12716             : #endif
   12717             : 
   12718             : #if LK3_ENABLED
   12719             :     module subroutine show_D3_LK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12720             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12721             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_LK3
   12722             : #endif
   12723             :         use pm_kind, only: SKC => SK, LKC => LK3
   12724             :         class(display_type)         , intent(inout)                 :: self
   12725             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12726             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12727             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12728             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12729             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12730             :     end subroutine
   12731             : #endif
   12732             : 
   12733             : #if LK2_ENABLED
   12734             :     module subroutine show_D3_LK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12735             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12736             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_LK2
   12737             : #endif
   12738             :         use pm_kind, only: SKC => SK, LKC => LK2
   12739             :         class(display_type)         , intent(inout)                 :: self
   12740             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12741             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12742             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12743             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12744             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12745             :     end subroutine
   12746             : #endif
   12747             : 
   12748             : #if LK1_ENABLED
   12749             :     module subroutine show_D3_LK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12750             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12751             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_LK1
   12752             : #endif
   12753             :         use pm_kind, only: SKC => SK, LKC => LK1
   12754             :         class(display_type)         , intent(inout)                 :: self
   12755             :         logical(LKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12756             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12757             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12758             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12759             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12760             :     end subroutine
   12761             : #endif
   12762             : 
   12763             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12764             : 
   12765             : #if CK5_ENABLED
   12766             :     module subroutine show_D3_CK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12767             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12768             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_CK5
   12769             : #endif
   12770             :         use pm_kind, only: SKC => SK, CKC => CK5
   12771             :         class(display_type)         , intent(inout)                 :: self
   12772             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12773             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12774             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12775             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12776             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12777             :     end subroutine
   12778             : #endif
   12779             : 
   12780             : #if CK4_ENABLED
   12781             :     module subroutine show_D3_CK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12782             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12783             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_CK4
   12784             : #endif
   12785             :         use pm_kind, only: SKC => SK, CKC => CK4
   12786             :         class(display_type)         , intent(inout)                 :: self
   12787             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12788             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12789             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12790             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12791             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12792             :     end subroutine
   12793             : #endif
   12794             : 
   12795             : #if CK3_ENABLED
   12796             :     module subroutine show_D3_CK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12797             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12798             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_CK3
   12799             : #endif
   12800             :         use pm_kind, only: SKC => SK, CKC => CK3
   12801             :         class(display_type)         , intent(inout)                 :: self
   12802             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12803             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12804             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12805             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12806             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12807             :     end subroutine
   12808             : #endif
   12809             : 
   12810             : #if CK2_ENABLED
   12811             :     module subroutine show_D3_CK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12812             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12813             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_CK2
   12814             : #endif
   12815             :         use pm_kind, only: SKC => SK, CKC => CK2
   12816             :         class(display_type)         , intent(inout)                 :: self
   12817             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12818             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12819             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12820             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12821             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12822             :     end subroutine
   12823             : #endif
   12824             : 
   12825             : #if CK1_ENABLED
   12826             :     module subroutine show_D3_CK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12827             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12828             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_CK1
   12829             : #endif
   12830             :         use pm_kind, only: SKC => SK, CKC => CK1
   12831             :         class(display_type)         , intent(inout)                 :: self
   12832             :         complex(CKC)                , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12833             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12834             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12835             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12836             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12837             :     end subroutine
   12838             : #endif
   12839             : 
   12840             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12841             : 
   12842             : #if RK5_ENABLED
   12843             :     module subroutine show_D3_RK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12844             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12845             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_RK5
   12846             : #endif
   12847             :         use pm_kind, only: SKC => SK, RKC => RK5
   12848             :         class(display_type)         , intent(inout)                 :: self
   12849             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12850             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12851             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12852             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12853             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12854             :     end subroutine
   12855             : #endif
   12856             : 
   12857             : #if RK4_ENABLED
   12858             :     module subroutine show_D3_RK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12859             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12860             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_RK4
   12861             : #endif
   12862             :         use pm_kind, only: SKC => SK, RKC => RK4
   12863             :         class(display_type)         , intent(inout)                 :: self
   12864             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12865             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12866             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12867             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12868             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12869             :     end subroutine
   12870             : #endif
   12871             : 
   12872             : #if RK3_ENABLED
   12873             :     module subroutine show_D3_RK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12874             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12875             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_RK3
   12876             : #endif
   12877             :         use pm_kind, only: SKC => SK, RKC => RK3
   12878             :         class(display_type)         , intent(inout)                 :: self
   12879             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12880             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12881             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12882             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12883             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12884             :     end subroutine
   12885             : #endif
   12886             : 
   12887             : #if RK2_ENABLED
   12888             :     module subroutine show_D3_RK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12889             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12890             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_RK2
   12891             : #endif
   12892             :         use pm_kind, only: SKC => SK, RKC => RK2
   12893             :         class(display_type)         , intent(inout)                 :: self
   12894             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12895             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12896             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12897             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12898             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12899             :     end subroutine
   12900             : #endif
   12901             : 
   12902             : #if RK1_ENABLED
   12903             :     module subroutine show_D3_RK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12904             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12905             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_RK1
   12906             : #endif
   12907             :         use pm_kind, only: SKC => SK, RKC => RK1
   12908             :         class(display_type)         , intent(inout)                 :: self
   12909             :         real(RKC)                   , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   12910             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12911             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12912             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12913             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12914             :     end subroutine
   12915             : #endif
   12916             : 
   12917             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12918             : 
   12919             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12920             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12921             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12922             : 
   12923             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12924             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12925             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12926             : 
   12927             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12928             : 
   12929             : #if SK5_ENABLED
   12930             :     module subroutine show_D0_PSSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12931             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12932             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSSK5
   12933             : #endif
   12934             :         use pm_kind, only: SKC => SK5
   12935             :         use pm_container, only: css_pdt
   12936             :         class(display_type)         , intent(inout)                 :: self
   12937             :         type(css_pdt(SKC))             , intent(in)                    :: object
   12938             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12939             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12940             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12941             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12942             :     end subroutine
   12943             : #endif
   12944             : 
   12945             : #if SK4_ENABLED
   12946             :     module subroutine show_D0_PSSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12947             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12948             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSSK4
   12949             : #endif
   12950             :         use pm_kind, only: SKC => SK4
   12951             :         use pm_container, only: css_pdt
   12952             :         class(display_type)         , intent(inout)                 :: self
   12953             :         type(css_pdt(SKC))             , intent(in)                    :: object
   12954             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12955             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12956             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12957             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12958             :     end subroutine
   12959             : #endif
   12960             : 
   12961             : #if SK3_ENABLED
   12962             :     module subroutine show_D0_PSSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12963             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12964             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSSK3
   12965             : #endif
   12966             :         use pm_kind, only: SKC => SK3
   12967             :         use pm_container, only: css_pdt
   12968             :         class(display_type)         , intent(inout)                 :: self
   12969             :         type(css_pdt(SKC))             , intent(in)                    :: object
   12970             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12971             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12972             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12973             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12974             :     end subroutine
   12975             : #endif
   12976             : 
   12977             : #if SK2_ENABLED
   12978             :     module subroutine show_D0_PSSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12979             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12980             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSSK2
   12981             : #endif
   12982             :         use pm_kind, only: SKC => SK2
   12983             :         use pm_container, only: css_pdt
   12984             :         class(display_type)         , intent(inout)                 :: self
   12985             :         type(css_pdt(SKC))             , intent(in)                    :: object
   12986             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   12987             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   12988             :         logical(LK)                 , intent(in)    , optional      :: sticky
   12989             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   12990             :     end subroutine
   12991             : #endif
   12992             : 
   12993             : #if SK1_ENABLED
   12994             :     module subroutine show_D0_PSSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   12995             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12996             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSSK1
   12997             : #endif
   12998             :         use pm_kind, only: SKC => SK1
   12999             :         use pm_container, only: css_pdt
   13000             :         class(display_type)         , intent(inout)                 :: self
   13001             :         type(css_pdt(SKC))             , intent(in)                    :: object
   13002             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13003             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13004             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13005             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13006             :     end subroutine
   13007             : #endif
   13008             : 
   13009             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13010             : 
   13011             : #if IK5_ENABLED
   13012             :     module subroutine show_D0_PSIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13013             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13014             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSIK5
   13015             : #endif
   13016             :         use pm_kind, only: SKC => SK, IKC => IK5
   13017             :         use pm_container, only: csi_pdt
   13018             :         class(display_type)         , intent(inout)                 :: self
   13019             :         type(csi_pdt(IKC))          , intent(in)                    :: object
   13020             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13021             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13022             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13023             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13024             :     end subroutine
   13025             : #endif
   13026             : 
   13027             : #if IK4_ENABLED
   13028             :     module subroutine show_D0_PSIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13029             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13030             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSIK4
   13031             : #endif
   13032             :         use pm_kind, only: SKC => SK, IKC => IK4
   13033             :         use pm_container, only: csi_pdt
   13034             :         class(display_type)         , intent(inout)                 :: self
   13035             :         type(csi_pdt(IKC))          , intent(in)                    :: object
   13036             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13037             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13038             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13039             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13040             :     end subroutine
   13041             : #endif
   13042             : 
   13043             : #if IK3_ENABLED
   13044             :     module subroutine show_D0_PSIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13045             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13046             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSIK3
   13047             : #endif
   13048             :         use pm_kind, only: SKC => SK, IKC => IK3
   13049             :         use pm_container, only: csi_pdt
   13050             :         class(display_type)         , intent(inout)                 :: self
   13051             :         type(csi_pdt(IKC))          , intent(in)                    :: object
   13052             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13053             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13054             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13055             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13056             :     end subroutine
   13057             : #endif
   13058             : 
   13059             : #if IK2_ENABLED
   13060             :     module subroutine show_D0_PSIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13061             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13062             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSIK2
   13063             : #endif
   13064             :         use pm_kind, only: SKC => SK, IKC => IK2
   13065             :         use pm_container, only: csi_pdt
   13066             :         class(display_type)         , intent(inout)                 :: self
   13067             :         type(csi_pdt(IKC))          , intent(in)                    :: object
   13068             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13069             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13070             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13071             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13072             :     end subroutine
   13073             : #endif
   13074             : 
   13075             : #if IK1_ENABLED
   13076             :     module subroutine show_D0_PSIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13077             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13078             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSIK1
   13079             : #endif
   13080             :         use pm_kind, only: SKC => SK, IKC => IK1
   13081             :         use pm_container, only: csi_pdt
   13082             :         class(display_type)         , intent(inout)                 :: self
   13083             :         type(csi_pdt(IKC))          , intent(in)                    :: object
   13084             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13085             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13086             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13087             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13088             :     end subroutine
   13089             : #endif
   13090             : 
   13091             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13092             : 
   13093             : #if LK5_ENABLED
   13094             :     module subroutine show_D0_PSLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13095             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13096             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSLK5
   13097             : #endif
   13098             :         use pm_kind, only: SKC => SK, LKC => LK5
   13099             :         use pm_container, only: csl_pdt
   13100             :         class(display_type)         , intent(inout)                 :: self
   13101             :         type(csl_pdt(LKC))          , intent(in)                    :: object
   13102             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13103             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13104             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13105             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13106             :     end subroutine
   13107             : #endif
   13108             : 
   13109             : #if LK4_ENABLED
   13110             :     module subroutine show_D0_PSLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13111             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13112             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSLK4
   13113             : #endif
   13114             :         use pm_kind, only: SKC => SK, LKC => LK4
   13115             :         use pm_container, only: csl_pdt
   13116             :         class(display_type)         , intent(inout)                 :: self
   13117             :         type(csl_pdt(LKC))          , intent(in)                    :: object
   13118             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13119             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13120             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13121             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13122             :     end subroutine
   13123             : #endif
   13124             : 
   13125             : #if LK3_ENABLED
   13126             :     module subroutine show_D0_PSLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13127             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13128             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSLK3
   13129             : #endif
   13130             :         use pm_kind, only: SKC => SK, LKC => LK3
   13131             :         use pm_container, only: csl_pdt
   13132             :         class(display_type)         , intent(inout)                 :: self
   13133             :         type(csl_pdt(LKC))          , intent(in)                    :: object
   13134             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13135             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13136             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13137             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13138             :     end subroutine
   13139             : #endif
   13140             : 
   13141             : #if LK2_ENABLED
   13142             :     module subroutine show_D0_PSLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13143             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13144             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSLK2
   13145             : #endif
   13146             :         use pm_kind, only: SKC => SK, LKC => LK2
   13147             :         use pm_container, only: csl_pdt
   13148             :         class(display_type)         , intent(inout)                 :: self
   13149             :         type(csl_pdt(LKC))          , intent(in)                    :: object
   13150             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13151             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13152             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13153             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13154             :     end subroutine
   13155             : #endif
   13156             : 
   13157             : #if LK1_ENABLED
   13158             :     module subroutine show_D0_PSLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13159             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13160             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSLK1
   13161             : #endif
   13162             :         use pm_kind, only: SKC => SK, LKC => LK1
   13163             :         use pm_container, only: csl_pdt
   13164             :         class(display_type)         , intent(inout)                 :: self
   13165             :         type(csl_pdt(LKC))          , intent(in)                    :: object
   13166             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13167             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13168             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13169             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13170             :     end subroutine
   13171             : #endif
   13172             : 
   13173             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13174             : 
   13175             : #if CK5_ENABLED
   13176             :     module subroutine show_D0_PSCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13178             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSCK5
   13179             : #endif
   13180             :         use pm_kind, only: SKC => SK, CKC => CK5
   13181             :         use pm_container, only: csc_pdt
   13182             :         class(display_type)         , intent(inout)                 :: self
   13183             :         type(csc_pdt(CKC))          , intent(in)                    :: object
   13184             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13185             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13186             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13187             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13188             :     end subroutine
   13189             : #endif
   13190             : 
   13191             : #if CK4_ENABLED
   13192             :     module subroutine show_D0_PSCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13193             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13194             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSCK4
   13195             : #endif
   13196             :         use pm_kind, only: SKC => SK, CKC => CK4
   13197             :         use pm_container, only: csc_pdt
   13198             :         class(display_type)         , intent(inout)                 :: self
   13199             :         type(csc_pdt(CKC))          , intent(in)                    :: object
   13200             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13201             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13202             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13203             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13204             :     end subroutine
   13205             : #endif
   13206             : 
   13207             : #if CK3_ENABLED
   13208             :     module subroutine show_D0_PSCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13209             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13210             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSCK3
   13211             : #endif
   13212             :         use pm_kind, only: SKC => SK, CKC => CK3
   13213             :         use pm_container, only: csc_pdt
   13214             :         class(display_type)         , intent(inout)                 :: self
   13215             :         type(csc_pdt(CKC))          , intent(in)                    :: object
   13216             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13217             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13218             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13219             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13220             :     end subroutine
   13221             : #endif
   13222             : 
   13223             : #if CK2_ENABLED
   13224             :     module subroutine show_D0_PSCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13225             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13226             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSCK2
   13227             : #endif
   13228             :         use pm_kind, only: SKC => SK, CKC => CK2
   13229             :         use pm_container, only: csc_pdt
   13230             :         class(display_type)         , intent(inout)                 :: self
   13231             :         type(csc_pdt(CKC))          , intent(in)                    :: object
   13232             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13233             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13234             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13235             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13236             :     end subroutine
   13237             : #endif
   13238             : 
   13239             : #if CK1_ENABLED
   13240             :     module subroutine show_D0_PSCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13241             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13242             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSCK1
   13243             : #endif
   13244             :         use pm_kind, only: SKC => SK, CKC => CK1
   13245             :         use pm_container, only: csc_pdt
   13246             :         class(display_type)         , intent(inout)                 :: self
   13247             :         type(csc_pdt(CKC))          , intent(in)                    :: object
   13248             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13249             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13250             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13251             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13252             :     end subroutine
   13253             : #endif
   13254             : 
   13255             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13256             : 
   13257             : #if RK5_ENABLED
   13258             :     module subroutine show_D0_PSRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13259             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13260             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSRK5
   13261             : #endif
   13262             :         use pm_kind, only: SKC => SK, RKC => RK5
   13263             :         use pm_container, only: csr_pdt
   13264             :         class(display_type)         , intent(inout)                 :: self
   13265             :         type(csr_pdt(RKC))          , intent(in)                    :: object
   13266             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13267             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13268             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13269             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13270             :     end subroutine
   13271             : #endif
   13272             : 
   13273             : #if RK4_ENABLED
   13274             :     module subroutine show_D0_PSRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13275             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13276             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSRK4
   13277             : #endif
   13278             :         use pm_kind, only: SKC => SK, RKC => RK4
   13279             :         use pm_container, only: csr_pdt
   13280             :         class(display_type)         , intent(inout)                 :: self
   13281             :         type(csr_pdt(RKC))          , intent(in)                    :: object
   13282             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13283             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13284             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13285             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13286             :     end subroutine
   13287             : #endif
   13288             : 
   13289             : #if RK3_ENABLED
   13290             :     module subroutine show_D0_PSRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13291             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13292             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSRK3
   13293             : #endif
   13294             :         use pm_kind, only: SKC => SK, RKC => RK3
   13295             :         use pm_container, only: csr_pdt
   13296             :         class(display_type)         , intent(inout)                 :: self
   13297             :         type(csr_pdt(RKC))          , intent(in)                    :: object
   13298             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13299             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13300             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13301             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13302             :     end subroutine
   13303             : #endif
   13304             : 
   13305             : #if RK2_ENABLED
   13306             :     module subroutine show_D0_PSRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13307             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13308             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSRK2
   13309             : #endif
   13310             :         use pm_kind, only: SKC => SK, RKC => RK2
   13311             :         use pm_container, only: csr_pdt
   13312             :         class(display_type)         , intent(inout)                 :: self
   13313             :         type(csr_pdt(RKC))          , intent(in)                    :: object
   13314             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13315             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13316             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13317             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13318             :     end subroutine
   13319             : #endif
   13320             : 
   13321             : #if RK1_ENABLED
   13322             :     module subroutine show_D0_PSRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13323             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13324             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PSRK1
   13325             : #endif
   13326             :         use pm_kind, only: SKC => SK, RKC => RK1
   13327             :         use pm_container, only: csr_pdt
   13328             :         class(display_type)         , intent(inout)                 :: self
   13329             :         type(csr_pdt(RKC))          , intent(in)                    :: object
   13330             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13331             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13332             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13333             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13334             :     end subroutine
   13335             : #endif
   13336             : 
   13337             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13338             : 
   13339             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13340             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13341             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13342             : 
   13343             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13344             : 
   13345             : #if SK5_ENABLED
   13346             :     module subroutine show_D1_PSSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13347             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13348             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSSK5
   13349             : #endif
   13350             :         use pm_kind, only: SKC => SK5
   13351             :         use pm_container, only: css_pdt
   13352             :         class(display_type)         , intent(inout)                 :: self
   13353             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:)
   13354             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13355             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13356             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13357             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13358             :     end subroutine
   13359             : #endif
   13360             : 
   13361             : #if SK4_ENABLED
   13362             :     module subroutine show_D1_PSSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13363             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13364             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSSK4
   13365             : #endif
   13366             :         use pm_kind, only: SKC => SK4
   13367             :         use pm_container, only: css_pdt
   13368             :         class(display_type)         , intent(inout)                 :: self
   13369             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:)
   13370             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13371             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13372             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13373             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13374             :     end subroutine
   13375             : #endif
   13376             : 
   13377             : #if SK3_ENABLED
   13378             :     module subroutine show_D1_PSSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13379             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13380             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSSK3
   13381             : #endif
   13382             :         use pm_kind, only: SKC => SK3
   13383             :         use pm_container, only: css_pdt
   13384             :         class(display_type)         , intent(inout)                 :: self
   13385             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:)
   13386             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13387             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13388             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13389             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13390             :     end subroutine
   13391             : #endif
   13392             : 
   13393             : #if SK2_ENABLED
   13394             :     module subroutine show_D1_PSSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13395             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13396             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSSK2
   13397             : #endif
   13398             :         use pm_kind, only: SKC => SK2
   13399             :         use pm_container, only: css_pdt
   13400             :         class(display_type)         , intent(inout)                 :: self
   13401             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:)
   13402             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13403             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13404             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13405             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13406             :     end subroutine
   13407             : #endif
   13408             : 
   13409             : #if SK1_ENABLED
   13410             :     module subroutine show_D1_PSSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13412             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSSK1
   13413             : #endif
   13414             :         use pm_kind, only: SKC => SK1
   13415             :         use pm_container, only: css_pdt
   13416             :         class(display_type)         , intent(inout)                 :: self
   13417             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:)
   13418             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13419             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13420             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13421             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13422             :     end subroutine
   13423             : #endif
   13424             : 
   13425             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13426             : 
   13427             : #if IK5_ENABLED
   13428             :     module subroutine show_D1_PSIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13429             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13430             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSIK5
   13431             : #endif
   13432             :         use pm_kind, only: SKC => SK, IKC => IK5
   13433             :         use pm_container, only: csi_pdt
   13434             :         class(display_type)         , intent(inout)                 :: self
   13435             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13436             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13437             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13438             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13439             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13440             :     end subroutine
   13441             : #endif
   13442             : 
   13443             : #if IK4_ENABLED
   13444             :     module subroutine show_D1_PSIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13445             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13446             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSIK4
   13447             : #endif
   13448             :         use pm_kind, only: SKC => SK, IKC => IK4
   13449             :         use pm_container, only: csi_pdt
   13450             :         class(display_type)         , intent(inout)                 :: self
   13451             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13452             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13453             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13454             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13455             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13456             :     end subroutine
   13457             : #endif
   13458             : 
   13459             : #if IK3_ENABLED
   13460             :     module subroutine show_D1_PSIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13461             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13462             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSIK3
   13463             : #endif
   13464             :         use pm_kind, only: SKC => SK, IKC => IK3
   13465             :         use pm_container, only: csi_pdt
   13466             :         class(display_type)         , intent(inout)                 :: self
   13467             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13468             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13469             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13470             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13471             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13472             :     end subroutine
   13473             : #endif
   13474             : 
   13475             : #if IK2_ENABLED
   13476             :     module subroutine show_D1_PSIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13477             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13478             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSIK2
   13479             : #endif
   13480             :         use pm_kind, only: SKC => SK, IKC => IK2
   13481             :         use pm_container, only: csi_pdt
   13482             :         class(display_type)         , intent(inout)                 :: self
   13483             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13484             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13485             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13486             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13487             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13488             :     end subroutine
   13489             : #endif
   13490             : 
   13491             : #if IK1_ENABLED
   13492             :     module subroutine show_D1_PSIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13493             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13494             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSIK1
   13495             : #endif
   13496             :         use pm_kind, only: SKC => SK, IKC => IK1
   13497             :         use pm_container, only: csi_pdt
   13498             :         class(display_type)         , intent(inout)                 :: self
   13499             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13500             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13501             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13502             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13503             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13504             :     end subroutine
   13505             : #endif
   13506             : 
   13507             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13508             : 
   13509             : #if LK5_ENABLED
   13510             :     module subroutine show_D1_PSLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13511             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13512             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSLK5
   13513             : #endif
   13514             :         use pm_kind, only: SKC => SK, LKC => LK5
   13515             :         use pm_container, only: csl_pdt
   13516             :         class(display_type)         , intent(inout)                 :: self
   13517             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13518             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13519             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13520             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13521             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13522             :     end subroutine
   13523             : #endif
   13524             : 
   13525             : #if LK4_ENABLED
   13526             :     module subroutine show_D1_PSLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13527             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13528             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSLK4
   13529             : #endif
   13530             :         use pm_kind, only: SKC => SK, LKC => LK4
   13531             :         use pm_container, only: csl_pdt
   13532             :         class(display_type)         , intent(inout)                 :: self
   13533             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13534             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13535             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13536             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13537             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13538             :     end subroutine
   13539             : #endif
   13540             : 
   13541             : #if LK3_ENABLED
   13542             :     module subroutine show_D1_PSLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13543             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13544             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSLK3
   13545             : #endif
   13546             :         use pm_kind, only: SKC => SK, LKC => LK3
   13547             :         use pm_container, only: csl_pdt
   13548             :         class(display_type)         , intent(inout)                 :: self
   13549             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13550             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13551             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13552             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13553             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13554             :     end subroutine
   13555             : #endif
   13556             : 
   13557             : #if LK2_ENABLED
   13558             :     module subroutine show_D1_PSLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13559             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13560             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSLK2
   13561             : #endif
   13562             :         use pm_kind, only: SKC => SK, LKC => LK2
   13563             :         use pm_container, only: csl_pdt
   13564             :         class(display_type)         , intent(inout)                 :: self
   13565             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13566             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13567             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13568             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13569             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13570             :     end subroutine
   13571             : #endif
   13572             : 
   13573             : #if LK1_ENABLED
   13574             :     module subroutine show_D1_PSLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13575             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13576             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSLK1
   13577             : #endif
   13578             :         use pm_kind, only: SKC => SK, LKC => LK1
   13579             :         use pm_container, only: csl_pdt
   13580             :         class(display_type)         , intent(inout)                 :: self
   13581             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13582             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13583             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13584             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13585             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13586             :     end subroutine
   13587             : #endif
   13588             : 
   13589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13590             : 
   13591             : #if CK5_ENABLED
   13592             :     module subroutine show_D1_PSCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13594             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSCK5
   13595             : #endif
   13596             :         use pm_kind, only: SKC => SK, CKC => CK5
   13597             :         use pm_container, only: csc_pdt
   13598             :         class(display_type)         , intent(inout)                 :: self
   13599             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13600             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13601             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13602             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13603             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13604             :     end subroutine
   13605             : #endif
   13606             : 
   13607             : #if CK4_ENABLED
   13608             :     module subroutine show_D1_PSCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13609             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13610             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSCK4
   13611             : #endif
   13612             :         use pm_kind, only: SKC => SK, CKC => CK4
   13613             :         use pm_container, only: csc_pdt
   13614             :         class(display_type)         , intent(inout)                 :: self
   13615             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13616             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13617             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13618             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13619             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13620             :     end subroutine
   13621             : #endif
   13622             : 
   13623             : #if CK3_ENABLED
   13624             :     module subroutine show_D1_PSCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13625             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13626             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSCK3
   13627             : #endif
   13628             :         use pm_kind, only: SKC => SK, CKC => CK3
   13629             :         use pm_container, only: csc_pdt
   13630             :         class(display_type)         , intent(inout)                 :: self
   13631             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13632             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13633             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13634             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13635             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13636             :     end subroutine
   13637             : #endif
   13638             : 
   13639             : #if CK2_ENABLED
   13640             :     module subroutine show_D1_PSCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13641             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13642             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSCK2
   13643             : #endif
   13644             :         use pm_kind, only: SKC => SK, CKC => CK2
   13645             :         use pm_container, only: csc_pdt
   13646             :         class(display_type)         , intent(inout)                 :: self
   13647             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13648             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13649             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13650             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13651             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13652             :     end subroutine
   13653             : #endif
   13654             : 
   13655             : #if CK1_ENABLED
   13656             :     module subroutine show_D1_PSCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13657             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13658             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSCK1
   13659             : #endif
   13660             :         use pm_kind, only: SKC => SK, CKC => CK1
   13661             :         use pm_container, only: csc_pdt
   13662             :         class(display_type)         , intent(inout)                 :: self
   13663             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13664             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13665             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13666             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13667             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13668             :     end subroutine
   13669             : #endif
   13670             : 
   13671             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13672             : 
   13673             : #if RK5_ENABLED
   13674             :     module subroutine show_D1_PSRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13675             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13676             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSRK5
   13677             : #endif
   13678             :         use pm_kind, only: SKC => SK, RKC => RK5
   13679             :         use pm_container, only: csr_pdt
   13680             :         class(display_type)         , intent(inout)                 :: self
   13681             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13682             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13683             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13684             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13685             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13686             :     end subroutine
   13687             : #endif
   13688             : 
   13689             : #if RK4_ENABLED
   13690             :     module subroutine show_D1_PSRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13691             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13692             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSRK4
   13693             : #endif
   13694             :         use pm_kind, only: SKC => SK, RKC => RK4
   13695             :         use pm_container, only: csr_pdt
   13696             :         class(display_type)         , intent(inout)                 :: self
   13697             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13698             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13699             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13700             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13701             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13702             :     end subroutine
   13703             : #endif
   13704             : 
   13705             : #if RK3_ENABLED
   13706             :     module subroutine show_D1_PSRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13708             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSRK3
   13709             : #endif
   13710             :         use pm_kind, only: SKC => SK, RKC => RK3
   13711             :         use pm_container, only: csr_pdt
   13712             :         class(display_type)         , intent(inout)                 :: self
   13713             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13714             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13715             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13716             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13717             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13718             :     end subroutine
   13719             : #endif
   13720             : 
   13721             : #if RK2_ENABLED
   13722             :     module subroutine show_D1_PSRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13723             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13724             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSRK2
   13725             : #endif
   13726             :         use pm_kind, only: SKC => SK, RKC => RK2
   13727             :         use pm_container, only: csr_pdt
   13728             :         class(display_type)         , intent(inout)                 :: self
   13729             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13730             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13731             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13732             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13733             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13734             :     end subroutine
   13735             : #endif
   13736             : 
   13737             : #if RK1_ENABLED
   13738             :     module subroutine show_D1_PSRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13739             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13740             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PSRK1
   13741             : #endif
   13742             :         use pm_kind, only: SKC => SK, RKC => RK1
   13743             :         use pm_container, only: csr_pdt
   13744             :         class(display_type)         , intent(inout)                 :: self
   13745             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   13746             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13747             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13748             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13749             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13750             :     end subroutine
   13751             : #endif
   13752             : 
   13753             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13754             : 
   13755             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13756             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13757             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13758             : 
   13759             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13760             : 
   13761             : #if SK5_ENABLED
   13762             :     module subroutine show_D2_PSSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13763             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13764             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSSK5
   13765             : #endif
   13766             :         use pm_kind, only: SKC => SK5
   13767             :         use pm_container, only: css_pdt
   13768             :         class(display_type)         , intent(inout)                 :: self
   13769             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:)
   13770             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13771             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13772             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13773             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13774             :     end subroutine
   13775             : #endif
   13776             : 
   13777             : #if SK4_ENABLED
   13778             :     module subroutine show_D2_PSSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13779             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13780             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSSK4
   13781             : #endif
   13782             :         use pm_kind, only: SKC => SK4
   13783             :         use pm_container, only: css_pdt
   13784             :         class(display_type)         , intent(inout)                 :: self
   13785             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:)
   13786             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13787             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13788             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13789             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13790             :     end subroutine
   13791             : #endif
   13792             : 
   13793             : #if SK3_ENABLED
   13794             :     module subroutine show_D2_PSSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13795             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13796             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSSK3
   13797             : #endif
   13798             :         use pm_kind, only: SKC => SK3
   13799             :         use pm_container, only: css_pdt
   13800             :         class(display_type)         , intent(inout)                 :: self
   13801             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:)
   13802             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13803             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13804             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13805             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13806             :     end subroutine
   13807             : #endif
   13808             : 
   13809             : #if SK2_ENABLED
   13810             :     module subroutine show_D2_PSSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13811             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13812             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSSK2
   13813             : #endif
   13814             :         use pm_kind, only: SKC => SK2
   13815             :         use pm_container, only: css_pdt
   13816             :         class(display_type)         , intent(inout)                 :: self
   13817             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:)
   13818             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13819             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13820             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13821             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13822             :     end subroutine
   13823             : #endif
   13824             : 
   13825             : #if SK1_ENABLED
   13826             :     module subroutine show_D2_PSSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13827             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13828             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSSK1
   13829             : #endif
   13830             :         use pm_kind, only: SKC => SK1
   13831             :         use pm_container, only: css_pdt
   13832             :         class(display_type)         , intent(inout)                 :: self
   13833             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:)
   13834             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13835             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13836             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13837             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13838             :     end subroutine
   13839             : #endif
   13840             : 
   13841             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13842             : 
   13843             : #if IK5_ENABLED
   13844             :     module subroutine show_D2_PSIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13845             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13846             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSIK5
   13847             : #endif
   13848             :         use pm_kind, only: SKC => SK, IKC => IK5
   13849             :         use pm_container, only: csi_pdt
   13850             :         class(display_type)         , intent(inout)                 :: self
   13851             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13852             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13853             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13854             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13855             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13856             :     end subroutine
   13857             : #endif
   13858             : 
   13859             : #if IK4_ENABLED
   13860             :     module subroutine show_D2_PSIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13861             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13862             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSIK4
   13863             : #endif
   13864             :         use pm_kind, only: SKC => SK, IKC => IK4
   13865             :         use pm_container, only: csi_pdt
   13866             :         class(display_type)         , intent(inout)                 :: self
   13867             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13868             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13869             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13870             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13871             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13872             :     end subroutine
   13873             : #endif
   13874             : 
   13875             : #if IK3_ENABLED
   13876             :     module subroutine show_D2_PSIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13877             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13878             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSIK3
   13879             : #endif
   13880             :         use pm_kind, only: SKC => SK, IKC => IK3
   13881             :         use pm_container, only: csi_pdt
   13882             :         class(display_type)         , intent(inout)                 :: self
   13883             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13884             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13885             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13886             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13887             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13888             :     end subroutine
   13889             : #endif
   13890             : 
   13891             : #if IK2_ENABLED
   13892             :     module subroutine show_D2_PSIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13893             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13894             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSIK2
   13895             : #endif
   13896             :         use pm_kind, only: SKC => SK, IKC => IK2
   13897             :         use pm_container, only: csi_pdt
   13898             :         class(display_type)         , intent(inout)                 :: self
   13899             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13900             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13901             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13902             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13903             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13904             :     end subroutine
   13905             : #endif
   13906             : 
   13907             : #if IK1_ENABLED
   13908             :     module subroutine show_D2_PSIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13909             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13910             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSIK1
   13911             : #endif
   13912             :         use pm_kind, only: SKC => SK, IKC => IK1
   13913             :         use pm_container, only: csi_pdt
   13914             :         class(display_type)         , intent(inout)                 :: self
   13915             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13916             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13917             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13918             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13919             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13920             :     end subroutine
   13921             : #endif
   13922             : 
   13923             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13924             : 
   13925             : #if LK5_ENABLED
   13926             :     module subroutine show_D2_PSLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13927             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13928             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSLK5
   13929             : #endif
   13930             :         use pm_kind, only: SKC => SK, LKC => LK5
   13931             :         use pm_container, only: csl_pdt
   13932             :         class(display_type)         , intent(inout)                 :: self
   13933             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13934             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13935             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13936             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13937             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13938             :     end subroutine
   13939             : #endif
   13940             : 
   13941             : #if LK4_ENABLED
   13942             :     module subroutine show_D2_PSLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13943             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13944             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSLK4
   13945             : #endif
   13946             :         use pm_kind, only: SKC => SK, LKC => LK4
   13947             :         use pm_container, only: csl_pdt
   13948             :         class(display_type)         , intent(inout)                 :: self
   13949             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13950             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13951             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13952             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13953             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13954             :     end subroutine
   13955             : #endif
   13956             : 
   13957             : #if LK3_ENABLED
   13958             :     module subroutine show_D2_PSLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13959             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13960             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSLK3
   13961             : #endif
   13962             :         use pm_kind, only: SKC => SK, LKC => LK3
   13963             :         use pm_container, only: csl_pdt
   13964             :         class(display_type)         , intent(inout)                 :: self
   13965             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13966             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13967             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13968             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13969             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13970             :     end subroutine
   13971             : #endif
   13972             : 
   13973             : #if LK2_ENABLED
   13974             :     module subroutine show_D2_PSLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13975             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13976             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSLK2
   13977             : #endif
   13978             :         use pm_kind, only: SKC => SK, LKC => LK2
   13979             :         use pm_container, only: csl_pdt
   13980             :         class(display_type)         , intent(inout)                 :: self
   13981             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13982             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13983             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   13984             :         logical(LK)                 , intent(in)    , optional      :: sticky
   13985             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   13986             :     end subroutine
   13987             : #endif
   13988             : 
   13989             : #if LK1_ENABLED
   13990             :     module subroutine show_D2_PSLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   13991             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13992             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSLK1
   13993             : #endif
   13994             :         use pm_kind, only: SKC => SK, LKC => LK1
   13995             :         use pm_container, only: csl_pdt
   13996             :         class(display_type)         , intent(inout)                 :: self
   13997             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   13998             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   13999             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14000             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14001             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14002             :     end subroutine
   14003             : #endif
   14004             : 
   14005             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14006             : 
   14007             : #if CK5_ENABLED
   14008             :     module subroutine show_D2_PSCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14009             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14010             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSCK5
   14011             : #endif
   14012             :         use pm_kind, only: SKC => SK, CKC => CK5
   14013             :         use pm_container, only: csc_pdt
   14014             :         class(display_type)         , intent(inout)                 :: self
   14015             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14016             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14017             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14018             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14019             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14020             :     end subroutine
   14021             : #endif
   14022             : 
   14023             : #if CK4_ENABLED
   14024             :     module subroutine show_D2_PSCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14025             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14026             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSCK4
   14027             : #endif
   14028             :         use pm_kind, only: SKC => SK, CKC => CK4
   14029             :         use pm_container, only: csc_pdt
   14030             :         class(display_type)         , intent(inout)                 :: self
   14031             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14032             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14033             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14034             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14035             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14036             :     end subroutine
   14037             : #endif
   14038             : 
   14039             : #if CK3_ENABLED
   14040             :     module subroutine show_D2_PSCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14041             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14042             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSCK3
   14043             : #endif
   14044             :         use pm_kind, only: SKC => SK, CKC => CK3
   14045             :         use pm_container, only: csc_pdt
   14046             :         class(display_type)         , intent(inout)                 :: self
   14047             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14048             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14049             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14050             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14051             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14052             :     end subroutine
   14053             : #endif
   14054             : 
   14055             : #if CK2_ENABLED
   14056             :     module subroutine show_D2_PSCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14057             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14058             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSCK2
   14059             : #endif
   14060             :         use pm_kind, only: SKC => SK, CKC => CK2
   14061             :         use pm_container, only: csc_pdt
   14062             :         class(display_type)         , intent(inout)                 :: self
   14063             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14064             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14065             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14066             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14067             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14068             :     end subroutine
   14069             : #endif
   14070             : 
   14071             : #if CK1_ENABLED
   14072             :     module subroutine show_D2_PSCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14073             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14074             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSCK1
   14075             : #endif
   14076             :         use pm_kind, only: SKC => SK, CKC => CK1
   14077             :         use pm_container, only: csc_pdt
   14078             :         class(display_type)         , intent(inout)                 :: self
   14079             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14080             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14081             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14082             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14083             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14084             :     end subroutine
   14085             : #endif
   14086             : 
   14087             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14088             : 
   14089             : #if RK5_ENABLED
   14090             :     module subroutine show_D2_PSRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14091             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14092             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSRK5
   14093             : #endif
   14094             :         use pm_kind, only: SKC => SK, RKC => RK5
   14095             :         use pm_container, only: csr_pdt
   14096             :         class(display_type)         , intent(inout)                 :: self
   14097             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14098             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14099             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14100             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14101             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14102             :     end subroutine
   14103             : #endif
   14104             : 
   14105             : #if RK4_ENABLED
   14106             :     module subroutine show_D2_PSRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14107             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14108             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSRK4
   14109             : #endif
   14110             :         use pm_kind, only: SKC => SK, RKC => RK4
   14111             :         use pm_container, only: csr_pdt
   14112             :         class(display_type)         , intent(inout)                 :: self
   14113             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14114             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14115             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14116             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14117             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14118             :     end subroutine
   14119             : #endif
   14120             : 
   14121             : #if RK3_ENABLED
   14122             :     module subroutine show_D2_PSRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14123             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14124             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSRK3
   14125             : #endif
   14126             :         use pm_kind, only: SKC => SK, RKC => RK3
   14127             :         use pm_container, only: csr_pdt
   14128             :         class(display_type)         , intent(inout)                 :: self
   14129             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14130             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14131             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14132             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14133             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14134             :     end subroutine
   14135             : #endif
   14136             : 
   14137             : #if RK2_ENABLED
   14138             :     module subroutine show_D2_PSRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14139             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14140             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSRK2
   14141             : #endif
   14142             :         use pm_kind, only: SKC => SK, RKC => RK2
   14143             :         use pm_container, only: csr_pdt
   14144             :         class(display_type)         , intent(inout)                 :: self
   14145             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14146             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14147             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14148             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14149             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14150             :     end subroutine
   14151             : #endif
   14152             : 
   14153             : #if RK1_ENABLED
   14154             :     module subroutine show_D2_PSRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14155             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14156             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PSRK1
   14157             : #endif
   14158             :         use pm_kind, only: SKC => SK, RKC => RK1
   14159             :         use pm_container, only: csr_pdt
   14160             :         class(display_type)         , intent(inout)                 :: self
   14161             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   14162             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14163             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14164             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14165             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14166             :     end subroutine
   14167             : #endif
   14168             : 
   14169             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14170             : 
   14171             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14172             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14173             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14174             : 
   14175             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14176             : 
   14177             : #if SK5_ENABLED
   14178             :     module subroutine show_D3_PSSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14179             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14180             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSSK5
   14181             : #endif
   14182             :         use pm_kind, only: SKC => SK5
   14183             :         use pm_container, only: css_pdt
   14184             :         class(display_type)         , intent(inout)                 :: self
   14185             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14186             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14187             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14188             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14189             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14190             :     end subroutine
   14191             : #endif
   14192             : 
   14193             : #if SK4_ENABLED
   14194             :     module subroutine show_D3_PSSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14195             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14196             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSSK4
   14197             : #endif
   14198             :         use pm_kind, only: SKC => SK4
   14199             :         use pm_container, only: css_pdt
   14200             :         class(display_type)         , intent(inout)                 :: self
   14201             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14202             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14203             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14204             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14205             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14206             :     end subroutine
   14207             : #endif
   14208             : 
   14209             : #if SK3_ENABLED
   14210             :     module subroutine show_D3_PSSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14211             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14212             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSSK3
   14213             : #endif
   14214             :         use pm_kind, only: SKC => SK3
   14215             :         use pm_container, only: css_pdt
   14216             :         class(display_type)         , intent(inout)                 :: self
   14217             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14218             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14219             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14220             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14221             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14222             :     end subroutine
   14223             : #endif
   14224             : 
   14225             : #if SK2_ENABLED
   14226             :     module subroutine show_D3_PSSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14227             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14228             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSSK2
   14229             : #endif
   14230             :         use pm_kind, only: SKC => SK2
   14231             :         use pm_container, only: css_pdt
   14232             :         class(display_type)         , intent(inout)                 :: self
   14233             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14234             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14235             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14236             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14237             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14238             :     end subroutine
   14239             : #endif
   14240             : 
   14241             : #if SK1_ENABLED
   14242             :     module subroutine show_D3_PSSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14243             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14244             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSSK1
   14245             : #endif
   14246             :         use pm_kind, only: SKC => SK1
   14247             :         use pm_container, only: css_pdt
   14248             :         class(display_type)         , intent(inout)                 :: self
   14249             :         type(css_pdt(SKC))             , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14250             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14251             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14252             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14253             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14254             :     end subroutine
   14255             : #endif
   14256             : 
   14257             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14258             : 
   14259             : #if IK5_ENABLED
   14260             :     module subroutine show_D3_PSIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14261             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14262             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSIK5
   14263             : #endif
   14264             :         use pm_kind, only: SKC => SK, IKC => IK5
   14265             :         use pm_container, only: csi_pdt
   14266             :         class(display_type)         , intent(inout)                 :: self
   14267             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14268             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14269             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14270             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14271             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14272             :     end subroutine
   14273             : #endif
   14274             : 
   14275             : #if IK4_ENABLED
   14276             :     module subroutine show_D3_PSIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14277             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14278             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSIK4
   14279             : #endif
   14280             :         use pm_kind, only: SKC => SK, IKC => IK4
   14281             :         use pm_container, only: csi_pdt
   14282             :         class(display_type)         , intent(inout)                 :: self
   14283             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14284             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14285             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14286             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14287             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14288             :     end subroutine
   14289             : #endif
   14290             : 
   14291             : #if IK3_ENABLED
   14292             :     module subroutine show_D3_PSIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14293             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14294             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSIK3
   14295             : #endif
   14296             :         use pm_kind, only: SKC => SK, IKC => IK3
   14297             :         use pm_container, only: csi_pdt
   14298             :         class(display_type)         , intent(inout)                 :: self
   14299             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14300             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14301             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14302             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14303             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14304             :     end subroutine
   14305             : #endif
   14306             : 
   14307             : #if IK2_ENABLED
   14308             :     module subroutine show_D3_PSIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14309             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14310             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSIK2
   14311             : #endif
   14312             :         use pm_kind, only: SKC => SK, IKC => IK2
   14313             :         use pm_container, only: csi_pdt
   14314             :         class(display_type)         , intent(inout)                 :: self
   14315             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14316             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14317             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14318             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14319             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14320             :     end subroutine
   14321             : #endif
   14322             : 
   14323             : #if IK1_ENABLED
   14324             :     module subroutine show_D3_PSIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14325             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14326             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSIK1
   14327             : #endif
   14328             :         use pm_kind, only: SKC => SK, IKC => IK1
   14329             :         use pm_container, only: csi_pdt
   14330             :         class(display_type)         , intent(inout)                 :: self
   14331             :         type(csi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14332             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14333             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14334             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14335             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14336             :     end subroutine
   14337             : #endif
   14338             : 
   14339             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14340             : 
   14341             : #if LK5_ENABLED
   14342             :     module subroutine show_D3_PSLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14344             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSLK5
   14345             : #endif
   14346             :         use pm_kind, only: SKC => SK, LKC => LK5
   14347             :         use pm_container, only: csl_pdt
   14348             :         class(display_type)         , intent(inout)                 :: self
   14349             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14350             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14351             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14352             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14353             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14354             :     end subroutine
   14355             : #endif
   14356             : 
   14357             : #if LK4_ENABLED
   14358             :     module subroutine show_D3_PSLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14359             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14360             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSLK4
   14361             : #endif
   14362             :         use pm_kind, only: SKC => SK, LKC => LK4
   14363             :         use pm_container, only: csl_pdt
   14364             :         class(display_type)         , intent(inout)                 :: self
   14365             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14366             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14367             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14368             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14369             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14370             :     end subroutine
   14371             : #endif
   14372             : 
   14373             : #if LK3_ENABLED
   14374             :     module subroutine show_D3_PSLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14375             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14376             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSLK3
   14377             : #endif
   14378             :         use pm_kind, only: SKC => SK, LKC => LK3
   14379             :         use pm_container, only: csl_pdt
   14380             :         class(display_type)         , intent(inout)                 :: self
   14381             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14382             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14383             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14384             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14385             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14386             :     end subroutine
   14387             : #endif
   14388             : 
   14389             : #if LK2_ENABLED
   14390             :     module subroutine show_D3_PSLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14391             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14392             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSLK2
   14393             : #endif
   14394             :         use pm_kind, only: SKC => SK, LKC => LK2
   14395             :         use pm_container, only: csl_pdt
   14396             :         class(display_type)         , intent(inout)                 :: self
   14397             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14398             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14399             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14400             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14401             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14402             :     end subroutine
   14403             : #endif
   14404             : 
   14405             : #if LK1_ENABLED
   14406             :     module subroutine show_D3_PSLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14407             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14408             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSLK1
   14409             : #endif
   14410             :         use pm_kind, only: SKC => SK, LKC => LK1
   14411             :         use pm_container, only: csl_pdt
   14412             :         class(display_type)         , intent(inout)                 :: self
   14413             :         type(csl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14414             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14415             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14416             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14417             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14418             :     end subroutine
   14419             : #endif
   14420             : 
   14421             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14422             : 
   14423             : #if CK5_ENABLED
   14424             :     module subroutine show_D3_PSCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14425             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14426             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSCK5
   14427             : #endif
   14428             :         use pm_kind, only: SKC => SK, CKC => CK5
   14429             :         use pm_container, only: csc_pdt
   14430             :         class(display_type)         , intent(inout)                 :: self
   14431             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14432             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14433             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14434             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14435             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14436             :     end subroutine
   14437             : #endif
   14438             : 
   14439             : #if CK4_ENABLED
   14440             :     module subroutine show_D3_PSCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14441             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14442             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSCK4
   14443             : #endif
   14444             :         use pm_kind, only: SKC => SK, CKC => CK4
   14445             :         use pm_container, only: csc_pdt
   14446             :         class(display_type)         , intent(inout)                 :: self
   14447             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14448             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14449             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14450             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14451             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14452             :     end subroutine
   14453             : #endif
   14454             : 
   14455             : #if CK3_ENABLED
   14456             :     module subroutine show_D3_PSCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14457             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14458             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSCK3
   14459             : #endif
   14460             :         use pm_kind, only: SKC => SK, CKC => CK3
   14461             :         use pm_container, only: csc_pdt
   14462             :         class(display_type)         , intent(inout)                 :: self
   14463             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14464             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14465             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14466             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14467             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14468             :     end subroutine
   14469             : #endif
   14470             : 
   14471             : #if CK2_ENABLED
   14472             :     module subroutine show_D3_PSCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14473             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14474             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSCK2
   14475             : #endif
   14476             :         use pm_kind, only: SKC => SK, CKC => CK2
   14477             :         use pm_container, only: csc_pdt
   14478             :         class(display_type)         , intent(inout)                 :: self
   14479             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14480             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14481             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14482             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14483             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14484             :     end subroutine
   14485             : #endif
   14486             : 
   14487             : #if CK1_ENABLED
   14488             :     module subroutine show_D3_PSCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14489             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14490             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSCK1
   14491             : #endif
   14492             :         use pm_kind, only: SKC => SK, CKC => CK1
   14493             :         use pm_container, only: csc_pdt
   14494             :         class(display_type)         , intent(inout)                 :: self
   14495             :         type(csc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14496             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14497             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14498             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14499             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14500             :     end subroutine
   14501             : #endif
   14502             : 
   14503             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14504             : 
   14505             : #if RK5_ENABLED
   14506             :     module subroutine show_D3_PSRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14507             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14508             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSRK5
   14509             : #endif
   14510             :         use pm_kind, only: SKC => SK, RKC => RK5
   14511             :         use pm_container, only: csr_pdt
   14512             :         class(display_type)         , intent(inout)                 :: self
   14513             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14514             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14515             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14516             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14517             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14518             :     end subroutine
   14519             : #endif
   14520             : 
   14521             : #if RK4_ENABLED
   14522             :     module subroutine show_D3_PSRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14523             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14524             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSRK4
   14525             : #endif
   14526             :         use pm_kind, only: SKC => SK, RKC => RK4
   14527             :         use pm_container, only: csr_pdt
   14528             :         class(display_type)         , intent(inout)                 :: self
   14529             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14530             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14531             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14532             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14533             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14534             :     end subroutine
   14535             : #endif
   14536             : 
   14537             : #if RK3_ENABLED
   14538             :     module subroutine show_D3_PSRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14539             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14540             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSRK3
   14541             : #endif
   14542             :         use pm_kind, only: SKC => SK, RKC => RK3
   14543             :         use pm_container, only: csr_pdt
   14544             :         class(display_type)         , intent(inout)                 :: self
   14545             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14546             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14547             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14548             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14549             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14550             :     end subroutine
   14551             : #endif
   14552             : 
   14553             : #if RK2_ENABLED
   14554             :     module subroutine show_D3_PSRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14555             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14556             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSRK2
   14557             : #endif
   14558             :         use pm_kind, only: SKC => SK, RKC => RK2
   14559             :         use pm_container, only: csr_pdt
   14560             :         class(display_type)         , intent(inout)                 :: self
   14561             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14562             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14563             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14564             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14565             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14566             :     end subroutine
   14567             : #endif
   14568             : 
   14569             : #if RK1_ENABLED
   14570             :     module subroutine show_D3_PSRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14571             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14572             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_PSRK1
   14573             : #endif
   14574             :         use pm_kind, only: SKC => SK, RKC => RK1
   14575             :         use pm_container, only: csr_pdt
   14576             :         class(display_type)         , intent(inout)                 :: self
   14577             :         type(csr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   14578             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14579             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14580             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14581             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14582             :     end subroutine
   14583             : #endif
   14584             : 
   14585             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14586             : 
   14587             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14588             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14590             : 
   14591             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14592             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14593             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14594             : 
   14595             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14596             : 
   14597             : #if SK5_ENABLED
   14598             :     module subroutine show_D0_PVSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14599             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14600             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVSK5
   14601             : #endif
   14602             :         use pm_kind, only: SKC => SK5
   14603             :         use pm_container, only: cvs_pdt
   14604             :         class(display_type)         , intent(inout)                 :: self
   14605             :         type(cvs_pdt(SKC))          , intent(in)                    :: object
   14606             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14607             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14608             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14609             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14610             :     end subroutine
   14611             : #endif
   14612             : 
   14613             : #if SK4_ENABLED
   14614             :     module subroutine show_D0_PVSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14615             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14616             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVSK4
   14617             : #endif
   14618             :         use pm_kind, only: SKC => SK4
   14619             :         use pm_container, only: cvs_pdt
   14620             :         class(display_type)         , intent(inout)                 :: self
   14621             :         type(cvs_pdt(SKC))          , intent(in)                    :: object
   14622             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14623             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14624             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14625             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14626             :     end subroutine
   14627             : #endif
   14628             : 
   14629             : #if SK3_ENABLED
   14630             :     module subroutine show_D0_PVSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14631             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14632             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVSK3
   14633             : #endif
   14634             :         use pm_kind, only: SKC => SK3
   14635             :         use pm_container, only: cvs_pdt
   14636             :         class(display_type)         , intent(inout)                 :: self
   14637             :         type(cvs_pdt(SKC))          , intent(in)                    :: object
   14638             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14639             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14640             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14641             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14642             :     end subroutine
   14643             : #endif
   14644             : 
   14645             : #if SK2_ENABLED
   14646             :     module subroutine show_D0_PVSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14647             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14648             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVSK2
   14649             : #endif
   14650             :         use pm_kind, only: SKC => SK2
   14651             :         use pm_container, only: cvs_pdt
   14652             :         class(display_type)         , intent(inout)                 :: self
   14653             :         type(cvs_pdt(SKC))          , intent(in)                    :: object
   14654             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14655             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14656             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14657             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14658             :     end subroutine
   14659             : #endif
   14660             : 
   14661             : #if SK1_ENABLED
   14662             :     module subroutine show_D0_PVSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14663             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14664             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVSK1
   14665             : #endif
   14666             :         use pm_kind, only: SKC => SK1
   14667             :         use pm_container, only: cvs_pdt
   14668             :         class(display_type)         , intent(inout)                 :: self
   14669             :         type(cvs_pdt(SKC))          , intent(in)                    :: object
   14670             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14671             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14672             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14673             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14674             :     end subroutine
   14675             : #endif
   14676             : 
   14677             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14678             : 
   14679             : #if IK5_ENABLED
   14680             :     module subroutine show_D0_PVIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14681             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14682             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVIK5
   14683             : #endif
   14684             :         use pm_kind, only: SKC => SK, IKC => IK5
   14685             :         use pm_container, only: cvi_pdt
   14686             :         class(display_type)         , intent(inout)                 :: self
   14687             :         type(cvi_pdt(IKC))          , intent(in)                    :: object
   14688             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14689             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14690             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14691             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14692             :     end subroutine
   14693             : #endif
   14694             : 
   14695             : #if IK4_ENABLED
   14696             :     module subroutine show_D0_PVIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14697             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14698             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVIK4
   14699             : #endif
   14700             :         use pm_kind, only: SKC => SK, IKC => IK4
   14701             :         use pm_container, only: cvi_pdt
   14702             :         class(display_type)         , intent(inout)                 :: self
   14703             :         type(cvi_pdt(IKC))          , intent(in)                    :: object
   14704             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14705             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14706             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14707             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14708             :     end subroutine
   14709             : #endif
   14710             : 
   14711             : #if IK3_ENABLED
   14712             :     module subroutine show_D0_PVIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14713             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14714             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVIK3
   14715             : #endif
   14716             :         use pm_kind, only: SKC => SK, IKC => IK3
   14717             :         use pm_container, only: cvi_pdt
   14718             :         class(display_type)         , intent(inout)                 :: self
   14719             :         type(cvi_pdt(IKC))          , intent(in)                    :: object
   14720             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14721             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14722             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14723             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14724             :     end subroutine
   14725             : #endif
   14726             : 
   14727             : #if IK2_ENABLED
   14728             :     module subroutine show_D0_PVIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14729             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14730             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVIK2
   14731             : #endif
   14732             :         use pm_kind, only: SKC => SK, IKC => IK2
   14733             :         use pm_container, only: cvi_pdt
   14734             :         class(display_type)         , intent(inout)                 :: self
   14735             :         type(cvi_pdt(IKC))          , intent(in)                    :: object
   14736             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14737             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14738             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14739             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14740             :     end subroutine
   14741             : #endif
   14742             : 
   14743             : #if IK1_ENABLED
   14744             :     module subroutine show_D0_PVIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14745             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14746             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVIK1
   14747             : #endif
   14748             :         use pm_kind, only: SKC => SK, IKC => IK1
   14749             :         use pm_container, only: cvi_pdt
   14750             :         class(display_type)         , intent(inout)                 :: self
   14751             :         type(cvi_pdt(IKC))          , intent(in)                    :: object
   14752             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14753             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14754             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14755             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14756             :     end subroutine
   14757             : #endif
   14758             : 
   14759             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14760             : 
   14761             : #if LK5_ENABLED
   14762             :     module subroutine show_D0_PVLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14763             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14764             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVLK5
   14765             : #endif
   14766             :         use pm_kind, only: SKC => SK, LKC => LK5
   14767             :         use pm_container, only: cvl_pdt
   14768             :         class(display_type)         , intent(inout)                 :: self
   14769             :         type(cvl_pdt(LKC))          , intent(in)                    :: object
   14770             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14771             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14772             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14773             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14774             :     end subroutine
   14775             : #endif
   14776             : 
   14777             : #if LK4_ENABLED
   14778             :     module subroutine show_D0_PVLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14779             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14780             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVLK4
   14781             : #endif
   14782             :         use pm_kind, only: SKC => SK, LKC => LK4
   14783             :         use pm_container, only: cvl_pdt
   14784             :         class(display_type)         , intent(inout)                 :: self
   14785             :         type(cvl_pdt(LKC))          , intent(in)                    :: object
   14786             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14787             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14788             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14789             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14790             :     end subroutine
   14791             : #endif
   14792             : 
   14793             : #if LK3_ENABLED
   14794             :     module subroutine show_D0_PVLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14795             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14796             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVLK3
   14797             : #endif
   14798             :         use pm_kind, only: SKC => SK, LKC => LK3
   14799             :         use pm_container, only: cvl_pdt
   14800             :         class(display_type)         , intent(inout)                 :: self
   14801             :         type(cvl_pdt(LKC))          , intent(in)                    :: object
   14802             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14803             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14804             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14805             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14806             :     end subroutine
   14807             : #endif
   14808             : 
   14809             : #if LK2_ENABLED
   14810             :     module subroutine show_D0_PVLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14811             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14812             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVLK2
   14813             : #endif
   14814             :         use pm_kind, only: SKC => SK, LKC => LK2
   14815             :         use pm_container, only: cvl_pdt
   14816             :         class(display_type)         , intent(inout)                 :: self
   14817             :         type(cvl_pdt(LKC))          , intent(in)                    :: object
   14818             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14819             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14820             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14821             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14822             :     end subroutine
   14823             : #endif
   14824             : 
   14825             : #if LK1_ENABLED
   14826             :     module subroutine show_D0_PVLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14827             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14828             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVLK1
   14829             : #endif
   14830             :         use pm_kind, only: SKC => SK, LKC => LK1
   14831             :         use pm_container, only: cvl_pdt
   14832             :         class(display_type)         , intent(inout)                 :: self
   14833             :         type(cvl_pdt(LKC))          , intent(in)                    :: object
   14834             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14835             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14836             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14837             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14838             :     end subroutine
   14839             : #endif
   14840             : 
   14841             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14842             : 
   14843             : #if CK5_ENABLED
   14844             :     module subroutine show_D0_PVCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14845             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14846             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVCK5
   14847             : #endif
   14848             :         use pm_kind, only: SKC => SK, CKC => CK5
   14849             :         use pm_container, only: cvc_pdt
   14850             :         class(display_type)         , intent(inout)                 :: self
   14851             :         type(cvc_pdt(CKC))          , intent(in)                    :: object
   14852             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14853             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14854             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14855             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14856             :     end subroutine
   14857             : #endif
   14858             : 
   14859             : #if CK4_ENABLED
   14860             :     module subroutine show_D0_PVCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14861             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14862             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVCK4
   14863             : #endif
   14864             :         use pm_kind, only: SKC => SK, CKC => CK4
   14865             :         use pm_container, only: cvc_pdt
   14866             :         class(display_type)         , intent(inout)                 :: self
   14867             :         type(cvc_pdt(CKC))          , intent(in)                    :: object
   14868             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14869             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14870             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14871             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14872             :     end subroutine
   14873             : #endif
   14874             : 
   14875             : #if CK3_ENABLED
   14876             :     module subroutine show_D0_PVCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14877             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14878             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVCK3
   14879             : #endif
   14880             :         use pm_kind, only: SKC => SK, CKC => CK3
   14881             :         use pm_container, only: cvc_pdt
   14882             :         class(display_type)         , intent(inout)                 :: self
   14883             :         type(cvc_pdt(CKC))          , intent(in)                    :: object
   14884             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14885             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14886             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14887             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14888             :     end subroutine
   14889             : #endif
   14890             : 
   14891             : #if CK2_ENABLED
   14892             :     module subroutine show_D0_PVCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14893             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14894             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVCK2
   14895             : #endif
   14896             :         use pm_kind, only: SKC => SK, CKC => CK2
   14897             :         use pm_container, only: cvc_pdt
   14898             :         class(display_type)         , intent(inout)                 :: self
   14899             :         type(cvc_pdt(CKC))          , intent(in)                    :: object
   14900             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14901             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14902             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14903             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14904             :     end subroutine
   14905             : #endif
   14906             : 
   14907             : #if CK1_ENABLED
   14908             :     module subroutine show_D0_PVCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14909             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14910             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVCK1
   14911             : #endif
   14912             :         use pm_kind, only: SKC => SK, CKC => CK1
   14913             :         use pm_container, only: cvc_pdt
   14914             :         class(display_type)         , intent(inout)                 :: self
   14915             :         type(cvc_pdt(CKC))          , intent(in)                    :: object
   14916             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14917             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14918             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14919             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14920             :     end subroutine
   14921             : #endif
   14922             : 
   14923             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14924             : 
   14925             : #if RK5_ENABLED
   14926             :     module subroutine show_D0_PVRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14927             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14928             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVRK5
   14929             : #endif
   14930             :         use pm_kind, only: SKC => SK, RKC => RK5
   14931             :         use pm_container, only: cvr_pdt
   14932             :         class(display_type)         , intent(inout)                 :: self
   14933             :         type(cvr_pdt(RKC))          , intent(in)                    :: object
   14934             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14935             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14936             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14937             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14938             :     end subroutine
   14939             : #endif
   14940             : 
   14941             : #if RK4_ENABLED
   14942             :     module subroutine show_D0_PVRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14943             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14944             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVRK4
   14945             : #endif
   14946             :         use pm_kind, only: SKC => SK, RKC => RK4
   14947             :         use pm_container, only: cvr_pdt
   14948             :         class(display_type)         , intent(inout)                 :: self
   14949             :         type(cvr_pdt(RKC))          , intent(in)                    :: object
   14950             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14951             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14952             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14953             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14954             :     end subroutine
   14955             : #endif
   14956             : 
   14957             : #if RK3_ENABLED
   14958             :     module subroutine show_D0_PVRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14959             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14960             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVRK3
   14961             : #endif
   14962             :         use pm_kind, only: SKC => SK, RKC => RK3
   14963             :         use pm_container, only: cvr_pdt
   14964             :         class(display_type)         , intent(inout)                 :: self
   14965             :         type(cvr_pdt(RKC))          , intent(in)                    :: object
   14966             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14967             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14968             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14969             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14970             :     end subroutine
   14971             : #endif
   14972             : 
   14973             : #if RK2_ENABLED
   14974             :     module subroutine show_D0_PVRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14975             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14976             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVRK2
   14977             : #endif
   14978             :         use pm_kind, only: SKC => SK, RKC => RK2
   14979             :         use pm_container, only: cvr_pdt
   14980             :         class(display_type)         , intent(inout)                 :: self
   14981             :         type(cvr_pdt(RKC))          , intent(in)                    :: object
   14982             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14983             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   14984             :         logical(LK)                 , intent(in)    , optional      :: sticky
   14985             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   14986             :     end subroutine
   14987             : #endif
   14988             : 
   14989             : #if RK1_ENABLED
   14990             :     module subroutine show_D0_PVRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   14991             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14992             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PVRK1
   14993             : #endif
   14994             :         use pm_kind, only: SKC => SK, RKC => RK1
   14995             :         use pm_container, only: cvr_pdt
   14996             :         class(display_type)         , intent(inout)                 :: self
   14997             :         type(cvr_pdt(RKC))          , intent(in)                    :: object
   14998             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   14999             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15000             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15001             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15002             :     end subroutine
   15003             : #endif
   15004             : 
   15005             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15006             : 
   15007             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15008             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15009             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15010             : 
   15011             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15012             : 
   15013             : #if SK5_ENABLED
   15014             :     module subroutine show_D1_PVSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15016             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVSK5
   15017             : #endif
   15018             :         use pm_kind, only: SKC => SK5
   15019             :         use pm_container, only: cvs_pdt
   15020             :         class(display_type)         , intent(inout)                 :: self
   15021             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15022             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15023             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15024             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15025             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15026             :     end subroutine
   15027             : #endif
   15028             : 
   15029             : #if SK4_ENABLED
   15030             :     module subroutine show_D1_PVSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15031             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15032             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVSK4
   15033             : #endif
   15034             :         use pm_kind, only: SKC => SK4
   15035             :         use pm_container, only: cvs_pdt
   15036             :         class(display_type)         , intent(inout)                 :: self
   15037             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15038             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15039             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15040             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15041             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15042             :     end subroutine
   15043             : #endif
   15044             : 
   15045             : #if SK3_ENABLED
   15046             :     module subroutine show_D1_PVSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15048             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVSK3
   15049             : #endif
   15050             :         use pm_kind, only: SKC => SK3
   15051             :         use pm_container, only: cvs_pdt
   15052             :         class(display_type)         , intent(inout)                 :: self
   15053             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15054             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15055             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15056             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15057             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15058             :     end subroutine
   15059             : #endif
   15060             : 
   15061             : #if SK2_ENABLED
   15062             :     module subroutine show_D1_PVSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15063             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15064             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVSK2
   15065             : #endif
   15066             :         use pm_kind, only: SKC => SK2
   15067             :         use pm_container, only: cvs_pdt
   15068             :         class(display_type)         , intent(inout)                 :: self
   15069             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15070             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15071             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15072             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15073             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15074             :     end subroutine
   15075             : #endif
   15076             : 
   15077             : #if SK1_ENABLED
   15078             :     module subroutine show_D1_PVSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15079             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15080             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVSK1
   15081             : #endif
   15082             :         use pm_kind, only: SKC => SK1
   15083             :         use pm_container, only: cvs_pdt
   15084             :         class(display_type)         , intent(inout)                 :: self
   15085             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15086             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15087             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15088             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15089             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15090             :     end subroutine
   15091             : #endif
   15092             : 
   15093             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15094             : 
   15095             : #if IK5_ENABLED
   15096             :     module subroutine show_D1_PVIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15097             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15098             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVIK5
   15099             : #endif
   15100             :         use pm_kind, only: SKC => SK, IKC => IK5
   15101             :         use pm_container, only: cvi_pdt
   15102             :         class(display_type)         , intent(inout)                 :: self
   15103             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15104             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15105             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15106             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15107             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15108             :     end subroutine
   15109             : #endif
   15110             : 
   15111             : #if IK4_ENABLED
   15112             :     module subroutine show_D1_PVIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15113             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15114             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVIK4
   15115             : #endif
   15116             :         use pm_kind, only: SKC => SK, IKC => IK4
   15117             :         use pm_container, only: cvi_pdt
   15118             :         class(display_type)         , intent(inout)                 :: self
   15119             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15120             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15121             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15122             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15123             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15124             :     end subroutine
   15125             : #endif
   15126             : 
   15127             : #if IK3_ENABLED
   15128             :     module subroutine show_D1_PVIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15129             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15130             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVIK3
   15131             : #endif
   15132             :         use pm_kind, only: SKC => SK, IKC => IK3
   15133             :         use pm_container, only: cvi_pdt
   15134             :         class(display_type)         , intent(inout)                 :: self
   15135             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15136             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15137             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15138             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15139             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15140             :     end subroutine
   15141             : #endif
   15142             : 
   15143             : #if IK2_ENABLED
   15144             :     module subroutine show_D1_PVIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15145             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15146             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVIK2
   15147             : #endif
   15148             :         use pm_kind, only: SKC => SK, IKC => IK2
   15149             :         use pm_container, only: cvi_pdt
   15150             :         class(display_type)         , intent(inout)                 :: self
   15151             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15152             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15153             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15154             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15155             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15156             :     end subroutine
   15157             : #endif
   15158             : 
   15159             : #if IK1_ENABLED
   15160             :     module subroutine show_D1_PVIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15161             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15162             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVIK1
   15163             : #endif
   15164             :         use pm_kind, only: SKC => SK, IKC => IK1
   15165             :         use pm_container, only: cvi_pdt
   15166             :         class(display_type)         , intent(inout)                 :: self
   15167             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15168             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15169             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15170             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15171             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15172             :     end subroutine
   15173             : #endif
   15174             : 
   15175             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15176             : 
   15177             : #if LK5_ENABLED
   15178             :     module subroutine show_D1_PVLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15179             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15180             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVLK5
   15181             : #endif
   15182             :         use pm_kind, only: SKC => SK, LKC => LK5
   15183             :         use pm_container, only: cvl_pdt
   15184             :         class(display_type)         , intent(inout)                 :: self
   15185             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15186             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15187             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15188             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15189             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15190             :     end subroutine
   15191             : #endif
   15192             : 
   15193             : #if LK4_ENABLED
   15194             :     module subroutine show_D1_PVLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15195             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15196             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVLK4
   15197             : #endif
   15198             :         use pm_kind, only: SKC => SK, LKC => LK4
   15199             :         use pm_container, only: cvl_pdt
   15200             :         class(display_type)         , intent(inout)                 :: self
   15201             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15202             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15203             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15204             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15205             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15206             :     end subroutine
   15207             : #endif
   15208             : 
   15209             : #if LK3_ENABLED
   15210             :     module subroutine show_D1_PVLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15211             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15212             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVLK3
   15213             : #endif
   15214             :         use pm_kind, only: SKC => SK, LKC => LK3
   15215             :         use pm_container, only: cvl_pdt
   15216             :         class(display_type)         , intent(inout)                 :: self
   15217             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15218             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15219             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15220             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15221             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15222             :     end subroutine
   15223             : #endif
   15224             : 
   15225             : #if LK2_ENABLED
   15226             :     module subroutine show_D1_PVLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15227             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15228             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVLK2
   15229             : #endif
   15230             :         use pm_kind, only: SKC => SK, LKC => LK2
   15231             :         use pm_container, only: cvl_pdt
   15232             :         class(display_type)         , intent(inout)                 :: self
   15233             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15234             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15235             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15236             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15237             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15238             :     end subroutine
   15239             : #endif
   15240             : 
   15241             : #if LK1_ENABLED
   15242             :     module subroutine show_D1_PVLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15243             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15244             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVLK1
   15245             : #endif
   15246             :         use pm_kind, only: SKC => SK, LKC => LK1
   15247             :         use pm_container, only: cvl_pdt
   15248             :         class(display_type)         , intent(inout)                 :: self
   15249             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15250             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15251             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15252             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15253             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15254             :     end subroutine
   15255             : #endif
   15256             : 
   15257             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15258             : 
   15259             : #if CK5_ENABLED
   15260             :     module subroutine show_D1_PVCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15261             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15262             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVCK5
   15263             : #endif
   15264             :         use pm_kind, only: SKC => SK, CKC => CK5
   15265             :         use pm_container, only: cvc_pdt
   15266             :         class(display_type)         , intent(inout)                 :: self
   15267             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15268             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15269             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15270             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15271             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15272             :     end subroutine
   15273             : #endif
   15274             : 
   15275             : #if CK4_ENABLED
   15276             :     module subroutine show_D1_PVCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15277             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15278             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVCK4
   15279             : #endif
   15280             :         use pm_kind, only: SKC => SK, CKC => CK4
   15281             :         use pm_container, only: cvc_pdt
   15282             :         class(display_type)         , intent(inout)                 :: self
   15283             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15284             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15285             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15286             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15287             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15288             :     end subroutine
   15289             : #endif
   15290             : 
   15291             : #if CK3_ENABLED
   15292             :     module subroutine show_D1_PVCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15293             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15294             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVCK3
   15295             : #endif
   15296             :         use pm_kind, only: SKC => SK, CKC => CK3
   15297             :         use pm_container, only: cvc_pdt
   15298             :         class(display_type)         , intent(inout)                 :: self
   15299             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15300             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15301             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15302             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15303             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15304             :     end subroutine
   15305             : #endif
   15306             : 
   15307             : #if CK2_ENABLED
   15308             :     module subroutine show_D1_PVCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15309             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15310             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVCK2
   15311             : #endif
   15312             :         use pm_kind, only: SKC => SK, CKC => CK2
   15313             :         use pm_container, only: cvc_pdt
   15314             :         class(display_type)         , intent(inout)                 :: self
   15315             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15316             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15317             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15318             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15319             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15320             :     end subroutine
   15321             : #endif
   15322             : 
   15323             : #if CK1_ENABLED
   15324             :     module subroutine show_D1_PVCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15325             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15326             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVCK1
   15327             : #endif
   15328             :         use pm_kind, only: SKC => SK, CKC => CK1
   15329             :         use pm_container, only: cvc_pdt
   15330             :         class(display_type)         , intent(inout)                 :: self
   15331             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15332             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15333             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15334             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15335             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15336             :     end subroutine
   15337             : #endif
   15338             : 
   15339             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15340             : 
   15341             : #if RK5_ENABLED
   15342             :     module subroutine show_D1_PVRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15344             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVRK5
   15345             : #endif
   15346             :         use pm_kind, only: SKC => SK, RKC => RK5
   15347             :         use pm_container, only: cvr_pdt
   15348             :         class(display_type)         , intent(inout)                 :: self
   15349             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15350             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15351             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15352             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15353             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15354             :     end subroutine
   15355             : #endif
   15356             : 
   15357             : #if RK4_ENABLED
   15358             :     module subroutine show_D1_PVRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15359             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15360             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVRK4
   15361             : #endif
   15362             :         use pm_kind, only: SKC => SK, RKC => RK4
   15363             :         use pm_container, only: cvr_pdt
   15364             :         class(display_type)         , intent(inout)                 :: self
   15365             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15366             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15367             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15368             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15369             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15370             :     end subroutine
   15371             : #endif
   15372             : 
   15373             : #if RK3_ENABLED
   15374             :     module subroutine show_D1_PVRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15375             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15376             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVRK3
   15377             : #endif
   15378             :         use pm_kind, only: SKC => SK, RKC => RK3
   15379             :         use pm_container, only: cvr_pdt
   15380             :         class(display_type)         , intent(inout)                 :: self
   15381             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15382             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15383             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15384             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15385             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15386             :     end subroutine
   15387             : #endif
   15388             : 
   15389             : #if RK2_ENABLED
   15390             :     module subroutine show_D1_PVRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15391             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15392             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVRK2
   15393             : #endif
   15394             :         use pm_kind, only: SKC => SK, RKC => RK2
   15395             :         use pm_container, only: cvr_pdt
   15396             :         class(display_type)         , intent(inout)                 :: self
   15397             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15398             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15399             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15400             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15401             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15402             :     end subroutine
   15403             : #endif
   15404             : 
   15405             : #if RK1_ENABLED
   15406             :     module subroutine show_D1_PVRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15407             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15408             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PVRK1
   15409             : #endif
   15410             :         use pm_kind, only: SKC => SK, RKC => RK1
   15411             :         use pm_container, only: cvr_pdt
   15412             :         class(display_type)         , intent(inout)                 :: self
   15413             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   15414             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15415             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15416             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15417             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15418             :     end subroutine
   15419             : #endif
   15420             : 
   15421             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15422             : 
   15423             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15424             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15425             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15426             : 
   15427             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15428             : 
   15429             : #if SK5_ENABLED
   15430             :     module subroutine show_D2_PVSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15431             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15432             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVSK5
   15433             : #endif
   15434             :         use pm_kind, only: SKC => SK5
   15435             :         use pm_container, only: cvs_pdt
   15436             :         class(display_type)         , intent(inout)                 :: self
   15437             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15438             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15439             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15440             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15441             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15442             :     end subroutine
   15443             : #endif
   15444             : 
   15445             : #if SK4_ENABLED
   15446             :     module subroutine show_D2_PVSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15447             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15448             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVSK4
   15449             : #endif
   15450             :         use pm_kind, only: SKC => SK4
   15451             :         use pm_container, only: cvs_pdt
   15452             :         class(display_type)         , intent(inout)                 :: self
   15453             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15454             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15455             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15456             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15457             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15458             :     end subroutine
   15459             : #endif
   15460             : 
   15461             : #if SK3_ENABLED
   15462             :     module subroutine show_D2_PVSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15463             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15464             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVSK3
   15465             : #endif
   15466             :         use pm_kind, only: SKC => SK3
   15467             :         use pm_container, only: cvs_pdt
   15468             :         class(display_type)         , intent(inout)                 :: self
   15469             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15470             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15471             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15472             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15473             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15474             :     end subroutine
   15475             : #endif
   15476             : 
   15477             : #if SK2_ENABLED
   15478             :     module subroutine show_D2_PVSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15480             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVSK2
   15481             : #endif
   15482             :         use pm_kind, only: SKC => SK2
   15483             :         use pm_container, only: cvs_pdt
   15484             :         class(display_type)         , intent(inout)                 :: self
   15485             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15486             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15487             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15488             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15489             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15490             :     end subroutine
   15491             : #endif
   15492             : 
   15493             : #if SK1_ENABLED
   15494             :     module subroutine show_D2_PVSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15495             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15496             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVSK1
   15497             : #endif
   15498             :         use pm_kind, only: SKC => SK1
   15499             :         use pm_container, only: cvs_pdt
   15500             :         class(display_type)         , intent(inout)                 :: self
   15501             :         type(cvs_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15502             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15503             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15504             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15505             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15506             :     end subroutine
   15507             : #endif
   15508             : 
   15509             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15510             : 
   15511             : #if IK5_ENABLED
   15512             :     module subroutine show_D2_PVIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15513             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15514             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVIK5
   15515             : #endif
   15516             :         use pm_kind, only: SKC => SK, IKC => IK5
   15517             :         use pm_container, only: cvi_pdt
   15518             :         class(display_type)         , intent(inout)                 :: self
   15519             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15520             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15521             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15522             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15523             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15524             :     end subroutine
   15525             : #endif
   15526             : 
   15527             : #if IK4_ENABLED
   15528             :     module subroutine show_D2_PVIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15529             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15530             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVIK4
   15531             : #endif
   15532             :         use pm_kind, only: SKC => SK, IKC => IK4
   15533             :         use pm_container, only: cvi_pdt
   15534             :         class(display_type)         , intent(inout)                 :: self
   15535             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15536             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15537             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15538             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15539             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15540             :     end subroutine
   15541             : #endif
   15542             : 
   15543             : #if IK3_ENABLED
   15544             :     module subroutine show_D2_PVIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15545             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15546             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVIK3
   15547             : #endif
   15548             :         use pm_kind, only: SKC => SK, IKC => IK3
   15549             :         use pm_container, only: cvi_pdt
   15550             :         class(display_type)         , intent(inout)                 :: self
   15551             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15552             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15553             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15554             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15555             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15556             :     end subroutine
   15557             : #endif
   15558             : 
   15559             : #if IK2_ENABLED
   15560             :     module subroutine show_D2_PVIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15561             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15562             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVIK2
   15563             : #endif
   15564             :         use pm_kind, only: SKC => SK, IKC => IK2
   15565             :         use pm_container, only: cvi_pdt
   15566             :         class(display_type)         , intent(inout)                 :: self
   15567             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15568             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15569             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15570             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15571             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15572             :     end subroutine
   15573             : #endif
   15574             : 
   15575             : #if IK1_ENABLED
   15576             :     module subroutine show_D2_PVIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15577             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15578             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVIK1
   15579             : #endif
   15580             :         use pm_kind, only: SKC => SK, IKC => IK1
   15581             :         use pm_container, only: cvi_pdt
   15582             :         class(display_type)         , intent(inout)                 :: self
   15583             :         type(cvi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15584             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15585             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15586             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15587             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15588             :     end subroutine
   15589             : #endif
   15590             : 
   15591             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15592             : 
   15593             : #if LK5_ENABLED
   15594             :     module subroutine show_D2_PVLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15595             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15596             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVLK5
   15597             : #endif
   15598             :         use pm_kind, only: SKC => SK, LKC => LK5
   15599             :         use pm_container, only: cvl_pdt
   15600             :         class(display_type)         , intent(inout)                 :: self
   15601             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15602             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15603             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15604             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15605             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15606             :     end subroutine
   15607             : #endif
   15608             : 
   15609             : #if LK4_ENABLED
   15610             :     module subroutine show_D2_PVLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15611             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15612             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVLK4
   15613             : #endif
   15614             :         use pm_kind, only: SKC => SK, LKC => LK4
   15615             :         use pm_container, only: cvl_pdt
   15616             :         class(display_type)         , intent(inout)                 :: self
   15617             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15618             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15619             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15620             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15621             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15622             :     end subroutine
   15623             : #endif
   15624             : 
   15625             : #if LK3_ENABLED
   15626             :     module subroutine show_D2_PVLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15627             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15628             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVLK3
   15629             : #endif
   15630             :         use pm_kind, only: SKC => SK, LKC => LK3
   15631             :         use pm_container, only: cvl_pdt
   15632             :         class(display_type)         , intent(inout)                 :: self
   15633             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15634             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15635             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15636             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15637             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15638             :     end subroutine
   15639             : #endif
   15640             : 
   15641             : #if LK2_ENABLED
   15642             :     module subroutine show_D2_PVLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15643             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15644             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVLK2
   15645             : #endif
   15646             :         use pm_kind, only: SKC => SK, LKC => LK2
   15647             :         use pm_container, only: cvl_pdt
   15648             :         class(display_type)         , intent(inout)                 :: self
   15649             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15650             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15651             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15652             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15653             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15654             :     end subroutine
   15655             : #endif
   15656             : 
   15657             : #if LK1_ENABLED
   15658             :     module subroutine show_D2_PVLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15659             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15660             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVLK1
   15661             : #endif
   15662             :         use pm_kind, only: SKC => SK, LKC => LK1
   15663             :         use pm_container, only: cvl_pdt
   15664             :         class(display_type)         , intent(inout)                 :: self
   15665             :         type(cvl_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15666             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15667             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15668             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15669             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15670             :     end subroutine
   15671             : #endif
   15672             : 
   15673             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15674             : 
   15675             : #if CK5_ENABLED
   15676             :     module subroutine show_D2_PVCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15677             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15678             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVCK5
   15679             : #endif
   15680             :         use pm_kind, only: SKC => SK, CKC => CK5
   15681             :         use pm_container, only: cvc_pdt
   15682             :         class(display_type)         , intent(inout)                 :: self
   15683             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15684             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15685             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15686             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15687             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15688             :     end subroutine
   15689             : #endif
   15690             : 
   15691             : #if CK4_ENABLED
   15692             :     module subroutine show_D2_PVCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15693             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15694             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVCK4
   15695             : #endif
   15696             :         use pm_kind, only: SKC => SK, CKC => CK4
   15697             :         use pm_container, only: cvc_pdt
   15698             :         class(display_type)         , intent(inout)                 :: self
   15699             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15700             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15701             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15702             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15703             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15704             :     end subroutine
   15705             : #endif
   15706             : 
   15707             : #if CK3_ENABLED
   15708             :     module subroutine show_D2_PVCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15709             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15710             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVCK3
   15711             : #endif
   15712             :         use pm_kind, only: SKC => SK, CKC => CK3
   15713             :         use pm_container, only: cvc_pdt
   15714             :         class(display_type)         , intent(inout)                 :: self
   15715             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15716             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15717             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15718             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15719             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15720             :     end subroutine
   15721             : #endif
   15722             : 
   15723             : #if CK2_ENABLED
   15724             :     module subroutine show_D2_PVCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15725             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15726             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVCK2
   15727             : #endif
   15728             :         use pm_kind, only: SKC => SK, CKC => CK2
   15729             :         use pm_container, only: cvc_pdt
   15730             :         class(display_type)         , intent(inout)                 :: self
   15731             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15732             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15733             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15734             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15735             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15736             :     end subroutine
   15737             : #endif
   15738             : 
   15739             : #if CK1_ENABLED
   15740             :     module subroutine show_D2_PVCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15741             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15742             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVCK1
   15743             : #endif
   15744             :         use pm_kind, only: SKC => SK, CKC => CK1
   15745             :         use pm_container, only: cvc_pdt
   15746             :         class(display_type)         , intent(inout)                 :: self
   15747             :         type(cvc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15748             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15749             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15750             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15751             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15752             :     end subroutine
   15753             : #endif
   15754             : 
   15755             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15756             : 
   15757             : #if RK5_ENABLED
   15758             :     module subroutine show_D2_PVRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15759             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15760             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVRK5
   15761             : #endif
   15762             :         use pm_kind, only: SKC => SK, RKC => RK5
   15763             :         use pm_container, only: cvr_pdt
   15764             :         class(display_type)         , intent(inout)                 :: self
   15765             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15766             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15767             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15768             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15769             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15770             :     end subroutine
   15771             : #endif
   15772             : 
   15773             : #if RK4_ENABLED
   15774             :     module subroutine show_D2_PVRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15775             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15776             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVRK4
   15777             : #endif
   15778             :         use pm_kind, only: SKC => SK, RKC => RK4
   15779             :         use pm_container, only: cvr_pdt
   15780             :         class(display_type)         , intent(inout)                 :: self
   15781             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15782             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15783             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15784             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15785             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15786             :     end subroutine
   15787             : #endif
   15788             : 
   15789             : #if RK3_ENABLED
   15790             :     module subroutine show_D2_PVRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15791             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15792             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVRK3
   15793             : #endif
   15794             :         use pm_kind, only: SKC => SK, RKC => RK3
   15795             :         use pm_container, only: cvr_pdt
   15796             :         class(display_type)         , intent(inout)                 :: self
   15797             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15798             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15799             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15800             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15801             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15802             :     end subroutine
   15803             : #endif
   15804             : 
   15805             : #if RK2_ENABLED
   15806             :     module subroutine show_D2_PVRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15807             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15808             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVRK2
   15809             : #endif
   15810             :         use pm_kind, only: SKC => SK, RKC => RK2
   15811             :         use pm_container, only: cvr_pdt
   15812             :         class(display_type)         , intent(inout)                 :: self
   15813             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15814             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15815             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15816             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15817             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15818             :     end subroutine
   15819             : #endif
   15820             : 
   15821             : #if RK1_ENABLED
   15822             :     module subroutine show_D2_PVRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15823             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15824             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_PVRK1
   15825             : #endif
   15826             :         use pm_kind, only: SKC => SK, RKC => RK1
   15827             :         use pm_container, only: cvr_pdt
   15828             :         class(display_type)         , intent(inout)                 :: self
   15829             :         type(cvr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:,:)
   15830             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15831             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15832             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15833             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15834             :     end subroutine
   15835             : #endif
   15836             : 
   15837             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15838             : 
   15839             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15840             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15841             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15842             : 
   15843             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15844             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15845             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15846             : 
   15847             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15848             : 
   15849             : #if SK5_ENABLED
   15850             :     module subroutine show_D0_PMSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15851             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15852             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMSK5
   15853             : #endif
   15854             :         use pm_kind, only: SKC => SK5
   15855             :         use pm_container, only: cms_pdt
   15856             :         class(display_type)         , intent(inout)                 :: self
   15857             :         type(cms_pdt(SKC))          , intent(in)                    :: object
   15858             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15859             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15860             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15861             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15862             :     end subroutine
   15863             : #endif
   15864             : 
   15865             : #if SK4_ENABLED
   15866             :     module subroutine show_D0_PMSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15867             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15868             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMSK4
   15869             : #endif
   15870             :         use pm_kind, only: SKC => SK4
   15871             :         use pm_container, only: cms_pdt
   15872             :         class(display_type)         , intent(inout)                 :: self
   15873             :         type(cms_pdt(SKC))          , intent(in)                    :: object
   15874             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15875             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15876             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15877             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15878             :     end subroutine
   15879             : #endif
   15880             : 
   15881             : #if SK3_ENABLED
   15882             :     module subroutine show_D0_PMSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15883             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15884             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMSK3
   15885             : #endif
   15886             :         use pm_kind, only: SKC => SK3
   15887             :         use pm_container, only: cms_pdt
   15888             :         class(display_type)         , intent(inout)                 :: self
   15889             :         type(cms_pdt(SKC))          , intent(in)                    :: object
   15890             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15891             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15892             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15893             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15894             :     end subroutine
   15895             : #endif
   15896             : 
   15897             : #if SK2_ENABLED
   15898             :     module subroutine show_D0_PMSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15899             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15900             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMSK2
   15901             : #endif
   15902             :         use pm_kind, only: SKC => SK2
   15903             :         use pm_container, only: cms_pdt
   15904             :         class(display_type)         , intent(inout)                 :: self
   15905             :         type(cms_pdt(SKC))          , intent(in)                    :: object
   15906             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15907             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15908             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15909             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15910             :     end subroutine
   15911             : #endif
   15912             : 
   15913             : #if SK1_ENABLED
   15914             :     module subroutine show_D0_PMSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15915             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15916             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMSK1
   15917             : #endif
   15918             :         use pm_kind, only: SKC => SK1
   15919             :         use pm_container, only: cms_pdt
   15920             :         class(display_type)         , intent(inout)                 :: self
   15921             :         type(cms_pdt(SKC))          , intent(in)                    :: object
   15922             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15923             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15924             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15925             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15926             :     end subroutine
   15927             : #endif
   15928             : 
   15929             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15930             : 
   15931             : #if IK5_ENABLED
   15932             :     module subroutine show_D0_PMIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15934             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMIK5
   15935             : #endif
   15936             :         use pm_kind, only: SKC => SK, IKC => IK5
   15937             :         use pm_container, only: cmi_pdt
   15938             :         class(display_type)         , intent(inout)                 :: self
   15939             :         type(cmi_pdt(IKC))          , intent(in)                    :: object
   15940             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15941             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15942             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15943             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15944             :     end subroutine
   15945             : #endif
   15946             : 
   15947             : #if IK4_ENABLED
   15948             :     module subroutine show_D0_PMIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15949             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15950             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMIK4
   15951             : #endif
   15952             :         use pm_kind, only: SKC => SK, IKC => IK4
   15953             :         use pm_container, only: cmi_pdt
   15954             :         class(display_type)         , intent(inout)                 :: self
   15955             :         type(cmi_pdt(IKC))          , intent(in)                    :: object
   15956             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15957             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15958             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15959             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15960             :     end subroutine
   15961             : #endif
   15962             : 
   15963             : #if IK3_ENABLED
   15964             :     module subroutine show_D0_PMIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15965             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15966             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMIK3
   15967             : #endif
   15968             :         use pm_kind, only: SKC => SK, IKC => IK3
   15969             :         use pm_container, only: cmi_pdt
   15970             :         class(display_type)         , intent(inout)                 :: self
   15971             :         type(cmi_pdt(IKC))          , intent(in)                    :: object
   15972             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15973             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15974             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15975             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15976             :     end subroutine
   15977             : #endif
   15978             : 
   15979             : #if IK2_ENABLED
   15980             :     module subroutine show_D0_PMIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15981             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15982             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMIK2
   15983             : #endif
   15984             :         use pm_kind, only: SKC => SK, IKC => IK2
   15985             :         use pm_container, only: cmi_pdt
   15986             :         class(display_type)         , intent(inout)                 :: self
   15987             :         type(cmi_pdt(IKC))          , intent(in)                    :: object
   15988             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   15989             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   15990             :         logical(LK)                 , intent(in)    , optional      :: sticky
   15991             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   15992             :     end subroutine
   15993             : #endif
   15994             : 
   15995             : #if IK1_ENABLED
   15996             :     module subroutine show_D0_PMIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   15997             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15998             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMIK1
   15999             : #endif
   16000             :         use pm_kind, only: SKC => SK, IKC => IK1
   16001             :         use pm_container, only: cmi_pdt
   16002             :         class(display_type)         , intent(inout)                 :: self
   16003             :         type(cmi_pdt(IKC))          , intent(in)                    :: object
   16004             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16005             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16006             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16007             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16008             :     end subroutine
   16009             : #endif
   16010             : 
   16011             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16012             : 
   16013             : #if LK5_ENABLED
   16014             :     module subroutine show_D0_PMLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16016             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMLK5
   16017             : #endif
   16018             :         use pm_kind, only: SKC => SK, LKC => LK5
   16019             :         use pm_container, only: cml_pdt
   16020             :         class(display_type)         , intent(inout)                 :: self
   16021             :         type(cml_pdt(LKC))          , intent(in)                    :: object
   16022             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16023             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16024             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16025             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16026             :     end subroutine
   16027             : #endif
   16028             : 
   16029             : #if LK4_ENABLED
   16030             :     module subroutine show_D0_PMLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16031             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16032             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMLK4
   16033             : #endif
   16034             :         use pm_kind, only: SKC => SK, LKC => LK4
   16035             :         use pm_container, only: cml_pdt
   16036             :         class(display_type)         , intent(inout)                 :: self
   16037             :         type(cml_pdt(LKC))          , intent(in)                    :: object
   16038             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16039             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16040             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16041             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16042             :     end subroutine
   16043             : #endif
   16044             : 
   16045             : #if LK3_ENABLED
   16046             :     module subroutine show_D0_PMLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16048             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMLK3
   16049             : #endif
   16050             :         use pm_kind, only: SKC => SK, LKC => LK3
   16051             :         use pm_container, only: cml_pdt
   16052             :         class(display_type)         , intent(inout)                 :: self
   16053             :         type(cml_pdt(LKC))          , intent(in)                    :: object
   16054             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16055             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16056             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16057             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16058             :     end subroutine
   16059             : #endif
   16060             : 
   16061             : #if LK2_ENABLED
   16062             :     module subroutine show_D0_PMLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16063             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16064             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMLK2
   16065             : #endif
   16066             :         use pm_kind, only: SKC => SK, LKC => LK2
   16067             :         use pm_container, only: cml_pdt
   16068             :         class(display_type)         , intent(inout)                 :: self
   16069             :         type(cml_pdt(LKC))          , intent(in)                    :: object
   16070             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16071             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16072             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16073             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16074             :     end subroutine
   16075             : #endif
   16076             : 
   16077             : #if LK1_ENABLED
   16078             :     module subroutine show_D0_PMLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16079             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16080             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMLK1
   16081             : #endif
   16082             :         use pm_kind, only: SKC => SK, LKC => LK1
   16083             :         use pm_container, only: cml_pdt
   16084             :         class(display_type)         , intent(inout)                 :: self
   16085             :         type(cml_pdt(LKC))          , intent(in)                    :: object
   16086             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16087             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16088             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16089             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16090             :     end subroutine
   16091             : #endif
   16092             : 
   16093             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16094             : 
   16095             : #if CK5_ENABLED
   16096             :     module subroutine show_D0_PMCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16097             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16098             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMCK5
   16099             : #endif
   16100             :         use pm_kind, only: SKC => SK, CKC => CK5
   16101             :         use pm_container, only: cmc_pdt
   16102             :         class(display_type)         , intent(inout)                 :: self
   16103             :         type(cmc_pdt(CKC))          , intent(in)                    :: object
   16104             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16105             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16106             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16107             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16108             :     end subroutine
   16109             : #endif
   16110             : 
   16111             : #if CK4_ENABLED
   16112             :     module subroutine show_D0_PMCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16113             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16114             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMCK4
   16115             : #endif
   16116             :         use pm_kind, only: SKC => SK, CKC => CK4
   16117             :         use pm_container, only: cmc_pdt
   16118             :         class(display_type)         , intent(inout)                 :: self
   16119             :         type(cmc_pdt(CKC))          , intent(in)                    :: object
   16120             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16121             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16122             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16123             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16124             :     end subroutine
   16125             : #endif
   16126             : 
   16127             : #if CK3_ENABLED
   16128             :     module subroutine show_D0_PMCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16129             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16130             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMCK3
   16131             : #endif
   16132             :         use pm_kind, only: SKC => SK, CKC => CK3
   16133             :         use pm_container, only: cmc_pdt
   16134             :         class(display_type)         , intent(inout)                 :: self
   16135             :         type(cmc_pdt(CKC))          , intent(in)                    :: object
   16136             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16137             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16138             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16139             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16140             :     end subroutine
   16141             : #endif
   16142             : 
   16143             : #if CK2_ENABLED
   16144             :     module subroutine show_D0_PMCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16145             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16146             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMCK2
   16147             : #endif
   16148             :         use pm_kind, only: SKC => SK, CKC => CK2
   16149             :         use pm_container, only: cmc_pdt
   16150             :         class(display_type)         , intent(inout)                 :: self
   16151             :         type(cmc_pdt(CKC))          , intent(in)                    :: object
   16152             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16153             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16154             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16155             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16156             :     end subroutine
   16157             : #endif
   16158             : 
   16159             : #if CK1_ENABLED
   16160             :     module subroutine show_D0_PMCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16161             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16162             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMCK1
   16163             : #endif
   16164             :         use pm_kind, only: SKC => SK, CKC => CK1
   16165             :         use pm_container, only: cmc_pdt
   16166             :         class(display_type)         , intent(inout)                 :: self
   16167             :         type(cmc_pdt(CKC))          , intent(in)                    :: object
   16168             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16169             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16170             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16171             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16172             :     end subroutine
   16173             : #endif
   16174             : 
   16175             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16176             : 
   16177             : #if RK5_ENABLED
   16178             :     module subroutine show_D0_PMRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16179             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16180             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMRK5
   16181             : #endif
   16182             :         use pm_kind, only: SKC => SK, RKC => RK5
   16183             :         use pm_container, only: cmr_pdt
   16184             :         class(display_type)         , intent(inout)                 :: self
   16185             :         type(cmr_pdt(RKC))          , intent(in)                    :: object
   16186             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16187             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16188             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16189             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16190             :     end subroutine
   16191             : #endif
   16192             : 
   16193             : #if RK4_ENABLED
   16194             :     module subroutine show_D0_PMRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16195             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16196             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMRK4
   16197             : #endif
   16198             :         use pm_kind, only: SKC => SK, RKC => RK4
   16199             :         use pm_container, only: cmr_pdt
   16200             :         class(display_type)         , intent(inout)                 :: self
   16201             :         type(cmr_pdt(RKC))          , intent(in)                    :: object
   16202             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16203             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16204             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16205             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16206             :     end subroutine
   16207             : #endif
   16208             : 
   16209             : #if RK3_ENABLED
   16210             :     module subroutine show_D0_PMRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16211             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16212             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMRK3
   16213             : #endif
   16214             :         use pm_kind, only: SKC => SK, RKC => RK3
   16215             :         use pm_container, only: cmr_pdt
   16216             :         class(display_type)         , intent(inout)                 :: self
   16217             :         type(cmr_pdt(RKC))          , intent(in)                    :: object
   16218             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16219             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16220             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16221             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16222             :     end subroutine
   16223             : #endif
   16224             : 
   16225             : #if RK2_ENABLED
   16226             :     module subroutine show_D0_PMRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16227             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16228             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMRK2
   16229             : #endif
   16230             :         use pm_kind, only: SKC => SK, RKC => RK2
   16231             :         use pm_container, only: cmr_pdt
   16232             :         class(display_type)         , intent(inout)                 :: self
   16233             :         type(cmr_pdt(RKC))          , intent(in)                    :: object
   16234             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16235             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16236             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16237             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16238             :     end subroutine
   16239             : #endif
   16240             : 
   16241             : #if RK1_ENABLED
   16242             :     module subroutine show_D0_PMRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16243             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16244             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PMRK1
   16245             : #endif
   16246             :         use pm_kind, only: SKC => SK, RKC => RK1
   16247             :         use pm_container, only: cmr_pdt
   16248             :         class(display_type)         , intent(inout)                 :: self
   16249             :         type(cmr_pdt(RKC))          , intent(in)                    :: object
   16250             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16251             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16252             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16253             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16254             :     end subroutine
   16255             : #endif
   16256             : 
   16257             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16258             : 
   16259             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16260             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16261             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16262             : 
   16263             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16264             : 
   16265             : #if SK5_ENABLED
   16266             :     module subroutine show_D1_PMSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16267             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16268             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMSK5
   16269             : #endif
   16270             :         use pm_kind, only: SKC => SK5
   16271             :         use pm_container, only: cms_pdt
   16272             :         class(display_type)         , intent(inout)                 :: self
   16273             :         type(cms_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16274             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16275             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16276             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16277             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16278             :     end subroutine
   16279             : #endif
   16280             : 
   16281             : #if SK4_ENABLED
   16282             :     module subroutine show_D1_PMSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16283             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16284             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMSK4
   16285             : #endif
   16286             :         use pm_kind, only: SKC => SK4
   16287             :         use pm_container, only: cms_pdt
   16288             :         class(display_type)         , intent(inout)                 :: self
   16289             :         type(cms_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16290             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16291             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16292             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16293             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16294             :     end subroutine
   16295             : #endif
   16296             : 
   16297             : #if SK3_ENABLED
   16298             :     module subroutine show_D1_PMSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16299             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16300             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMSK3
   16301             : #endif
   16302             :         use pm_kind, only: SKC => SK3
   16303             :         use pm_container, only: cms_pdt
   16304             :         class(display_type)         , intent(inout)                 :: self
   16305             :         type(cms_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16306             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16307             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16308             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16309             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16310             :     end subroutine
   16311             : #endif
   16312             : 
   16313             : #if SK2_ENABLED
   16314             :     module subroutine show_D1_PMSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16315             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16316             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMSK2
   16317             : #endif
   16318             :         use pm_kind, only: SKC => SK2
   16319             :         use pm_container, only: cms_pdt
   16320             :         class(display_type)         , intent(inout)                 :: self
   16321             :         type(cms_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16322             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16323             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16324             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16325             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16326             :     end subroutine
   16327             : #endif
   16328             : 
   16329             : #if SK1_ENABLED
   16330             :     module subroutine show_D1_PMSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16331             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16332             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMSK1
   16333             : #endif
   16334             :         use pm_kind, only: SKC => SK1
   16335             :         use pm_container, only: cms_pdt
   16336             :         class(display_type)         , intent(inout)                 :: self
   16337             :         type(cms_pdt(SKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16338             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16339             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16340             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16341             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16342             :     end subroutine
   16343             : #endif
   16344             : 
   16345             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16346             : 
   16347             : #if IK5_ENABLED
   16348             :     module subroutine show_D1_PMIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16349             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16350             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMIK5
   16351             : #endif
   16352             :         use pm_kind, only: SKC => SK, IKC => IK5
   16353             :         use pm_container, only: cmi_pdt
   16354             :         class(display_type)         , intent(inout)                 :: self
   16355             :         type(cmi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16356             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16357             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16358             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16359             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16360             :     end subroutine
   16361             : #endif
   16362             : 
   16363             : #if IK4_ENABLED
   16364             :     module subroutine show_D1_PMIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16366             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMIK4
   16367             : #endif
   16368             :         use pm_kind, only: SKC => SK, IKC => IK4
   16369             :         use pm_container, only: cmi_pdt
   16370             :         class(display_type)         , intent(inout)                 :: self
   16371             :         type(cmi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16372             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16373             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16374             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16375             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16376             :     end subroutine
   16377             : #endif
   16378             : 
   16379             : #if IK3_ENABLED
   16380             :     module subroutine show_D1_PMIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16381             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16382             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMIK3
   16383             : #endif
   16384             :         use pm_kind, only: SKC => SK, IKC => IK3
   16385             :         use pm_container, only: cmi_pdt
   16386             :         class(display_type)         , intent(inout)                 :: self
   16387             :         type(cmi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16388             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16389             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16390             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16391             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16392             :     end subroutine
   16393             : #endif
   16394             : 
   16395             : #if IK2_ENABLED
   16396             :     module subroutine show_D1_PMIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16397             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16398             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMIK2
   16399             : #endif
   16400             :         use pm_kind, only: SKC => SK, IKC => IK2
   16401             :         use pm_container, only: cmi_pdt
   16402             :         class(display_type)         , intent(inout)                 :: self
   16403             :         type(cmi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16404             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16405             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16406             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16407             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16408             :     end subroutine
   16409             : #endif
   16410             : 
   16411             : #if IK1_ENABLED
   16412             :     module subroutine show_D1_PMIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16413             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16414             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMIK1
   16415             : #endif
   16416             :         use pm_kind, only: SKC => SK, IKC => IK1
   16417             :         use pm_container, only: cmi_pdt
   16418             :         class(display_type)         , intent(inout)                 :: self
   16419             :         type(cmi_pdt(IKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16420             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16421             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16422             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16423             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16424             :     end subroutine
   16425             : #endif
   16426             : 
   16427             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16428             : 
   16429             : #if LK5_ENABLED
   16430             :     module subroutine show_D1_PMLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16431             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16432             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMLK5
   16433             : #endif
   16434             :         use pm_kind, only: SKC => SK, LKC => LK5
   16435             :         use pm_container, only: cml_pdt
   16436             :         class(display_type)         , intent(inout)                 :: self
   16437             :         type(cml_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16438             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16439             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16440             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16441             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16442             :     end subroutine
   16443             : #endif
   16444             : 
   16445             : #if LK4_ENABLED
   16446             :     module subroutine show_D1_PMLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16447             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16448             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMLK4
   16449             : #endif
   16450             :         use pm_kind, only: SKC => SK, LKC => LK4
   16451             :         use pm_container, only: cml_pdt
   16452             :         class(display_type)         , intent(inout)                 :: self
   16453             :         type(cml_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16454             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16455             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16456             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16457             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16458             :     end subroutine
   16459             : #endif
   16460             : 
   16461             : #if LK3_ENABLED
   16462             :     module subroutine show_D1_PMLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16463             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16464             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMLK3
   16465             : #endif
   16466             :         use pm_kind, only: SKC => SK, LKC => LK3
   16467             :         use pm_container, only: cml_pdt
   16468             :         class(display_type)         , intent(inout)                 :: self
   16469             :         type(cml_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16470             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16471             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16472             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16473             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16474             :     end subroutine
   16475             : #endif
   16476             : 
   16477             : #if LK2_ENABLED
   16478             :     module subroutine show_D1_PMLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16480             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMLK2
   16481             : #endif
   16482             :         use pm_kind, only: SKC => SK, LKC => LK2
   16483             :         use pm_container, only: cml_pdt
   16484             :         class(display_type)         , intent(inout)                 :: self
   16485             :         type(cml_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16486             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16487             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16488             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16489             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16490             :     end subroutine
   16491             : #endif
   16492             : 
   16493             : #if LK1_ENABLED
   16494             :     module subroutine show_D1_PMLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16495             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16496             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMLK1
   16497             : #endif
   16498             :         use pm_kind, only: SKC => SK, LKC => LK1
   16499             :         use pm_container, only: cml_pdt
   16500             :         class(display_type)         , intent(inout)                 :: self
   16501             :         type(cml_pdt(LKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16502             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16503             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16504             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16505             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16506             :     end subroutine
   16507             : #endif
   16508             : 
   16509             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16510             : 
   16511             : #if CK5_ENABLED
   16512             :     module subroutine show_D1_PMCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16513             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16514             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMCK5
   16515             : #endif
   16516             :         use pm_kind, only: SKC => SK, CKC => CK5
   16517             :         use pm_container, only: cmc_pdt
   16518             :         class(display_type)         , intent(inout)                 :: self
   16519             :         type(cmc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16520             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16521             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16522             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16523             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16524             :     end subroutine
   16525             : #endif
   16526             : 
   16527             : #if CK4_ENABLED
   16528             :     module subroutine show_D1_PMCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16529             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16530             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMCK4
   16531             : #endif
   16532             :         use pm_kind, only: SKC => SK, CKC => CK4
   16533             :         use pm_container, only: cmc_pdt
   16534             :         class(display_type)         , intent(inout)                 :: self
   16535             :         type(cmc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16536             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16537             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16538             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16539             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16540             :     end subroutine
   16541             : #endif
   16542             : 
   16543             : #if CK3_ENABLED
   16544             :     module subroutine show_D1_PMCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16545             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16546             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMCK3
   16547             : #endif
   16548             :         use pm_kind, only: SKC => SK, CKC => CK3
   16549             :         use pm_container, only: cmc_pdt
   16550             :         class(display_type)         , intent(inout)                 :: self
   16551             :         type(cmc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16552             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16553             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16554             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16555             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16556             :     end subroutine
   16557             : #endif
   16558             : 
   16559             : #if CK2_ENABLED
   16560             :     module subroutine show_D1_PMCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16561             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16562             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMCK2
   16563             : #endif
   16564             :         use pm_kind, only: SKC => SK, CKC => CK2
   16565             :         use pm_container, only: cmc_pdt
   16566             :         class(display_type)         , intent(inout)                 :: self
   16567             :         type(cmc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16568             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16569             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16570             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16571             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16572             :     end subroutine
   16573             : #endif
   16574             : 
   16575             : #if CK1_ENABLED
   16576             :     module subroutine show_D1_PMCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16577             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16578             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMCK1
   16579             : #endif
   16580             :         use pm_kind, only: SKC => SK, CKC => CK1
   16581             :         use pm_container, only: cmc_pdt
   16582             :         class(display_type)         , intent(inout)                 :: self
   16583             :         type(cmc_pdt(CKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16584             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16585             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16586             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16587             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16588             :     end subroutine
   16589             : #endif
   16590             : 
   16591             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16592             : 
   16593             : #if RK5_ENABLED
   16594             :     module subroutine show_D1_PMRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16595             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16596             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMRK5
   16597             : #endif
   16598             :         use pm_kind, only: SKC => SK, RKC => RK5
   16599             :         use pm_container, only: cmr_pdt
   16600             :         class(display_type)         , intent(inout)                 :: self
   16601             :         type(cmr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16602             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16603             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16604             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16605             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16606             :     end subroutine
   16607             : #endif
   16608             : 
   16609             : #if RK4_ENABLED
   16610             :     module subroutine show_D1_PMRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16611             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16612             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMRK4
   16613             : #endif
   16614             :         use pm_kind, only: SKC => SK, RKC => RK4
   16615             :         use pm_container, only: cmr_pdt
   16616             :         class(display_type)         , intent(inout)                 :: self
   16617             :         type(cmr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16618             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16619             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16620             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16621             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16622             :     end subroutine
   16623             : #endif
   16624             : 
   16625             : #if RK3_ENABLED
   16626             :     module subroutine show_D1_PMRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16627             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16628             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMRK3
   16629             : #endif
   16630             :         use pm_kind, only: SKC => SK, RKC => RK3
   16631             :         use pm_container, only: cmr_pdt
   16632             :         class(display_type)         , intent(inout)                 :: self
   16633             :         type(cmr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16634             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16635             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16636             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16637             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16638             :     end subroutine
   16639             : #endif
   16640             : 
   16641             : #if RK2_ENABLED
   16642             :     module subroutine show_D1_PMRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16643             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16644             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMRK2
   16645             : #endif
   16646             :         use pm_kind, only: SKC => SK, RKC => RK2
   16647             :         use pm_container, only: cmr_pdt
   16648             :         class(display_type)         , intent(inout)                 :: self
   16649             :         type(cmr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16650             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16651             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16652             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16653             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16654             :     end subroutine
   16655             : #endif
   16656             : 
   16657             : #if RK1_ENABLED
   16658             :     module subroutine show_D1_PMRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16659             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16660             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_PMRK1
   16661             : #endif
   16662             :         use pm_kind, only: SKC => SK, RKC => RK1
   16663             :         use pm_container, only: cmr_pdt
   16664             :         class(display_type)         , intent(inout)                 :: self
   16665             :         type(cmr_pdt(RKC))          , intent(in)    __CONTIGUOUS    :: object(:)
   16666             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16667             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16668             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16669             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16670             :     end subroutine
   16671             : #endif
   16672             : 
   16673             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16674             : 
   16675             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16676             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16677             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16678             : 
   16679             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16680             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16681             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16682             : 
   16683             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16684             : 
   16685             : #if SK5_ENABLED
   16686             :     module subroutine show_D0_PCSK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16687             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16688             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCSK5
   16689             : #endif
   16690             :         use pm_kind, only: SKC => SK5
   16691             :         use pm_container, only: ccs_pdt
   16692             :         class(display_type)         , intent(inout)                 :: self
   16693             :         type(ccs_pdt(SKC))          , intent(in)                    :: object
   16694             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16695             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16696             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16697             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16698             :     end subroutine
   16699             : #endif
   16700             : 
   16701             : #if SK4_ENABLED
   16702             :     module subroutine show_D0_PCSK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16703             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16704             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCSK4
   16705             : #endif
   16706             :         use pm_kind, only: SKC => SK4
   16707             :         use pm_container, only: ccs_pdt
   16708             :         class(display_type)         , intent(inout)                 :: self
   16709             :         type(ccs_pdt(SKC))          , intent(in)                    :: object
   16710             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16711             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16712             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16713             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16714             :     end subroutine
   16715             : #endif
   16716             : 
   16717             : #if SK3_ENABLED
   16718             :     module subroutine show_D0_PCSK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16719             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16720             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCSK3
   16721             : #endif
   16722             :         use pm_kind, only: SKC => SK3
   16723             :         use pm_container, only: ccs_pdt
   16724             :         class(display_type)         , intent(inout)                 :: self
   16725             :         type(ccs_pdt(SKC))          , intent(in)                    :: object
   16726             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16727             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16728             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16729             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16730             :     end subroutine
   16731             : #endif
   16732             : 
   16733             : #if SK2_ENABLED
   16734             :     module subroutine show_D0_PCSK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16735             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16736             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCSK2
   16737             : #endif
   16738             :         use pm_kind, only: SKC => SK2
   16739             :         use pm_container, only: ccs_pdt
   16740             :         class(display_type)         , intent(inout)                 :: self
   16741             :         type(ccs_pdt(SKC))          , intent(in)                    :: object
   16742             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16743             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16744             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16745             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16746             :     end subroutine
   16747             : #endif
   16748             : 
   16749             : #if SK1_ENABLED
   16750             :     module subroutine show_D0_PCSK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16751             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16752             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCSK1
   16753             : #endif
   16754             :         use pm_kind, only: SKC => SK1
   16755             :         use pm_container, only: ccs_pdt
   16756             :         class(display_type)         , intent(inout)                 :: self
   16757             :         type(ccs_pdt(SKC))          , intent(in)                    :: object
   16758             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16759             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16760             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16761             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16762             :     end subroutine
   16763             : #endif
   16764             : 
   16765             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16766             : 
   16767             : #if IK5_ENABLED
   16768             :     module subroutine show_D0_PCIK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16769             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16770             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCIK5
   16771             : #endif
   16772             :         use pm_kind, only: SKC => SK, IKC => IK5
   16773             :         use pm_container, only: cci_pdt
   16774             :         class(display_type)         , intent(inout)                 :: self
   16775             :         type(cci_pdt(IKC))          , intent(in)                    :: object
   16776             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16777             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16778             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16779             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16780             :     end subroutine
   16781             : #endif
   16782             : 
   16783             : #if IK4_ENABLED
   16784             :     module subroutine show_D0_PCIK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16785             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16786             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCIK4
   16787             : #endif
   16788             :         use pm_kind, only: SKC => SK, IKC => IK4
   16789             :         use pm_container, only: cci_pdt
   16790             :         class(display_type)         , intent(inout)                 :: self
   16791             :         type(cci_pdt(IKC))          , intent(in)                    :: object
   16792             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16793             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16794             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16795             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16796             :     end subroutine
   16797             : #endif
   16798             : 
   16799             : #if IK3_ENABLED
   16800             :     module subroutine show_D0_PCIK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16801             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16802             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCIK3
   16803             : #endif
   16804             :         use pm_kind, only: SKC => SK, IKC => IK3
   16805             :         use pm_container, only: cci_pdt
   16806             :         class(display_type)         , intent(inout)                 :: self
   16807             :         type(cci_pdt(IKC))          , intent(in)                    :: object
   16808             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16809             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16810             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16811             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16812             :     end subroutine
   16813             : #endif
   16814             : 
   16815             : #if IK2_ENABLED
   16816             :     module subroutine show_D0_PCIK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16817             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16818             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCIK2
   16819             : #endif
   16820             :         use pm_kind, only: SKC => SK, IKC => IK2
   16821             :         use pm_container, only: cci_pdt
   16822             :         class(display_type)         , intent(inout)                 :: self
   16823             :         type(cci_pdt(IKC))          , intent(in)                    :: object
   16824             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16825             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16826             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16827             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16828             :     end subroutine
   16829             : #endif
   16830             : 
   16831             : #if IK1_ENABLED
   16832             :     module subroutine show_D0_PCIK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16833             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16834             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCIK1
   16835             : #endif
   16836             :         use pm_kind, only: SKC => SK, IKC => IK1
   16837             :         use pm_container, only: cci_pdt
   16838             :         class(display_type)         , intent(inout)                 :: self
   16839             :         type(cci_pdt(IKC))          , intent(in)                    :: object
   16840             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16841             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16842             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16843             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16844             :     end subroutine
   16845             : #endif
   16846             : 
   16847             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16848             : 
   16849             : #if LK5_ENABLED
   16850             :     module subroutine show_D0_PCLK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16851             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16852             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCLK5
   16853             : #endif
   16854             :         use pm_kind, only: SKC => SK, LKC => LK5
   16855             :         use pm_container, only: ccl_pdt
   16856             :         class(display_type)         , intent(inout)                 :: self
   16857             :         type(ccl_pdt(LKC))          , intent(in)                    :: object
   16858             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16859             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16860             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16861             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16862             :     end subroutine
   16863             : #endif
   16864             : 
   16865             : #if LK4_ENABLED
   16866             :     module subroutine show_D0_PCLK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16867             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16868             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCLK4
   16869             : #endif
   16870             :         use pm_kind, only: SKC => SK, LKC => LK4
   16871             :         use pm_container, only: ccl_pdt
   16872             :         class(display_type)         , intent(inout)                 :: self
   16873             :         type(ccl_pdt(LKC))          , intent(in)                    :: object
   16874             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16875             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16876             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16877             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16878             :     end subroutine
   16879             : #endif
   16880             : 
   16881             : #if LK3_ENABLED
   16882             :     module subroutine show_D0_PCLK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16883             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16884             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCLK3
   16885             : #endif
   16886             :         use pm_kind, only: SKC => SK, LKC => LK3
   16887             :         use pm_container, only: ccl_pdt
   16888             :         class(display_type)         , intent(inout)                 :: self
   16889             :         type(ccl_pdt(LKC))          , intent(in)                    :: object
   16890             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16891             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16892             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16893             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16894             :     end subroutine
   16895             : #endif
   16896             : 
   16897             : #if LK2_ENABLED
   16898             :     module subroutine show_D0_PCLK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16899             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16900             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCLK2
   16901             : #endif
   16902             :         use pm_kind, only: SKC => SK, LKC => LK2
   16903             :         use pm_container, only: ccl_pdt
   16904             :         class(display_type)         , intent(inout)                 :: self
   16905             :         type(ccl_pdt(LKC))          , intent(in)                    :: object
   16906             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16907             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16908             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16909             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16910             :     end subroutine
   16911             : #endif
   16912             : 
   16913             : #if LK1_ENABLED
   16914             :     module subroutine show_D0_PCLK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16915             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16916             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCLK1
   16917             : #endif
   16918             :         use pm_kind, only: SKC => SK, LKC => LK1
   16919             :         use pm_container, only: ccl_pdt
   16920             :         class(display_type)         , intent(inout)                 :: self
   16921             :         type(ccl_pdt(LKC))          , intent(in)                    :: object
   16922             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16923             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16924             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16925             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16926             :     end subroutine
   16927             : #endif
   16928             : 
   16929             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16930             : 
   16931             : #if CK5_ENABLED
   16932             :     module subroutine show_D0_PCCK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16934             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCCK5
   16935             : #endif
   16936             :         use pm_kind, only: SKC => SK, CKC => CK5
   16937             :         use pm_container, only: ccc_pdt
   16938             :         class(display_type)         , intent(inout)                 :: self
   16939             :         type(ccc_pdt(CKC))          , intent(in)                    :: object
   16940             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16941             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16942             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16943             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16944             :     end subroutine
   16945             : #endif
   16946             : 
   16947             : #if CK4_ENABLED
   16948             :     module subroutine show_D0_PCCK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16949             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16950             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCCK4
   16951             : #endif
   16952             :         use pm_kind, only: SKC => SK, CKC => CK4
   16953             :         use pm_container, only: ccc_pdt
   16954             :         class(display_type)         , intent(inout)                 :: self
   16955             :         type(ccc_pdt(CKC))          , intent(in)                    :: object
   16956             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16957             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16958             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16959             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16960             :     end subroutine
   16961             : #endif
   16962             : 
   16963             : #if CK3_ENABLED
   16964             :     module subroutine show_D0_PCCK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16965             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16966             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCCK3
   16967             : #endif
   16968             :         use pm_kind, only: SKC => SK, CKC => CK3
   16969             :         use pm_container, only: ccc_pdt
   16970             :         class(display_type)         , intent(inout)                 :: self
   16971             :         type(ccc_pdt(CKC))          , intent(in)                    :: object
   16972             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16973             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16974             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16975             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16976             :     end subroutine
   16977             : #endif
   16978             : 
   16979             : #if CK2_ENABLED
   16980             :     module subroutine show_D0_PCCK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16981             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16982             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCCK2
   16983             : #endif
   16984             :         use pm_kind, only: SKC => SK, CKC => CK2
   16985             :         use pm_container, only: ccc_pdt
   16986             :         class(display_type)         , intent(inout)                 :: self
   16987             :         type(ccc_pdt(CKC))          , intent(in)                    :: object
   16988             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   16989             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   16990             :         logical(LK)                 , intent(in)    , optional      :: sticky
   16991             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   16992             :     end subroutine
   16993             : #endif
   16994             : 
   16995             : #if CK1_ENABLED
   16996             :     module subroutine show_D0_PCCK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   16997             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16998             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCCK1
   16999             : #endif
   17000             :         use pm_kind, only: SKC => SK, CKC => CK1
   17001             :         use pm_container, only: ccc_pdt
   17002             :         class(display_type)         , intent(inout)                 :: self
   17003             :         type(ccc_pdt(CKC))          , intent(in)                    :: object
   17004             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17005             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17006             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17007             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17008             :     end subroutine
   17009             : #endif
   17010             : 
   17011             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17012             : 
   17013             : #if RK5_ENABLED
   17014             :     module subroutine show_D0_PCRK5(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17016             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCRK5
   17017             : #endif
   17018             :         use pm_kind, only: SKC => SK, RKC => RK5
   17019             :         use pm_container, only: ccr_pdt
   17020             :         class(display_type)         , intent(inout)                 :: self
   17021             :         type(ccr_pdt(RKC))          , intent(in)                    :: object
   17022             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17023             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17024             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17025             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17026             :     end subroutine
   17027             : #endif
   17028             : 
   17029             : #if RK4_ENABLED
   17030             :     module subroutine show_D0_PCRK4(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17031             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17032             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCRK4
   17033             : #endif
   17034             :         use pm_kind, only: SKC => SK, RKC => RK4
   17035             :         use pm_container, only: ccr_pdt
   17036             :         class(display_type)         , intent(inout)                 :: self
   17037             :         type(ccr_pdt(RKC))          , intent(in)                    :: object
   17038             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17039             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17040             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17041             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17042             :     end subroutine
   17043             : #endif
   17044             : 
   17045             : #if RK3_ENABLED
   17046             :     module subroutine show_D0_PCRK3(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17048             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCRK3
   17049             : #endif
   17050             :         use pm_kind, only: SKC => SK, RKC => RK3
   17051             :         use pm_container, only: ccr_pdt
   17052             :         class(display_type)         , intent(inout)                 :: self
   17053             :         type(ccr_pdt(RKC))          , intent(in)                    :: object
   17054             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17055             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17056             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17057             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17058             :     end subroutine
   17059             : #endif
   17060             : 
   17061             : #if RK2_ENABLED
   17062             :     module subroutine show_D0_PCRK2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17063             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17064             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCRK2
   17065             : #endif
   17066             :         use pm_kind, only: SKC => SK, RKC => RK2
   17067             :         use pm_container, only: ccr_pdt
   17068             :         class(display_type)         , intent(inout)                 :: self
   17069             :         type(ccr_pdt(RKC))          , intent(in)                    :: object
   17070             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17071             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17072             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17073             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17074             :     end subroutine
   17075             : #endif
   17076             : 
   17077             : #if RK1_ENABLED
   17078             :     module subroutine show_D0_PCRK1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17079             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17080             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_PCRK1
   17081             : #endif
   17082             :         use pm_kind, only: SKC => SK, RKC => RK1
   17083             :         use pm_container, only: ccr_pdt
   17084             :         class(display_type)         , intent(inout)                 :: self
   17085             :         type(ccr_pdt(RKC))          , intent(in)                    :: object
   17086             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17087             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17088             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17089             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17090             :     end subroutine
   17091             : #endif
   17092             : 
   17093             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17094             : 
   17095             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17096             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17097             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17098             : 
   17099             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17100             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17101             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17102             : 
   17103             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17104             : 
   17105             :     module subroutine show_D0_BSSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17106             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17107             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BSSK
   17108             : #endif
   17109             :         use pm_kind, only: SKC => SK
   17110             :         use pm_container, only: css_type
   17111             :         class(display_type)         , intent(inout)                 :: self
   17112             :         type(css_type)        , intent(in)                    :: object
   17113             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17114             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17115             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17116             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17117             :     end subroutine
   17118             : 
   17119             :     module subroutine show_D0_BSIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17120             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17121             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BSIK
   17122             : #endif
   17123             :         use pm_kind, only: SKC => SK
   17124             :         use pm_container, only: csi_type
   17125             :         class(display_type)         , intent(inout)                 :: self
   17126             :         type(csi_type)              , intent(in)                    :: object
   17127             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17128             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17129             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17130             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17131             :     end subroutine
   17132             : 
   17133             :     module subroutine show_D0_BSLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17134             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17135             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BSLK
   17136             : #endif
   17137             :         use pm_kind, only: SKC => SK
   17138             :         use pm_container, only: csl_type
   17139             :         class(display_type)         , intent(inout)                 :: self
   17140             :         type(csl_type)              , intent(in)                    :: object
   17141             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17142             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17143             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17144             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17145             :     end subroutine
   17146             : 
   17147             :     module subroutine show_D0_BSCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17148             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17149             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BSCK
   17150             : #endif
   17151             :         use pm_kind, only: SKC => SK
   17152             :         use pm_container, only: csc_type
   17153             :         class(display_type)         , intent(inout)                 :: self
   17154             :         type(csc_type)              , intent(in)                    :: object
   17155             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17156             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17157             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17158             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17159             :     end subroutine
   17160             : 
   17161             :     module subroutine show_D0_BSRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17162             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17163             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BSRK
   17164             : #endif
   17165             :         use pm_kind, only: SKC => SK
   17166             :         use pm_container, only: csr_type
   17167             :         class(display_type)         , intent(inout)                 :: self
   17168             :         type(csr_type)              , intent(in)                    :: object
   17169             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17170             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17171             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17172             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17173             :     end subroutine
   17174             : 
   17175             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17176             : 
   17177             :     module subroutine show_D1_BSSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17178             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17179             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BSSK
   17180             : #endif
   17181             :         use pm_kind, only: SKC => SK
   17182             :         use pm_container, only: css_type
   17183             :         class(display_type)         , intent(inout)                 :: self
   17184             :         type(css_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17185             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17186             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17187             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17188             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17189             :     end subroutine
   17190             : 
   17191             :     module subroutine show_D1_BSIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17192             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17193             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BSIK
   17194             : #endif
   17195             :         use pm_kind, only: SKC => SK
   17196             :         use pm_container, only: csi_type
   17197             :         class(display_type)         , intent(inout)                 :: self
   17198             :         type(csi_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17199             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17200             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17201             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17202             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17203             :     end subroutine
   17204             : 
   17205             :     module subroutine show_D1_BSLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17206             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17207             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BSLK
   17208             : #endif
   17209             :         use pm_kind, only: SKC => SK
   17210             :         use pm_container, only: csl_type
   17211             :         class(display_type)         , intent(inout)                 :: self
   17212             :         type(csl_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17213             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17214             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17215             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17216             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17217             :     end subroutine
   17218             : 
   17219             :     module subroutine show_D1_BSCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17220             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17221             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BSCK
   17222             : #endif
   17223             :         use pm_kind, only: SKC => SK
   17224             :         use pm_container, only: csc_type
   17225             :         class(display_type)         , intent(inout)                 :: self
   17226             :         type(csc_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17227             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17228             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17229             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17230             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17231             :     end subroutine
   17232             : 
   17233             :     module subroutine show_D1_BSRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17234             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17235             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BSRK
   17236             : #endif
   17237             :         use pm_kind, only: SKC => SK
   17238             :         use pm_container, only: csr_type
   17239             :         class(display_type)         , intent(inout)                 :: self
   17240             :         type(csr_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17241             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17242             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17243             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17244             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17245             :     end subroutine
   17246             : 
   17247             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17248             : 
   17249             :     module subroutine show_D2_BSSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17250             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17251             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BSSK
   17252             : #endif
   17253             :         use pm_kind, only: SKC => SK
   17254             :         use pm_container, only: css_type
   17255             :         class(display_type)         , intent(inout)                 :: self
   17256             :         type(css_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17257             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17258             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17259             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17260             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17261             :     end subroutine
   17262             : 
   17263             :     module subroutine show_D2_BSIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17265             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BSIK
   17266             : #endif
   17267             :         use pm_kind, only: SKC => SK
   17268             :         use pm_container, only: csi_type
   17269             :         class(display_type)         , intent(inout)                 :: self
   17270             :         type(csi_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17271             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17272             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17273             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17274             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17275             :     end subroutine
   17276             : 
   17277             :     module subroutine show_D2_BSLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17278             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17279             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BSLK
   17280             : #endif
   17281             :         use pm_kind, only: SKC => SK
   17282             :         use pm_container, only: csl_type
   17283             :         class(display_type)         , intent(inout)                 :: self
   17284             :         type(csl_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17285             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17286             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17287             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17288             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17289             :     end subroutine
   17290             : 
   17291             :     module subroutine show_D2_BSCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17292             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17293             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BSCK
   17294             : #endif
   17295             :         use pm_kind, only: SKC => SK
   17296             :         use pm_container, only: csc_type
   17297             :         class(display_type)         , intent(inout)                 :: self
   17298             :         type(csc_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17299             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17300             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17301             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17302             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17303             :     end subroutine
   17304             : 
   17305             :     module subroutine show_D2_BSRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17306             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17307             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BSRK
   17308             : #endif
   17309             :         use pm_kind, only: SKC => SK
   17310             :         use pm_container, only: csr_type
   17311             :         class(display_type)         , intent(inout)                 :: self
   17312             :         type(csr_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17313             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17314             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17315             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17316             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17317             :     end subroutine
   17318             : 
   17319             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17320             : 
   17321             :     module subroutine show_D3_BSSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17322             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17323             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_BSSK
   17324             : #endif
   17325             :         use pm_kind, only: SKC => SK
   17326             :         use pm_container, only: css_type
   17327             :         class(display_type)         , intent(inout)                 :: self
   17328             :         type(css_type)              , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   17329             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17330             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17331             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17332             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17333             :     end subroutine
   17334             : 
   17335             :     module subroutine show_D3_BSIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17336             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17337             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_BSIK
   17338             : #endif
   17339             :         use pm_kind, only: SKC => SK
   17340             :         use pm_container, only: csi_type
   17341             :         class(display_type)         , intent(inout)                 :: self
   17342             :         type(csi_type)              , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   17343             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17344             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17345             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17346             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17347             :     end subroutine
   17348             : 
   17349             :     module subroutine show_D3_BSLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17350             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17351             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_BSLK
   17352             : #endif
   17353             :         use pm_kind, only: SKC => SK
   17354             :         use pm_container, only: csl_type
   17355             :         class(display_type)         , intent(inout)                 :: self
   17356             :         type(csl_type)              , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   17357             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17358             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17359             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17360             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17361             :     end subroutine
   17362             : 
   17363             :     module subroutine show_D3_BSCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17364             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17365             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_BSCK
   17366             : #endif
   17367             :         use pm_kind, only: SKC => SK
   17368             :         use pm_container, only: csc_type
   17369             :         class(display_type)         , intent(inout)                 :: self
   17370             :         type(csc_type)              , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   17371             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17372             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17373             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17374             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17375             :     end subroutine
   17376             : 
   17377             :     module subroutine show_D3_BSRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17379             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D3_BSRK
   17380             : #endif
   17381             :         use pm_kind, only: SKC => SK
   17382             :         use pm_container, only: csr_type
   17383             :         class(display_type)         , intent(inout)                 :: self
   17384             :         type(csr_type)              , intent(in)    __CONTIGUOUS    :: object(:,:,:)
   17385             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17386             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17387             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17388             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17389             :     end subroutine
   17390             : 
   17391             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17392             : 
   17393             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17394             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17395             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17396             : 
   17397             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17398             : 
   17399             :     module subroutine show_D0_BVSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17401             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BVSK
   17402             : #endif
   17403             :         use pm_kind, only: SKC => SK
   17404             :         use pm_container, only: cvs_type
   17405             :         class(display_type)         , intent(inout)                 :: self
   17406             :         type(cvs_type)              , intent(in)                    :: object
   17407             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17408             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17409             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17410             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17411             :     end subroutine
   17412             : 
   17413             :     module subroutine show_D0_BVIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17414             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17415             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BVIK
   17416             : #endif
   17417             :         use pm_kind, only: SKC => SK
   17418             :         use pm_container, only: cvi_type
   17419             :         class(display_type)         , intent(inout)                 :: self
   17420             :         type(cvi_type)              , intent(in)                    :: object
   17421             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17422             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17423             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17424             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17425             :     end subroutine
   17426             : 
   17427             :     module subroutine show_D0_BVLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17428             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17429             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BVLK
   17430             : #endif
   17431             :         use pm_kind, only: SKC => SK
   17432             :         use pm_container, only: cvl_type
   17433             :         class(display_type)         , intent(inout)                 :: self
   17434             :         type(cvl_type)              , intent(in)                    :: object
   17435             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17436             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17437             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17438             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17439             :     end subroutine
   17440             : 
   17441             :     module subroutine show_D0_BVCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17442             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17443             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BVCK
   17444             : #endif
   17445             :         use pm_kind, only: SKC => SK
   17446             :         use pm_container, only: cvc_type
   17447             :         class(display_type)         , intent(inout)                 :: self
   17448             :         type(cvc_type)              , intent(in)                    :: object
   17449             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17450             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17451             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17452             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17453             :     end subroutine
   17454             : 
   17455             :     module subroutine show_D0_BVRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17456             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17457             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BVRK
   17458             : #endif
   17459             :         use pm_kind, only: SKC => SK
   17460             :         use pm_container, only: cvr_type
   17461             :         class(display_type)         , intent(inout)                 :: self
   17462             :         type(cvr_type)              , intent(in)                    :: object
   17463             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17464             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17465             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17466             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17467             :     end subroutine
   17468             : 
   17469             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17470             : 
   17471             :     module subroutine show_D1_BVSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17472             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17473             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BVSK
   17474             : #endif
   17475             :         use pm_kind, only: SKC => SK
   17476             :         use pm_container, only: cvs_type
   17477             :         class(display_type)         , intent(inout)                 :: self
   17478             :         type(cvs_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17479             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17480             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17481             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17482             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17483             :     end subroutine
   17484             : 
   17485             :     module subroutine show_D1_BVIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17486             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17487             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BVIK
   17488             : #endif
   17489             :         use pm_kind, only: SKC => SK
   17490             :         use pm_container, only: cvi_type
   17491             :         class(display_type)         , intent(inout)                 :: self
   17492             :         type(cvi_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17493             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17494             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17495             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17496             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17497             :     end subroutine
   17498             : 
   17499             :     module subroutine show_D1_BVLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17500             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17501             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BVLK
   17502             : #endif
   17503             :         use pm_kind, only: SKC => SK
   17504             :         use pm_container, only: cvl_type
   17505             :         class(display_type)         , intent(inout)                 :: self
   17506             :         type(cvl_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17507             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17508             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17509             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17510             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17511             :     end subroutine
   17512             : 
   17513             :     module subroutine show_D1_BVCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17514             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17515             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BVCK
   17516             : #endif
   17517             :         use pm_kind, only: SKC => SK
   17518             :         use pm_container, only: cvc_type
   17519             :         class(display_type)         , intent(inout)                 :: self
   17520             :         type(cvc_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17521             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17522             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17523             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17524             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17525             :     end subroutine
   17526             : 
   17527             :     module subroutine show_D1_BVRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17528             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17529             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BVRK
   17530             : #endif
   17531             :         use pm_kind, only: SKC => SK
   17532             :         use pm_container, only: cvr_type
   17533             :         class(display_type)         , intent(inout)                 :: self
   17534             :         type(cvr_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17535             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17536             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17537             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17538             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17539             :     end subroutine
   17540             : 
   17541             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17542             : 
   17543             :     module subroutine show_D2_BVSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17544             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17545             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BVSK
   17546             : #endif
   17547             :         use pm_kind, only: SKC => SK
   17548             :         use pm_container, only: cvs_type
   17549             :         class(display_type)         , intent(inout)                 :: self
   17550             :         type(cvs_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17551             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17552             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17553             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17554             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17555             :     end subroutine
   17556             : 
   17557             :     module subroutine show_D2_BVIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17559             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BVIK
   17560             : #endif
   17561             :         use pm_kind, only: SKC => SK
   17562             :         use pm_container, only: cvi_type
   17563             :         class(display_type)         , intent(inout)                 :: self
   17564             :         type(cvi_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17565             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17566             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17567             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17568             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17569             :     end subroutine
   17570             : 
   17571             :     module subroutine show_D2_BVLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17572             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17573             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BVLK
   17574             : #endif
   17575             :         use pm_kind, only: SKC => SK
   17576             :         use pm_container, only: cvl_type
   17577             :         class(display_type)         , intent(inout)                 :: self
   17578             :         type(cvl_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17579             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17580             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17581             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17582             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17583             :     end subroutine
   17584             : 
   17585             :     module subroutine show_D2_BVCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17586             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17587             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BVCK
   17588             : #endif
   17589             :         use pm_kind, only: SKC => SK
   17590             :         use pm_container, only: cvc_type
   17591             :         class(display_type)         , intent(inout)                 :: self
   17592             :         type(cvc_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17593             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17594             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17595             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17596             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17597             :     end subroutine
   17598             : 
   17599             :     module subroutine show_D2_BVRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17600             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17601             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D2_BVRK
   17602             : #endif
   17603             :         use pm_kind, only: SKC => SK
   17604             :         use pm_container, only: cvr_type
   17605             :         class(display_type)         , intent(inout)                 :: self
   17606             :         type(cvr_type)              , intent(in)    __CONTIGUOUS    :: object(:,:)
   17607             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17608             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17609             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17610             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17611             :     end subroutine
   17612             : 
   17613             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17614             : 
   17615             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17616             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17617             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17618             : 
   17619             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17620             : 
   17621             :     module subroutine show_D0_BMSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17622             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17623             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BMSK
   17624             : #endif
   17625             :         use pm_kind, only: SKC => SK
   17626             :         use pm_container, only: cms_type
   17627             :         class(display_type)         , intent(inout)                 :: self
   17628             :         type(cms_type)              , intent(in)                    :: object
   17629             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17630             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17631             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17632             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17633             :     end subroutine
   17634             : 
   17635             :     module subroutine show_D0_BMIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17636             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17637             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BMIK
   17638             : #endif
   17639             :         use pm_kind, only: SKC => SK
   17640             :         use pm_container, only: cmi_type
   17641             :         class(display_type)         , intent(inout)                 :: self
   17642             :         type(cmi_type)              , intent(in)                    :: object
   17643             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17644             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17645             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17646             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17647             :     end subroutine
   17648             : 
   17649             :     module subroutine show_D0_BMLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17651             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BMLK
   17652             : #endif
   17653             :         use pm_kind, only: SKC => SK
   17654             :         use pm_container, only: cml_type
   17655             :         class(display_type)         , intent(inout)                 :: self
   17656             :         type(cml_type)              , intent(in)                    :: object
   17657             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17658             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17659             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17660             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17661             :     end subroutine
   17662             : 
   17663             :     module subroutine show_D0_BMCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17664             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17665             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BMCK
   17666             : #endif
   17667             :         use pm_kind, only: SKC => SK
   17668             :         use pm_container, only: cmc_type
   17669             :         class(display_type)         , intent(inout)                 :: self
   17670             :         type(cmc_type)              , intent(in)                    :: object
   17671             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17672             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17673             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17674             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17675             :     end subroutine
   17676             : 
   17677             :     module subroutine show_D0_BMRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17678             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17679             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BMRK
   17680             : #endif
   17681             :         use pm_kind, only: SKC => SK
   17682             :         use pm_container, only: cmr_type
   17683             :         class(display_type)         , intent(inout)                 :: self
   17684             :         type(cmr_type)              , intent(in)                    :: object
   17685             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17686             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17687             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17688             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17689             :     end subroutine
   17690             : 
   17691             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17692             : 
   17693             :     module subroutine show_D1_BMSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17695             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BMSK
   17696             : #endif
   17697             :         use pm_kind, only: SKC => SK
   17698             :         use pm_container, only: cms_type
   17699             :         class(display_type)         , intent(inout)                 :: self
   17700             :         type(cms_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17701             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17702             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17703             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17704             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17705             :     end subroutine
   17706             : 
   17707             :     module subroutine show_D1_BMIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17708             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17709             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BMIK
   17710             : #endif
   17711             :         use pm_kind, only: SKC => SK
   17712             :         use pm_container, only: cmi_type
   17713             :         class(display_type)         , intent(inout)                 :: self
   17714             :         type(cmi_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17715             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17716             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17717             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17718             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17719             :     end subroutine
   17720             : 
   17721             :     module subroutine show_D1_BMLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17722             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17723             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BMLK
   17724             : #endif
   17725             :         use pm_kind, only: SKC => SK
   17726             :         use pm_container, only: cml_type
   17727             :         class(display_type)         , intent(inout)                 :: self
   17728             :         type(cml_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17729             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17730             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17731             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17732             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17733             :     end subroutine
   17734             : 
   17735             :     module subroutine show_D1_BMCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17736             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17737             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BMCK
   17738             : #endif
   17739             :         use pm_kind, only: SKC => SK
   17740             :         use pm_container, only: cmc_type
   17741             :         class(display_type)         , intent(inout)                 :: self
   17742             :         type(cmc_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17743             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17744             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17745             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17746             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17747             :     end subroutine
   17748             : 
   17749             :     module subroutine show_D1_BMRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17750             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17751             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D1_BMRK
   17752             : #endif
   17753             :         use pm_kind, only: SKC => SK
   17754             :         use pm_container, only: cmr_type
   17755             :         class(display_type)         , intent(inout)                 :: self
   17756             :         type(cmr_type)              , intent(in)    __CONTIGUOUS    :: object(:)
   17757             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17758             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17759             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17760             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17761             :     end subroutine
   17762             : 
   17763             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17764             : 
   17765             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17766             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17767             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17768             : 
   17769             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17770             : 
   17771             :     module subroutine show_D0_BCSK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17773             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BCSK
   17774             : #endif
   17775             :         use pm_kind, only: SKC => SK
   17776             :         use pm_container, only: ccs_type
   17777             :         class(display_type)         , intent(inout)                 :: self
   17778             :         type(ccs_type)              , intent(in)                    :: object
   17779             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17780             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17781             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17782             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17783             :     end subroutine
   17784             : 
   17785             :     module subroutine show_D0_BCIK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17786             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17787             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BCIK
   17788             : #endif
   17789             :         use pm_kind, only: SKC => SK
   17790             :         use pm_container, only: cci_type
   17791             :         class(display_type)         , intent(inout)                 :: self
   17792             :         type(cci_type)              , intent(in)                    :: object
   17793             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17794             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17795             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17796             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17797             :     end subroutine
   17798             : 
   17799             :     module subroutine show_D0_BCLK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17800             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17801             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BCLK
   17802             : #endif
   17803             :         use pm_kind, only: SKC => SK
   17804             :         use pm_container, only: ccl_type
   17805             :         class(display_type)         , intent(inout)                 :: self
   17806             :         type(ccl_type)              , intent(in)                    :: object
   17807             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17808             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17809             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17810             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17811             :     end subroutine
   17812             : 
   17813             :     module subroutine show_D0_BCCK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17815             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BCCK
   17816             : #endif
   17817             :         use pm_kind, only: SKC => SK
   17818             :         use pm_container, only: ccc_type
   17819             :         class(display_type)         , intent(inout)                 :: self
   17820             :         type(ccc_type)              , intent(in)                    :: object
   17821             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17822             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17823             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17824             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17825             :     end subroutine
   17826             : 
   17827             :     module subroutine show_D0_BCRK(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17828             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17829             :         !DEC$ ATTRIBUTES DLLEXPORT :: show_D0_BCRK
   17830             : #endif
   17831             :         use pm_kind, only: SKC => SK
   17832             :         use pm_container, only: ccr_type
   17833             :         class(display_type)         , intent(inout)                 :: self
   17834             :         type(ccr_type)              , intent(in)                    :: object
   17835             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17836             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17837             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17838             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17839             :     end subroutine
   17840             : 
   17841             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17842             : 
   17843             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17844             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17845             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17846             : 
   17847             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17848             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17849             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17850             : 
   17851             :     end interface
   17852             : 
   17853             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17854             : 
   17855             :     !>  \cond excluded
   17856             :     interface dump
   17857             : 
   17858             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17859             : 
   17860             :     module subroutine dump_D0(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17861             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17862             :         !DEC$ ATTRIBUTES DLLEXPORT :: dump_D0
   17863             : #endif
   17864             :         use pm_kind, only: SKC => SK
   17865             :         class(display_type)         , intent(inout)                 :: self
   17866             :         class(*)                    , intent(in)                    :: object
   17867             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17868             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17869             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17870             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17871             :     end subroutine
   17872             : 
   17873             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17874             : 
   17875             :     module subroutine dump_D1(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17877             :         !DEC$ ATTRIBUTES DLLEXPORT :: dump_D1
   17878             : #endif
   17879             :         use pm_kind, only: SKC => SK
   17880             :         class(display_type)         , intent(inout)                 :: self
   17881             :         class(*)                    , intent(in)    __CONTIGUOUS    :: object(:)
   17882             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17883             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17884             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17885             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17886             :     end subroutine
   17887             : 
   17888             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17889             : 
   17890             :     module subroutine dump_D2(self, object, tmsize, bmsize, count, unit, advance, format, deliml, delimr, sticky)
   17891             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17892             :         !DEC$ ATTRIBUTES DLLEXPORT :: dump_D2
   17893             : #endif
   17894             :         use pm_kind, only: SKC => SK
   17895             :         class(display_type)         , intent(inout)                 :: self
   17896             :         class(*)                    , intent(in)    __CONTIGUOUS    :: object(:,:)
   17897             :         integer(IK)                 , intent(in)    , optional      :: tmsize, bmsize, count, unit
   17898             :         character(*, SK)            , intent(in)    , optional      :: format, advance
   17899             :         logical(LK)                 , intent(in)    , optional      :: sticky
   17900             :         character(*, SK)            , intent(in)    , optional      :: deliml, delimr
   17901             :     end subroutine
   17902             : 
   17903             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17904             : 
   17905             :     end interface
   17906             :     !>  \endcond excluded
   17907             : 
   17908             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17909             : 
   17910             :     !>  \brief
   17911             :     !>  Generate and return a generic or type/kind-specific IO format with the requested
   17912             :     !>  specifications that can be use to read or write individual records in IO actions.
   17913             :     !>
   17914             :     !>  \param[in]  mold        :   The input vector of arbitrary size `(:)` of,<br>
   17915             :     !>                              <ol>
   17916             :     !>                                  <li>    type `character` of kind \SKALL,
   17917             :     !>                                  <li>    type `integer` of kind \IKALL,
   17918             :     !>                                  <li>    type `logical` of kind \LKALL,
   17919             :     !>                                  <li>    type `complex` of kind \CKALL,
   17920             :     !>                                  <li>    type `real` of kind \RKALL,
   17921             :     !>                              </ol>
   17922             :     !>                              whose kind type parameter determines the characteristics of the record fields for which the format is being constructed.<br>
   17923             :     !>                              This argument offers an easy way of defining `format` for fields of specific intrinsic type in a record, particularly, fields of type `character` or `complex`.<br>
   17924             :     !>                              For example, specifying a `complex` scalar for `mold` will automatically use the default left/right Fortran delimiters `()` for `complex` fields in the output `format`.<br>
   17925             :     !>                              If any other input argument is also present, its value will override the default behavior dictated by the presence of the input argument `mold`.<br>
   17926             :     !>                              The specific value and size of `mold` is completely ignored within the procedure.<br>
   17927             :     !>                              For more possibilities, see the examples below.<br>
   17928             :     !>                              (**optional**. If missing, the output `format` will be constructed for as generic as possible field records.)
   17929             :     !>  \param[in]  prefix      :   The input scalar of type `character` of default kind \SK,
   17930             :     !>                              containing the prefix to be added to the output `format`.<br>
   17931             :     !>                              The prefix appears at the beginning of the record to be written via the output `format`.<br>
   17932             :     !>                              (**optional**, default = `""`)
   17933             :     !>  \param[in]  ed          :   The input scalar of type `character` of default kind \SK,
   17934             :     !>                              containing the edit descriptor to be used for formatting each (sub)field.<br>
   17935             :     !>                              Possible values include but are not limited to `A`, `I`, `E`, `EN`, `ES`, `F`, `G`.<br>
   17936             :     !>                              (**optional**, default = `G`)
   17937             :     !>  \param[in]  sep         :   The input scalar of type `character` of default kind \SK,
   17938             :     !>                              containing the *repeat* field separator to be used in the output `format`.<br>
   17939             :     !>                              (**optional**, default = `", "`)
   17940             :     !>  \param[in]  deliml      :   The input scalar of type `character` of default kind \SK,
   17941             :     !>                              containing the set of characters that serve as the **left-delimiter** for a group of subfields (for example, the real and imaginary components of fields of type `complex`).<br>
   17942             :     !>                              For example,
   17943             :     !>                              <ol>
   17944             :     !>                                  <li> The input arguments `deliml = "(", subsep = ",", delimr = ")"` corresponds to the common Fortran format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$(\ms{x}, \ms{y})\f$.
   17945             :     !>                                  <li> The input arguments `deliml = "", subsep = "", delimr = "i", signed = .true._LK` corresponds to the common mathematical format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$\ms{x} + \ms{y}i\f$.
   17946             :     !>                              </ol>
   17947             :     !>                              (**optional**, default = `"("` if `mold` is of type `complex`, \f$\ms{"}\f$ if `mold` is of type `character`, and nothing otherwise.)
   17948             :     !>  \param[in]  subsep      :   The input scalar of type `character` of default kind \SK,
   17949             :     !>                              containing the <i>sub</i>-field separator to be used in the output `format`.<br>
   17950             :     !>                              An example of subfields are the two real and imaginary components of `complex` fields.<br>
   17951             :     !>                              For example,
   17952             :     !>                              <ol>
   17953             :     !>                                  <li> The input arguments `deliml = "(", subsep = ",", delimr = ")"` corresponds to the common Fortran format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$(\ms{x}, \ms{y})\f$.
   17954             :     !>                                  <li> The input arguments `deliml = "", subsep = "", delimr = "i", signed = .true._LK` corresponds to the common mathematical format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$\ms{x} + \ms{y}i\f$.
   17955             :     !>                              </ol>
   17956             :     !>                              However, the use of subfields is not necessarily limited to `complex` values and can be applied to any fixed-size group of fields in a record.<br>
   17957             :     !>                              It is however, important to specify the number of subfields within a field of a record by setting the value of the input argument `subcount`.<br>
   17958             :     !>                              (**optional**, default = the value of the input argument `sep`.)
   17959             :     !>  \param[in]  delimr      :   The input scalar of type `character` of default kind \SK,
   17960             :     !>                              containing the set of characters that serve as the **right-delimiter** for a group of subfields (for example, the real and imaginary components of fields of type `complex`).<br>
   17961             :     !>                              For example,
   17962             :     !>                              <ol>
   17963             :     !>                                  <li> The input arguments `deliml = "(", subsep = ",", delimr = ")"` corresponds to the common Fortran format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$(\ms{x}, \ms{y})\f$.
   17964             :     !>                                  <li> The input arguments `deliml = "", subsep = "", delimr = "i", signed = .true._LK` corresponds to the common mathematical format for displaying complex values with \f$\ms{x}\f$ and \f$\ms{y}\f$ components: \f$\ms{x} + \ms{y}i\f$.
   17965             :     !>                              </ol>
   17966             :     !>                              (**optional**, default = `")"` if `mold` is of type `complex`, \f$\ms{"}\f$ if `mold` is of type `character`, and nothing otherwise.)
   17967             :     !>  \param[in]  count       :   The input scalar positive `integer` of default kind \IK containing the **repeat count** of groups of subfields in the record.<br>
   17968             :     !>                              For example,
   17969             :     !>                              <ol>
   17970             :     !>                                  <li>    If the goal is to print `7` scalar `integer` numbers on screen, `count` can be set to `7`.<br>
   17971             :     !>                                  <li>    If the goal is to print `7` scalar `complex` numbers on screen, `count` can be set to `7` if `subcount` is set to `2`, or to `14` if `subcount` is missing.<br>
   17972             :     !>                              </ol>
   17973             :     !>                              See the Fortran standard for the definition of and more information about *repeat count*.<br>
   17974             :     !>                              If the number of entries is larger than the specified *repeat count*, the rest of entries will be
   17975             :     !>                              transferred to the next record when performing IO via the output `format` from this generic interface.<br>
   17976             :     !>                              (**optional**, default = `*`, that is, as many as needed.)
   17977             :     !>  \param[in]  subcount    :   The input scalar positive `integer` of default kind \IK containing the **subfield count** within a single field of the record.<br>
   17978             :     !>                              The input `subcount` is essentially the number of times the input `subsep` appears between subfields plus `1`.<br>
   17979             :     !>                              For example, if the `format` is to be used for `complex` values, `subcount` can be set to `2` along with other appropriate arguments to construct Fortran-style `complex` formats.<br>
   17980             :     !>                              (**optional**, default = `2` if `mold` is of type `complex` and `0` otherwise.)
   17981             :     !>  \param[in]  width       :   The input scalar positive `integer` of default kind \IK containing the width of each each subfield (or if none exists, each field) in the record formatted via the output `format`.<br>
   17982             :     !>                              (**optional**. The default value is computed based on the input arguments such that any field value can be read or written with a fixed field length. Use `0` to request dynamic minimum width for each (sub)field that is automatically specified by the processor.)
   17983             :     !>  \param[in]  ndigit      :   The input scalar positive `integer` of default kind \IK containing the precision of the subfields or fields.<br>
   17984             :     !>                              <ol>
   17985             :     !>                                  <li>    If the (sub)field is of type `real` or `complex`, then `ndigit` represents the number of **digits after the decimal point**.<br>
   17986             :     !>                                  <li>    If the (sub)field is of type `integer`, then `ndigit` represents the minimum number of digits to display.<br>
   17987             :     !>                                          This means that if an `integer` value has fewer digits than `ndigit`, the left side of the value will be padded with **leading zeros**.<br>
   17988             :     !>                                          This form of padding with *leading zeros* is particularly useful for creating a numbered list of file names.<br>
   17989             :     !>                                          Beware that `ndigit` can be zero, in which case, if the field value is `0`, it will not be displayed on screen and blank will be printed.<br>
   17990             :     !>                                          Note that `ndigit` takes effect only when the input argument `mold` is of type `integer` or if the edit descriptor argument `ed` is set to `I` or `i`.<br>
   17991             :     !>                                          Set `ndigit = range(int(1, kind(mold)))` to create an output `format` that pads `integer` fields with
   17992             :     !>                                          maximum possible number of *leading zeros* for the specified `integer` kind `mold`.<br>
   17993             :     !>                                  <li>    For all other field types (e.g., `character`, `logical`, etc) the value of this argument is irrelevant and is ignored.<br>
   17994             :     !>                              </ol>
   17995             :     !>                              (**optional**, default is `precision(mold)` for `real` and `complex` and `1` for `integer`. In all other cases or if `mold` is missing, the default is processor dependent.)
   17996             :     !>  \param[in]  lenexp      :   The input scalar `integer` of default kind \IK containing the *minimum* width of the exponent for real-valued entries in the records formatted via the output `format`.<br>
   17997             :     !>                              Note that when the input argument `ndigit` is specified, the Fortran default exponent field length becomes `3`.<br>
   17998             :     !>                              As such, if `ndigit` is present, then it is recommended to also explicitly specify `lenexp` must be explicitly set for output formats that are supposed to handle
   17999             :     !>                              numbers with kind type parameter numbers that have exponent range that occupies more than 3 digits, e.g., \RK128, \CK128.<br>
   18000             :     !>                              (**optional**, default = `0` corresponding to the minimum number of digits required to represent the exponent value, that is, without leading zeros. If present, `ndigit` must be also present.)
   18001             :     !>  \param[in]  signed      :   The input scalar `logical` of default kind \LK.<br>
   18002             :     !>                              <ol>
   18003             :     !>                                  <li> If `.true.`, then the output `format` will print all positive numeric values with their signs.
   18004             :     !>                                  <li> If `.false.`, then the output `format` will not print all positive numeric values with their signs.
   18005             :     !>                              </ol>
   18006             :     !>                              (**optional**, default = `.false.`)
   18007             :     !>
   18008             :     !>  \return
   18009             :     !>  `format`                :   The output scalar `allocatable` of type `character` of default kind \SK containing the requested IO format.
   18010             :     !>
   18011             :     !>  \interface{getFormat}
   18012             :     !>  \code{.F90}
   18013             :     !>
   18014             :     !>      use pm_io, only: getFormat
   18015             :     !>      character(:), allocatable :: format
   18016             :     !>
   18017             :     !>      ! generic fields format.
   18018             :     !>
   18019             :     !>      format = getFormat  ( prefix = prefix &
   18020             :     !>                          , ed = ed &
   18021             :     !>                          , sep = sep &
   18022             :     !>                          , deliml = deliml &
   18023             :     !>                          , subsep = subsep &
   18024             :     !>                          , delimr = delimr &
   18025             :     !>                          , count = count &
   18026             :     !>                          , subcount = subcount &
   18027             :     !>                          , width = width &
   18028             :     !>                          , ndigit = ndigit &
   18029             :     !>                          , lenexp = lenexp &
   18030             :     !>                          , signed = signed &
   18031             :     !>                          )
   18032             :     !>
   18033             :     !>      ! type-specific fields format.
   18034             :     !>
   18035             :     !>      format = getFormat  ( mold(:) &
   18036             :     !>                          , prefix = prefix &
   18037             :     !>                          , ed = ed &
   18038             :     !>                          , sep = sep &
   18039             :     !>                          , deliml = deliml &
   18040             :     !>                          , subsep = subsep &
   18041             :     !>                          , delimr = delimr &
   18042             :     !>                          , count = count &
   18043             :     !>                          , subcount = subcount &
   18044             :     !>                          , width = width &
   18045             :     !>                          , ndigit = ndigit &
   18046             :     !>                          , lenexp = lenexp &
   18047             :     !>                          , signed = signed &
   18048             :     !>                          )
   18049             :     !>
   18050             :     !>  \endcode
   18051             :     !>
   18052             :     !>  \warning
   18053             :     !>  The condition `present(lenexp) .and. present(ndigit) .or. .not. present(lenexp)` must hold for the corresponding input argument.<br>
   18054             :     !>  The Fortran standard requires the precision field to be present when the exponent field is present.<br>
   18055             :     !>  The condition `present(lenexp) .and. width /= 0 .or. .not. present(lenexp)` must hold for the corresponding input argument.<br>
   18056             :     !>  The Fortran standard requires the specified width be non-zero in the presence of the lenexp field.<br>
   18057             :     !>  The condition `ed == "g" .or. ed == "G" .or. width > 0` must hold for the corresponding input arguments.<br>
   18058             :     !>  The Fortran standard requires a non-zero width (preferably, `width >= 5 + ndigit + lenexp`).<br>
   18059             :     !>  The condition `(ed /= SKC_"f" .and. ed /= SKC_"F") .or. .not.present(lenexp)` must hold for the corresponding input arguments.<br>
   18060             :     !>  \vericons
   18061             :     !>
   18062             :     !>  \pure
   18063             :     !>
   18064             :     !>  \see
   18065             :     !>  [display_type](@ref pm_io::display_type)<br>
   18066             :     !>
   18067             :     !>  \example{getFormat}
   18068             :     !>  \include{lineno} example/pm_io/getFormat/main.F90
   18069             :     !>  \compilef{getFormat}
   18070             :     !>  \output{getFormat}
   18071             :     !>  \include{lineno} example/pm_io/getFormat/main.out.F90
   18072             :     !>
   18073             :     !>  \test
   18074             :     !>  [test_pm_io](@ref test_pm_io)
   18075             :     !>
   18076             :     !>  \bug
   18077             :     !>  \status \unresolved
   18078             :     !>  \source \ifort{2021.8.0 20221119}
   18079             :     !>  \desc
   18080             :     !>  The \ifort{2021.8.0 20221119} cannot run the following function call within the implementation of the procedures,
   18081             :     !>  \code{.F90}
   18082             :     !>      getCountDigit(range(mold))
   18083             :     !>  \endcode
   18084             :     !>  yielding the following error,<br>
   18085             :     !>  \code{.sh}
   18086             :     !>      forrtl: severe (174): SIGSEGV, segmentation fault occurred
   18087             :     !>      image              PC                Routine            Line        Source
   18088             :     !>      libpthread-2.33.s  00001550E3A9C1F0  Unknown               Unknown  Unknown
   18089             :     !>      libparamonte_fort  00001550E810D8B4  pm_mathnumsys_MP_         137  pm_mathNumSys@routines.inc.F90
   18090             :     !>      libparamonte_fort  00001550E764778D  pm_io_MP_get               83  pm_io@routines.inc.F90
   18091             :     !>      main.exe           000000000040CBE9  MAIN__                     83  main.F90
   18092             :     !>      main.exe           000000000040938D  Unknown               Unknown  Unknown
   18093             :     !>      libc-2.33.so       00001550E38BD565  __libc_start_main     Unknown  Unknown
   18094             :     !>      main.exe           00000000004092AE  Unknown               Unknown  Unknown
   18095             :     !>  \endcode
   18096             :     !>  \remedy
   18097             :     !>  For now, the `value` attribute of the input argument of function [getCountDigit](@ref pm_mathNumSys::getCountDigit) was converted to `intent(in)`.<br>
   18098             :     !>
   18099             :     !>  \finmain{getFormat}
   18100             :     !>
   18101             :     !>  \author
   18102             :     !>  \AmirShahmoradi, Oct 16, 2009, 2:47 AM, Michigan
   18103             :     interface getFormat
   18104             : 
   18105             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18106             : 
   18107             :     PURE module function getFormat_D0_Def(prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18108             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18109             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D0_Def
   18110             : #endif
   18111             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18112             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18113             :         logical(LK)         , intent(in)    , optional  :: signed
   18114             :         character(:, SK)    , allocatable               :: format
   18115             :     end function
   18116             : 
   18117             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18118             : 
   18119             : #if SK5_ENABLED
   18120             :     PURE module function getFormat_D1_SK5(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18121             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18122             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_SK5
   18123             : #endif
   18124             :         use pm_kind, only: SKC => SK5
   18125             :         character(*,SKC)    , intent(in)                :: mold(:)
   18126             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18127             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18128             :         logical(LK)         , intent(in)    , optional  :: signed
   18129             :         character(:, SK)    , allocatable               :: format
   18130             :     end function
   18131             : #endif
   18132             : 
   18133             : #if SK4_ENABLED
   18134             :     PURE module function getFormat_D1_SK4(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18135             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18136             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_SK4
   18137             : #endif
   18138             :         use pm_kind, only: SKC => SK4
   18139             :         character(*,SKC)    , intent(in)                :: mold(:)
   18140             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18141             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18142             :         logical(LK)         , intent(in)    , optional  :: signed
   18143             :         character(:, SK)    , allocatable               :: format
   18144             :     end function
   18145             : #endif
   18146             : 
   18147             : #if SK3_ENABLED
   18148             :     PURE module function getFormat_D1_SK3(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18149             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18150             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_SK3
   18151             : #endif
   18152             :         use pm_kind, only: SKC => SK3
   18153             :         character(*,SKC)    , intent(in)                :: mold(:)
   18154             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18155             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18156             :         logical(LK)         , intent(in)    , optional  :: signed
   18157             :         character(:, SK)    , allocatable               :: format
   18158             :     end function
   18159             : #endif
   18160             : 
   18161             : #if SK2_ENABLED
   18162             :     PURE module function getFormat_D1_SK2(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18163             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18164             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_SK2
   18165             : #endif
   18166             :         use pm_kind, only: SKC => SK2
   18167             :         character(*,SKC)    , intent(in)                :: mold(:)
   18168             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18169             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18170             :         logical(LK)         , intent(in)    , optional  :: signed
   18171             :         character(:, SK)    , allocatable               :: format
   18172             :     end function
   18173             : #endif
   18174             : 
   18175             : #if SK1_ENABLED
   18176             :     PURE module function getFormat_D1_SK1(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18178             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_SK1
   18179             : #endif
   18180             :         use pm_kind, only: SKC => SK1
   18181             :         character(*,SKC)    , intent(in)                :: mold(:)
   18182             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18183             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18184             :         logical(LK)         , intent(in)    , optional  :: signed
   18185             :         character(:, SK)    , allocatable               :: format
   18186             :     end function
   18187             : #endif
   18188             : 
   18189             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18190             : 
   18191             : #if IK5_ENABLED
   18192             :     PURE module function getFormat_D1_IK5(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18193             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18194             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_IK5
   18195             : #endif
   18196             :         use pm_kind, only: IKC => IK5
   18197             :         integer(IKC)        , intent(in)                :: mold(:)
   18198             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18199             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18200             :         logical(LK)         , intent(in)    , optional  :: signed
   18201             :         character(:, SK)    , allocatable               :: format
   18202             :     end function
   18203             : #endif
   18204             : 
   18205             : #if IK4_ENABLED
   18206             :     PURE module function getFormat_D1_IK4(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18207             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18208             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_IK4
   18209             : #endif
   18210             :         use pm_kind, only: IKC => IK4
   18211             :         integer(IKC)        , intent(in)                :: mold(:)
   18212             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18213             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18214             :         logical(LK)         , intent(in)    , optional  :: signed
   18215             :         character(:, SK)    , allocatable               :: format
   18216             :     end function
   18217             : #endif
   18218             : 
   18219             : #if IK3_ENABLED
   18220             :     PURE module function getFormat_D1_IK3(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18221             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18222             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_IK3
   18223             : #endif
   18224             :         use pm_kind, only: IKC => IK3
   18225             :         integer(IKC)        , intent(in)                :: mold(:)
   18226             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18227             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18228             :         logical(LK)         , intent(in)    , optional  :: signed
   18229             :         character(:, SK)    , allocatable               :: format
   18230             :     end function
   18231             : #endif
   18232             : 
   18233             : #if IK2_ENABLED
   18234             :     PURE module function getFormat_D1_IK2(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18235             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18236             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_IK2
   18237             : #endif
   18238             :         use pm_kind, only: IKC => IK2
   18239             :         integer(IKC)        , intent(in)                :: mold(:)
   18240             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18241             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18242             :         logical(LK)         , intent(in)    , optional  :: signed
   18243             :         character(:, SK)    , allocatable               :: format
   18244             :     end function
   18245             : #endif
   18246             : 
   18247             : #if IK1_ENABLED
   18248             :     PURE module function getFormat_D1_IK1(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18249             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18250             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_IK1
   18251             : #endif
   18252             :         use pm_kind, only: IKC => IK1
   18253             :         integer(IKC)        , intent(in)                :: mold(:)
   18254             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18255             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18256             :         logical(LK)         , intent(in)    , optional  :: signed
   18257             :         character(:, SK)    , allocatable               :: format
   18258             :     end function
   18259             : #endif
   18260             : 
   18261             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18262             : 
   18263             : #if LK5_ENABLED
   18264             :     PURE module function getFormat_D1_LK5(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18265             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18266             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_LK5
   18267             : #endif
   18268             :         use pm_kind, only: LKC => LK5
   18269             :         logical(LKC)        , intent(in)                :: mold(:)
   18270             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18271             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18272             :         logical(LK)         , intent(in)    , optional  :: signed
   18273             :         character(:, SK)    , allocatable               :: format
   18274             :     end function
   18275             : #endif
   18276             : 
   18277             : #if LK4_ENABLED
   18278             :     PURE module function getFormat_D1_LK4(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18279             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18280             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_LK4
   18281             : #endif
   18282             :         use pm_kind, only: LKC => LK4
   18283             :         logical(LKC)        , intent(in)                :: mold(:)
   18284             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18285             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18286             :         logical(LK)         , intent(in)    , optional  :: signed
   18287             :         character(:, SK)    , allocatable               :: format
   18288             :     end function
   18289             : #endif
   18290             : 
   18291             : #if LK3_ENABLED
   18292             :     PURE module function getFormat_D1_LK3(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18293             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18294             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_LK3
   18295             : #endif
   18296             :         use pm_kind, only: LKC => LK3
   18297             :         logical(LKC)        , intent(in)                :: mold(:)
   18298             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18299             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18300             :         logical(LK)         , intent(in)    , optional  :: signed
   18301             :         character(:, SK)    , allocatable               :: format
   18302             :     end function
   18303             : #endif
   18304             : 
   18305             : #if LK2_ENABLED
   18306             :     PURE module function getFormat_D1_LK2(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18307             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18308             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_LK2
   18309             : #endif
   18310             :         use pm_kind, only: LKC => LK2
   18311             :         logical(LKC)        , intent(in)                :: mold(:)
   18312             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18313             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18314             :         logical(LK)         , intent(in)    , optional  :: signed
   18315             :         character(:, SK)    , allocatable               :: format
   18316             :     end function
   18317             : #endif
   18318             : 
   18319             : #if LK1_ENABLED
   18320             :     PURE module function getFormat_D1_LK1(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18321             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18322             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_LK1
   18323             : #endif
   18324             :         use pm_kind, only: LKC => LK1
   18325             :         logical(LKC)        , intent(in)                :: mold(:)
   18326             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18327             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18328             :         logical(LK)         , intent(in)    , optional  :: signed
   18329             :         character(:, SK)    , allocatable               :: format
   18330             :     end function
   18331             : #endif
   18332             : 
   18333             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18334             : 
   18335             : #if CK5_ENABLED
   18336             :     PURE module function getFormat_D1_CK5(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18337             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18338             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_CK5
   18339             : #endif
   18340             :         use pm_kind, only: CKC => CK5
   18341             :         complex(CKC)        , intent(in)                :: mold(:)
   18342             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18343             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18344             :         logical(LK)         , intent(in)    , optional  :: signed
   18345             :         character(:, SK)    , allocatable               :: format
   18346             :     end function
   18347             : #endif
   18348             : 
   18349             : #if CK4_ENABLED
   18350             :     PURE module function getFormat_D1_CK4(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18351             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18352             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_CK4
   18353             : #endif
   18354             :         use pm_kind, only: CKC => CK4
   18355             :         complex(CKC)        , intent(in)                :: mold(:)
   18356             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18357             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18358             :         logical(LK)         , intent(in)    , optional  :: signed
   18359             :         character(:, SK)    , allocatable               :: format
   18360             :     end function
   18361             : #endif
   18362             : 
   18363             : #if CK3_ENABLED
   18364             :     PURE module function getFormat_D1_CK3(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18366             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_CK3
   18367             : #endif
   18368             :         use pm_kind, only: CKC => CK3
   18369             :         complex(CKC)        , intent(in)                :: mold(:)
   18370             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18371             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18372             :         logical(LK)         , intent(in)    , optional  :: signed
   18373             :         character(:, SK)    , allocatable               :: format
   18374             :     end function
   18375             : #endif
   18376             : 
   18377             : #if CK2_ENABLED
   18378             :     PURE module function getFormat_D1_CK2(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18379             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18380             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_CK2
   18381             : #endif
   18382             :         use pm_kind, only: CKC => CK2
   18383             :         complex(CKC)        , intent(in)                :: mold(:)
   18384             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18385             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18386             :         logical(LK)         , intent(in)    , optional  :: signed
   18387             :         character(:, SK)    , allocatable               :: format
   18388             :     end function
   18389             : #endif
   18390             : 
   18391             : #if CK1_ENABLED
   18392             :     PURE module function getFormat_D1_CK1(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18393             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18394             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_CK1
   18395             : #endif
   18396             :         use pm_kind, only: CKC => CK1
   18397             :         complex(CKC)        , intent(in)                :: mold(:)
   18398             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18399             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18400             :         logical(LK)         , intent(in)    , optional  :: signed
   18401             :         character(:, SK)    , allocatable               :: format
   18402             :     end function
   18403             : #endif
   18404             : 
   18405             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18406             : 
   18407             : #if RK5_ENABLED
   18408             :     PURE module function getFormat_D1_RK5(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18409             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18410             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_RK5
   18411             : #endif
   18412             :         use pm_kind, only: RKC => RK5
   18413             :         real(RKC)           , intent(in)                :: mold(:)
   18414             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18415             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18416             :         logical(LK)         , intent(in)    , optional  :: signed
   18417             :         character(:, SK)    , allocatable               :: format
   18418             :     end function
   18419             : #endif
   18420             : 
   18421             : #if RK4_ENABLED
   18422             :     PURE module function getFormat_D1_RK4(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18423             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18424             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_RK4
   18425             : #endif
   18426             :         use pm_kind, only: RKC => RK4
   18427             :         real(RKC)           , intent(in)                :: mold(:)
   18428             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18429             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18430             :         logical(LK)         , intent(in)    , optional  :: signed
   18431             :         character(:, SK)    , allocatable               :: format
   18432             :     end function
   18433             : #endif
   18434             : 
   18435             : #if RK3_ENABLED
   18436             :     PURE module function getFormat_D1_RK3(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18437             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18438             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_RK3
   18439             : #endif
   18440             :         use pm_kind, only: RKC => RK3
   18441             :         real(RKC)           , intent(in)                :: mold(:)
   18442             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18443             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18444             :         logical(LK)         , intent(in)    , optional  :: signed
   18445             :         character(:, SK)    , allocatable               :: format
   18446             :     end function
   18447             : #endif
   18448             : 
   18449             : #if RK2_ENABLED
   18450             :     PURE module function getFormat_D1_RK2(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18451             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18452             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_RK2
   18453             : #endif
   18454             :         use pm_kind, only: RKC => RK2
   18455             :         real(RKC)           , intent(in)                :: mold(:)
   18456             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18457             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18458             :         logical(LK)         , intent(in)    , optional  :: signed
   18459             :         character(:, SK)    , allocatable               :: format
   18460             :     end function
   18461             : #endif
   18462             : 
   18463             : #if RK1_ENABLED
   18464             :     PURE module function getFormat_D1_RK1(mold, prefix, ed, sep, deliml, subsep, delimr, count, subcount, width, ndigit, lenexp, signed) result(format)
   18465             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18466             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFormat_D1_RK1
   18467             : #endif
   18468             :         use pm_kind, only: RKC => RK1
   18469             :         real(RKC)           , intent(in)                :: mold(:)
   18470             :         character(*, SK)    , intent(in)    , optional  :: prefix, ed, sep, deliml, subsep, delimr
   18471             :         integer(IK)         , intent(in)    , optional  :: count, subcount, width, ndigit, lenexp
   18472             :         logical(LK)         , intent(in)    , optional  :: signed
   18473             :         character(:, SK)    , allocatable               :: format
   18474             :     end function
   18475             : #endif
   18476             : 
   18477             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18478             : 
   18479             :     end interface
   18480             : 
   18481             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18482             : 
   18483             : !    !>  \brief
   18484             : !    !>  Generate and return the minimum required IO field width for a single value of the same type and kind as the input `mold`,
   18485             : !    !>  such that IO with the output field length does not overflow.
   18486             : !    !>
   18487             : !    !>  \details
   18488             : !    !>  The primary usage of the procedures of this generic interface is
   18489             : !    !>  to use the output of these procedures as the `width` argument of
   18490             : !    !>  [getFormat](@ref pm_io::getFormat).<br>
   18491             : !    !>
   18492             : !    !>  \param[in]  mold    :   The input scalar of
   18493             : !    !>                          <ul>
   18494             : !    !>                              <li>    type `integer` of kind \IKALL,
   18495             : !    !>                              <li>    type `complex` of kind \CKALL,
   18496             : !    !>                              <li>    type `real` of kind \RKALL,
   18497             : !    !>                          </ul>
   18498             : !    !>                          whose kind type parameter is used to infer the minimum IO field length required without the possibility of overflow.
   18499             : !    !>
   18500             : !    !>  \return
   18501             : !    !>  `lenField`          :   The output scalar of type `integer` of default kind \IK containing the minimum IO field length.
   18502             : !    !>
   18503             : !    !>  \interface{getLenFieldMin}
   18504             : !    !>  \code{.F90}
   18505             : !    !>
   18506             : !    !>      use pm_kind, only: IK
   18507             : !    !>      use pm_io, only: getLenFieldMin
   18508             : !    !>      integer(IK) :: lenField
   18509             : !    !>
   18510             : !    !>      lenField = getLenFieldMin(mold)
   18511             : !    !>
   18512             : !    !>  \endcode
   18513             : !    !>
   18514             : !    !>  \note
   18515             : !    !>  For `complex` values, the output `lenField` is the minimum required
   18516             : !    !>  field length for **each (real or imaginary) component** of the complex value.<br>
   18517             : !    !>
   18518             : !    !>  \pure
   18519             : !    !>
   18520             : !    !>  \elemental
   18521             : !    !>
   18522             : !    !>  \see
   18523             : !    !>  [display_type](@ref pm_io::display_type)<br>
   18524             : !    !>  [getFormat](@ref pm_io::getFormat)<br>
   18525             : !    !>  [getFormat](@ref pm_io::getFormat)<br>
   18526             : !    !>
   18527             : !    !>  \example{getLenFieldMin}
   18528             : !    !>  \include{lineno} example/pm_io/getLenFieldMin/main.F90
   18529             : !    !>  \compilef{getLenFieldMin}
   18530             : !    !>  \output{getLenFieldMin}
   18531             : !    !>  \include{lineno} example/pm_io/getLenFieldMin/main.out.F90
   18532             : !    !>
   18533             : !    !>  \test
   18534             : !    !>  [test_pm_io](@ref test_pm_io)
   18535             : !    !>
   18536             : !    !>  \bug
   18537             : !    !>  \status \unresolved
   18538             : !    !>  \source \ifort{2021.8.0 20221119}
   18539             : !    !>  \desc
   18540             : !    !>  The \ifort{2021.8.0 20221119} cannot run the following function call within the implementation of the procedures,
   18541             : !    !>  \code{.F90}
   18542             : !    !>      getCountDigit(range(mold))
   18543             : !    !>  \endcode
   18544             : !    !>  yielding the following error,<br>
   18545             : !    !>  \code{.sh}
   18546             : !    !>      forrtl: severe (174): SIGSEGV, segmentation fault occurred
   18547             : !    !>      image              PC                Routine            Line        Source
   18548             : !    !>      libpthread-2.33.s  00001550E3A9C1F0  Unknown               Unknown  Unknown
   18549             : !    !>      libparamonte_fort  00001550E810D8B4  pm_mathnumsys_MP_         137  pm_mathNumSys@routines.inc.F90
   18550             : !    !>      libparamonte_fort  00001550E764778D  pm_io_MP_get          83  pm_io@routines.inc.F90
   18551             : !    !>      main.exe           000000000040CBE9  MAIN__                     83  main.F90
   18552             : !    !>      main.exe           000000000040938D  Unknown               Unknown  Unknown
   18553             : !    !>      libc-2.33.so       00001550E38BD565  __libc_start_main     Unknown  Unknown
   18554             : !    !>      main.exe           00000000004092AE  Unknown               Unknown  Unknown
   18555             : !    !>  \endcode
   18556             : !    !>  \remedy
   18557             : !    !>  For now, `range(mold)` is saved in a variable and then passed to the function `getCountDigit()`.<br>
   18558             : !    !>
   18559             : !    !>  \todo
   18560             : !    !>  \pmed
   18561             : !    !>  A new interface for computing the maximum field length without redundant blanks for a specific given input **value** or collection of values should be added.<br>
   18562             : !    !>
   18563             : !    !>  \finmain{getLenFieldMin}
   18564             : !    !>
   18565             : !    !>  \author
   18566             : !    !>  \AmirShahmoradi, Oct 16, 2009, 2:47 AM, Michigan
   18567             : !    interface getLenFieldMin
   18568             : !
   18569             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18570             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18571             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18572             : !
   18573             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18574             : !
   18575             : !
   18576             : !#if IK5_ENABLED
   18577             : !    pure elemental module function getLenFieldMin_D0_IK5(mold) result(lenField)
   18578             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18579             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_IK5
   18580             : !#endif
   18581             : !        use pm_kind, only: IKC => IK5
   18582             : !        integer(IKC)    , intent(in)    :: mold
   18583             : !        integer(IK)                     :: lenField
   18584             : !    end function
   18585             : !#endif
   18586             : !
   18587             : !#if IK4_ENABLED
   18588             : !    pure elemental module function getLenFieldMin_D0_IK4(mold) result(lenField)
   18589             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18590             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_IK4
   18591             : !#endif
   18592             : !        use pm_kind, only: IKC => IK4
   18593             : !        integer(IKC)    , intent(in)    :: mold
   18594             : !        integer(IK)                     :: lenField
   18595             : !    end function
   18596             : !#endif
   18597             : !
   18598             : !#if IK3_ENABLED
   18599             : !    pure elemental module function getLenFieldMin_D0_IK3(mold) result(lenField)
   18600             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18601             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_IK3
   18602             : !#endif
   18603             : !        use pm_kind, only: IKC => IK3
   18604             : !        integer(IKC)    , intent(in)    :: mold
   18605             : !        integer(IK)                     :: lenField
   18606             : !    end function
   18607             : !#endif
   18608             : !
   18609             : !#if IK2_ENABLED
   18610             : !    pure elemental module function getLenFieldMin_D0_IK2(mold) result(lenField)
   18611             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18612             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_IK2
   18613             : !#endif
   18614             : !        use pm_kind, only: IKC => IK2
   18615             : !        integer(IKC)    , intent(in)    :: mold
   18616             : !        integer(IK)                     :: lenField
   18617             : !    end function
   18618             : !#endif
   18619             : !
   18620             : !#if IK1_ENABLED
   18621             : !    pure elemental module function getLenFieldMin_D0_IK1(mold) result(lenField)
   18622             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18623             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_IK1
   18624             : !#endif
   18625             : !        use pm_kind, only: IKC => IK1
   18626             : !        integer(IKC)    , intent(in)    :: mold
   18627             : !        integer(IK)                     :: lenField
   18628             : !    end function
   18629             : !#endif
   18630             : !
   18631             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18632             : !
   18633             : !#if CK5_ENABLED
   18634             : !    pure elemental module function getLenFieldMin_D0_CK5(mold) result(lenField)
   18635             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18636             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_CK5
   18637             : !#endif
   18638             : !        use pm_kind, only: CKC => CK5
   18639             : !        complex(CKC)    , intent(in)    :: mold
   18640             : !        integer(IK)                     :: lenField
   18641             : !    end function
   18642             : !#endif
   18643             : !
   18644             : !#if CK4_ENABLED
   18645             : !    pure elemental module function getLenFieldMin_D0_CK4(mold) result(lenField)
   18646             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18647             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_CK4
   18648             : !#endif
   18649             : !        use pm_kind, only: CKC => CK4
   18650             : !        complex(CKC)    , intent(in)    :: mold
   18651             : !        integer(IK)                     :: lenField
   18652             : !    end function
   18653             : !#endif
   18654             : !
   18655             : !#if CK3_ENABLED
   18656             : !    pure elemental module function getLenFieldMin_D0_CK3(mold) result(lenField)
   18657             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18658             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_CK3
   18659             : !#endif
   18660             : !        use pm_kind, only: CKC => CK3
   18661             : !        complex(CKC)    , intent(in)    :: mold
   18662             : !        integer(IK)                     :: lenField
   18663             : !    end function
   18664             : !#endif
   18665             : !
   18666             : !#if CK2_ENABLED
   18667             : !    pure elemental module function getLenFieldMin_D0_CK2(mold) result(lenField)
   18668             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18669             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_CK2
   18670             : !#endif
   18671             : !        use pm_kind, only: CKC => CK2
   18672             : !        complex(CKC)    , intent(in)    :: mold
   18673             : !        integer(IK)                     :: lenField
   18674             : !    end function
   18675             : !#endif
   18676             : !
   18677             : !#if CK1_ENABLED
   18678             : !    pure elemental module function getLenFieldMin_D0_CK1(mold) result(lenField)
   18679             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18680             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_CK1
   18681             : !#endif
   18682             : !        use pm_kind, only: CKC => CK1
   18683             : !        complex(CKC)    , intent(in)    :: mold
   18684             : !        integer(IK)                     :: lenField
   18685             : !    end function
   18686             : !#endif
   18687             : !
   18688             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18689             : !
   18690             : !#if RK5_ENABLED
   18691             : !    pure elemental module function getLenFieldMin_D0_RK5(mold) result(lenField)
   18692             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18693             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_RK5
   18694             : !#endif
   18695             : !        use pm_kind, only: RKC => RK5
   18696             : !        real(RKC)       , intent(in)    :: mold
   18697             : !        integer(IK)                     :: lenField
   18698             : !    end function
   18699             : !#endif
   18700             : !
   18701             : !#if RK4_ENABLED
   18702             : !    pure elemental module function getLenFieldMin_D0_RK4(mold) result(lenField)
   18703             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18704             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_RK4
   18705             : !#endif
   18706             : !        use pm_kind, only: RKC => RK4
   18707             : !        real(RKC)       , intent(in)    :: mold
   18708             : !        integer(IK)                     :: lenField
   18709             : !    end function
   18710             : !#endif
   18711             : !
   18712             : !#if RK3_ENABLED
   18713             : !    pure elemental module function getLenFieldMin_D0_RK3(mold) result(lenField)
   18714             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18715             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_RK3
   18716             : !#endif
   18717             : !        use pm_kind, only: RKC => RK3
   18718             : !        real(RKC)       , intent(in)    :: mold
   18719             : !        integer(IK)                     :: lenField
   18720             : !    end function
   18721             : !#endif
   18722             : !
   18723             : !#if RK2_ENABLED
   18724             : !    pure elemental module function getLenFieldMin_D0_RK2(mold) result(lenField)
   18725             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18726             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_RK2
   18727             : !#endif
   18728             : !        use pm_kind, only: RKC => RK2
   18729             : !        real(RKC)       , intent(in)    :: mold
   18730             : !        integer(IK)                     :: lenField
   18731             : !    end function
   18732             : !#endif
   18733             : !
   18734             : !#if RK1_ENABLED
   18735             : !    pure elemental module function getLenFieldMin_D0_RK1(mold) result(lenField)
   18736             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18737             : !        !DEC$ ATTRIBUTES DLLEXPORT :: getLenFieldMin_D0_RK1
   18738             : !#endif
   18739             : !        use pm_kind, only: RKC => RK1
   18740             : !        real(RKC)       , intent(in)    :: mold
   18741             : !        integer(IK)                     :: lenField
   18742             : !    end function
   18743             : !#endif
   18744             : !
   18745             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18746             : !
   18747             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18748             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18749             : !    !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18750             : !
   18751             : !    end interface
   18752             : !
   18753             : !!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18754             : 
   18755             : contains
   18756             : 
   18757             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18758             : 
   18759             : !    !>  \brief
   18760             : !    !>  Set the output optional arguments `iostat, iomsg` (if present) to their corresponding input values `stat, msg`,
   18761             : !    !>  or if `iostat` is missing, call the `error stop msg` statement.
   18762             : !    !>
   18763             : !    !>  \param[in]     stat    :   The input scalar `integer` of default kind \IK.<br>
   18764             : !    !>                             A non-zero value implies the occurrence of an error.<br>
   18765             : !    !>                             Non-zero values are returned by all intrinsic Fortran IO statements (`open()`, `close()`, `inquire()`, `read()`, `write()`) if an IO error occurs.
   18766             : !    !>  \param[in]     msg     :   The input scalar `character` of default kind \SK representing the contents of the output argument `iomsg`.<br>
   18767             : !    !>                             If the output argument `iostat` is missing and `stat` is non-zero, then `msg` will be passed to the `error stop` statement.
   18768             : !    !>  \param[out]    iostat  :   The output scalar `integer` of default kind \IK that, if present, is set to the input `stat`.<br>
   18769             : !    !>                             (**optional**. If missing and `stat` is non-zero, then the program halts by calling `error stop msg`.)
   18770             : !    !>  \param[inout]  iomsg   :   The input/output scalar `character` of default kind \SK.<br>
   18771             : !    !>                             <ol>
   18772             : !    !>                                 <li>    If `iomsg` is present and `stat` is non-zero, it is set to the input `msg` on return.<br>
   18773             : !    !>                                 <li>    If `iomsg` is present and `stat` is zero, the input contents of `iomsg` will not change on return.<br>
   18774             : !    !>                             </ol>
   18775             : !    !>                             (**optional**. The presence of the output `iomsg` is relevant only if `iostat` is also present.)
   18776             : !    !>
   18777             : !    !>  \interface{setStatIO}
   18778             : !    !>  \code{.F90}
   18779             : !    !>
   18780             : !    !>      use pm_io, only: setStatIO
   18781             : !    !>
   18782             : !    !>      ioFailed = setStatIO(stat, msg, iostat = iostat, iomsg = iomsg)
   18783             : !    !>
   18784             : !    !>  \endcode
   18785             : !    !>
   18786             : !    !>  \note
   18787             : !    !>  This procedure is primarily intended for handling of IO errors within the parent module ([pm_io](@ref pm_io)).
   18788             : !    !>
   18789             : !    !>  \see
   18790             : !    !>  [setFileClosed](@ref setFileClosed)<br>
   18791             : !    !>  [getCountRecord](@ref getCountRecord)<br>
   18792             : !    !>  [getCountRecordLeft](@ref getCountRecordLeft)<br>
   18793             : !    !>  [setRecordFrom](@ref setRecordFrom)<br>
   18794             : !    !>  [setContentsFrom](@ref setContentsFrom)
   18795             : !    !>
   18796             : !    !>  \test
   18797             : !    !>  [test_pm_io](@ref test_pm_io)
   18798             : !    !>
   18799             : !    !>  \finmain{setStatIO}
   18800             : !    !>
   18801             : !    !>  \author
   18802             : !    !>  \AmirShahmoradi, Tuesday March 7, 2017, 2:22 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   18803             : !    pure subroutine setStatIO(stat, msg, iostat, iomsg)
   18804             : !#if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18805             : !        !DEC$ ATTRIBUTES DLLEXPORT :: setStatIO
   18806             : !#endif
   18807             : !        integer(IK)     , intent(in)                :: stat
   18808             : !        character(*, SK), intent(in)                :: msg
   18809             : !        integer(IK)     , intent(out)   , optional  :: iostat
   18810             : !        character(*, SK), intent(inout) , optional  :: iomsg
   18811             : !        if (present(iostat)) then
   18812             : !            iostat = stat
   18813             : !            if (present(iomsg)) iomsg = msg
   18814             : !        else
   18815             : !            if (stat /= 0_IK) error stop SK_"FATAL RUNTIME ERROR: " // trim(adjustl(msg))
   18816             : !        end if
   18817             : !    end subroutine
   18818             : 
   18819             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18820             : 
   18821           0 :     pure function isValidAccess(value) result(isValid)
   18822             :         character(*, SK)    , intent(in)    :: value
   18823             :         logical(LK)                         :: isValid
   18824           0 :         isValid = logical(value == SK_"sequential" .or. value == SK_"direct" .or. value == SK_"stream", LK)
   18825           0 :     end function
   18826             : 
   18827             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18828             : 
   18829           0 :     pure function isValidAction(value) result(isValid)
   18830             :         character(*, SK)    , intent(in)    :: value
   18831             :         logical(LK)                         :: isValid
   18832           0 :         isValid = logical(value == SK_"readwrite" .or. value == SK_"read" .or. value == SK_"write", LK)
   18833           0 :     end function
   18834             : 
   18835             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18836             : 
   18837           0 :     pure function isValidAsynchronous(value) result(isValid)
   18838             :         character(*, SK)    , intent(in)    :: value
   18839             :         logical(LK)                         :: isValid
   18840           0 :         isValid = logical(value == SK_"no" .or. value == SK_"yes", LK)
   18841           0 :     end function
   18842             : 
   18843             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18844             : 
   18845           0 :     pure function isValidBlank(value) result(isValid)
   18846             :         character(*, SK)    , intent(in)    :: value
   18847             :         logical(LK)                         :: isValid
   18848           0 :         isValid = logical(value == SK_"null" .or. value == SK_"zero", LK)
   18849           0 :     end function
   18850             : 
   18851             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18852             : 
   18853           0 :     pure function isValidDecimal(value) result(isValid)
   18854             :         character(*, SK)    , intent(in)    :: value
   18855             :         logical(LK)                         :: isValid
   18856           0 :         isValid = logical(value == SK_"point" .or. value == SK_"comma", LK)
   18857           0 :     end function
   18858             : 
   18859             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18860             : 
   18861           0 :     pure function isValidDelim(value) result(isValid)
   18862             :         character(*, SK)    , intent(in)    :: value
   18863             :         logical(LK)                         :: isValid
   18864           0 :         isValid = logical(value == SK_"none" .or. value == SK_"apostrophe" .or. value == SK_"quote", LK)
   18865           0 :     end function
   18866             : 
   18867             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18868             : 
   18869           0 :     pure function isValidEncoding(value) result(isValid)
   18870             :         character(*, SK)    , intent(in)    :: value
   18871             :         logical(LK)                         :: isValid
   18872           0 :         isValid = logical(value == SK_"default" .or. value == SK_"utf-8", LK)
   18873           0 :     end function
   18874             : 
   18875             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18876             : 
   18877           0 :     pure function isValidForm(value) result(isValid)
   18878             :         character(*, SK)    , intent(in)    :: value
   18879             :         logical(LK)                         :: isValid
   18880           0 :         isValid = logical(value == SK_"formatted" .or. value == SK_"unformatted", LK)
   18881           0 :     end function
   18882             : 
   18883             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18884             : 
   18885           0 :     pure function isValidPad(value) result(isValid)
   18886             :         character(*, SK)    , intent(in)    :: value
   18887             :         logical(LK)                         :: isValid
   18888           0 :         isValid = logical(value == SK_"yes" .or. value == SK_"no", LK)
   18889           0 :     end function
   18890             : 
   18891             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18892             : 
   18893           0 :     pure function isValidPosition(value) result(isValid)
   18894             :         character(*, SK)    , intent(in)    :: value
   18895             :         logical(LK)                         :: isValid
   18896           0 :         isValid = logical(value == SK_"asis" .or. value == SK_"rewind" .or. value == SK_"append", LK)
   18897           0 :     end function
   18898             : 
   18899             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18900             : 
   18901           0 :     pure function isValidRecl(value) result(isValid)
   18902             :         integer(IK)         , intent(in)    :: value
   18903             :         logical(LK)                         :: isValid
   18904           0 :         isValid = logical(value > 0_IK, LK)
   18905           0 :     end function
   18906             : 
   18907             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18908             : 
   18909           0 :     pure function isValidRound(value) result(isValid)
   18910             :         character(*, SK)    , intent(in)    :: value
   18911             :         logical(LK)                         :: isValid
   18912           0 :         isValid = logical(value == SK_"processor_defined" .or. value == SK_"compatible" .or. value == SK_"nearest" .or. value == SK_"zero" .or. value == SK_"down" .or. value == SK_"up", LK)
   18913           0 :     end function
   18914             : 
   18915             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18916             : 
   18917           0 :     pure function isValidSign(value) result(isValid)
   18918             :         character(*, SK)    , intent(in)    :: value
   18919             :         logical(LK)                         :: isValid
   18920           0 :         isValid = logical(value == SK_"processor_defined" .or. value == SK_"suppress" .or. value == SK_"plus", LK)
   18921           0 :     end function
   18922             : 
   18923             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18924             : 
   18925          67 :     pure function isValidStatus(value) result(isValid)
   18926             :         character(*, SK)    , intent(in)    :: value
   18927             :         logical(LK)                         :: isValid
   18928          67 :         isValid = logical(value == SK_"unknown" .or. value == SK_"scratch" .or. value == SK_"replace" .or. value == SK_"new" .or. value == SK_"old", LK)
   18929          67 :     end function
   18930             : 
   18931             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18932             : 
   18933             :     !>  \brief
   18934             :     !>  Generate and return `.true.` if the input unit corresponds to one of the processor
   18935             :     !>  preconnected units: `output_unit`, `input_unit`, `error_unit`, otherwise return `.false.`.
   18936             :     !>
   18937             :     !>  \param[in]  unit    :   The input scalar of type `integer` of default kind \IK representing the unit number to be tested.
   18938             :     !>
   18939             :     !>  \return
   18940             :     !>  `preconnected`      :   The output scalar of type `logical` of default kind \LK representing that is `.true.` if and only if
   18941             :     !>                          the input unit corresponds to one of the preconnected units by the processor.
   18942             :     !>
   18943             :     !>  \interface{isPreconnected}
   18944             :     !>  \code{.F90}
   18945             :     !>
   18946             :     !>      use pm_kind, only: IK
   18947             :     !>      use pm_io, only: isPreconnected
   18948             :     !>      logical(LK) :: preconnected
   18949             :     !>      integer(IK) :: unit
   18950             :     !>
   18951             :     !>      preconnected = isPreconnected(unit)
   18952             :     !>
   18953             :     !>  \endcode
   18954             :     !>
   18955             :     !>  \pure
   18956             :     !>
   18957             :     !>  \elemental
   18958             :     !>
   18959             :     !>  \remark
   18960             :     !>  If no unit is connected to the input `file`, a value of `-1` will be returned.
   18961             :     !>
   18962             :     !>  \remark
   18963             :     !>  This procedure is primarily useful for bypassing the existing bug in
   18964             :     !>  Intel Fortran compiler with the `newunit` specifier of the `open` statement.
   18965             :     !>
   18966             :     !>  \see
   18967             :     !>  [getFileUnit](@ref pm_io::getFileUnit)<br>
   18968             :     !>
   18969             :     !>  \example{isPreconnected}
   18970             :     !>  \include{lineno} example/pm_io/isPreconnected/main.F90
   18971             :     !>  \compilef{isPreconnected}
   18972             :     !>  \output{isPreconnected}
   18973             :     !>  \include{lineno} example/pm_io/isPreconnected/main.out.F90
   18974             :     !>
   18975             :     !>  \test
   18976             :     !>  [test_pm_io](@ref test_pm_io)
   18977             :     !>
   18978             :     !>  \finmain{isPreconnected}
   18979             :     !>
   18980             :     !>  \author
   18981             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   18982           4 :     pure elemental function isPreconnected(unit) result(preconnected)
   18983             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   18984             :         !DEC$ ATTRIBUTES DLLEXPORT :: isPreconnected
   18985             : #endif
   18986             :         use iso_fortran_env, only: output_unit, input_unit, error_unit
   18987             :         integer(IK)     , intent(in)    :: unit
   18988             :         logical(LK)                     :: preconnected
   18989           4 :         preconnected = logical(unit == int(output_unit, IK) .or. unit == int(input_unit, IK) .or. unit == int(error_unit, IK), LK)
   18990           4 :     end function isPreconnected
   18991             : 
   18992             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   18993             : 
   18994             :     !>  \brief
   18995             :     !>  Generate and return a random new unconnected file unit number that could be assigned to the `unit` specifier of
   18996             :     !>  the Fortran intrinsic `open` statement. Optionally, return the unit number of a file whose path is given by the
   18997             :     !>  input argument `file`.
   18998             :     !>
   18999             :     !>  \details
   19000             :     !>  The behavior of this generic interface is fully dictated by the Fortran intrinsic `inquire()` when the optional argument `file` is present.<br>
   19001             :     !>  For example, if the optional argument is present but no unit is connected to the file or the file does not exists, the `unit` returned is `-1`.<br>
   19002             :     !>
   19003             :     !>  \param[in]  file    :   The input scalar of type `character` of default kind \SK representing the path of the
   19004             :     !>                          file whose unit is to be returned, if it is already opened.<br>
   19005             :     !>                          (**optional**, if missing, a new unit number, that is not connected to any file, will be returned.)
   19006             :     !>
   19007             :     !>  \return
   19008             :     !>  `unit`              :   The output scalar of type `integer` of default kind \IK containing<br>
   19009             :     !>                          <ol>
   19010             :     !>                              <li>    the unit number of the input `file` if it exists and is already connected.<br>
   19011             :     !>                              <li>    the value `-1` if the input argument `file` is present but does not exist or is not already connected.<br>
   19012             :     !>                              <li>    a valid random unit number that is not connected to any existing file, if the input argument `file` is missing.<br>
   19013             :     !>                          </ol>
   19014             :     !>
   19015             :     !>  \interface{getFileUnit}
   19016             :     !>  \code{.F90}
   19017             :     !>
   19018             :     !>      use pm_io, only: getFileUnit
   19019             :     !>
   19020             :     !>      unit = getFileUnit()
   19021             :     !>      unit = getFileUnit(file)
   19022             :     !>
   19023             :     !>  \endcode
   19024             :     !>
   19025             :     !>  \warning
   19026             :     !>  As per the Fortran standard, if no unit is connected to the input `file`, a value of `-1` will be returned.<br>
   19027             :     !>
   19028             :     !>  \impure
   19029             :     !>
   19030             :     !>  \elemental
   19031             :     !>
   19032             :     !>  \remark
   19033             :     !>  This procedure is primarily useful for bypassing the existing bug in the
   19034             :     !>  Intel Fortran compiler with the `newunit` specifier of the `open` statement.<br>
   19035             :     !>
   19036             :     !>  \see
   19037             :     !>  [isPreconnected](@ref pm_io::isPreconnected)<br>
   19038             :     !>
   19039             :     !>  \example{getFileUnit}
   19040             :     !>  \include{lineno} example/pm_io/getFileUnit/main.F90
   19041             :     !>  \compilef{getFileUnit}
   19042             :     !>  \output{getFileUnit}
   19043             :     !>  \include{lineno} example/pm_io/getFileUnit/main.out.F90
   19044             :     !>
   19045             :     !>  \test
   19046             :     !>  [test_pm_io](@ref test_pm_io)
   19047             :     !>
   19048             :     !>  \finmain{getFileUnit}
   19049             :     !>
   19050             :     !>  \author
   19051             :     !>  \AmirShahmoradi, Tuesday March 7, 2017, 3:50 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
   19052          84 :     impure elemental function getFileUnit(file) result(unit)
   19053             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   19054             :         !DEC$ ATTRIBUTES DLLEXPORT :: getFileUnit
   19055             : #endif
   19056             :         character(*, SK), intent(in), optional  :: file
   19057             :         integer(IK)                             :: unit
   19058             :         logical(LK)                             :: opened
   19059          84 :         if (present(file)) then
   19060           4 :             inquire(file = file, number = unit)
   19061             :         else
   19062          80 :             unit = 100_IK
   19063           0 :             do
   19064          80 :                 inquire(unit = unit, opened = opened)
   19065          80 :                 if (.not. opened) return
   19066           0 :                 unit = unit + 1_IK
   19067             :             end do
   19068             :         end if
   19069           4 :     end function
   19070             : 
   19071             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   19072             : 
   19073             : end module pm_io ! LCOV_EXCL_LINE

ParaMonte: Parallel Monte Carlo and Machine Learning Library 
The Computational Data Science Lab
© Copyright 2012 - 2024