LCOV - code coverage report
Current view: top level - src/common - string_utilities.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:936074a) Lines: 26.4 % 643 170
Test Date: 2025-12-04 06:27:48 Functions: 40.8 % 76 31

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2025 CP2K developers group <https://cp2k.org>                                   !
       4              : !                                                                                                  !
       5              : !   SPDX-License-Identifier: GPL-2.0-or-later                                                      !
       6              : !--------------------------------------------------------------------------------------------------!
       7              : 
       8              : ! **************************************************************************************************
       9              : !> \brief Utilities for string manipulations
      10              : !> \par History
      11              : !>      Adapted compress and uppercase for use in CP2K (JGH)
      12              : !>      string_to_integer and integer_to_string added (06.02.2001, MK)
      13              : !>      Cleaned (04.01.2004,MK)
      14              : !> \author MK & JGH
      15              : ! **************************************************************************************************
      16              : MODULE string_utilities
      17              : 
      18              :    USE ISO_C_BINDING,                   ONLY: C_CHAR,&
      19              :                                               C_NULL_CHAR
      20              :    USE kinds,                           ONLY: default_blank_character
      21              : 
      22              :    IMPLICIT NONE
      23              : 
      24              :    PRIVATE
      25              : 
      26              :    CHARACTER(LEN=1), PARAMETER :: backslash = ACHAR(92)
      27              :    CHARACTER(LEN=1), PARAMETER :: star = '*'
      28              :    CHARACTER(LEN=1), PARAMETER :: question = '?'
      29              :    CHARACTER(LEN=1), PARAMETER :: newline = ACHAR(10)
      30              : 
      31              :    PUBLIC :: ascii_to_string, &
      32              :              compress, &
      33              :              integer_to_string, &
      34              :              is_whitespace, &
      35              :              lowercase, &
      36              :              remove_word, &
      37              :              s2a, a2s, &
      38              :              str_comp, &
      39              :              string_to_ascii, &
      40              :              strip_control_codes, &
      41              :              substitute_special_xml_tokens, &
      42              :              typo_match, &
      43              :              uppercase, &
      44              :              xstring, &
      45              :              strlcpy_c2f
      46              : 
      47              :    PUBLIC :: newline
      48              : 
      49              :    INTERFACE s2a
      50              :       MODULE PROCEDURE s2a_1, s2a_2, s2a_3, s2a_4, s2a_5, s2a_6, s2a_7, s2a_8, s2a_9, &
      51              :          s2a_10, s2a_11, s2a_12, s2a_13, s2a_14, s2a_15, s2a_16, s2a_17, s2a_18, s2a_19, &
      52              :          s2a_20, s2a_21, s2a_22, s2a_23, s2a_24, s2a_25, s2a_26, s2a_27, s2a_28, s2a_29, &
      53              :          s2a_30, s2a_31, s2a_32, s2a_33, s2a_34, s2a_35, s2a_36, s2a_37, s2a_38, s2a_39, &
      54              :          s2a_40, s2a_41, s2a_42, s2a_43, s2a_44, s2a_45, s2a_46, s2a_47, s2a_48, s2a_49, &
      55              :          s2a_50, s2a_51, s2a_52, s2a_53, s2a_54, s2a_55, s2a_56, s2a_57, s2a_58, s2a_59 ! should be clear how to add more
      56              :    END INTERFACE
      57              : 
      58              : CONTAINS
      59              : 
      60              : ! **************************************************************************************************
      61              : !> \brief returns a non-zero positive value if typo_string equals string apart from a few typos.
      62              : !>     It is case sensitive, apart from typos.
      63              : !> \param string ...
      64              : !> \param typo_string ...
      65              : !> \return ...
      66              : !> \par History
      67              : !>      02.2006 created [Joost VandeVondele]
      68              : !>      09.2020 switch to Levenshtein distance [Ole Schuett]
      69              : ! **************************************************************************************************
      70            0 :    ELEMENTAL FUNCTION typo_match(string, typo_string) RESULT(match)
      71              :       CHARACTER(LEN=*), INTENT(IN)                       :: string, typo_string
      72              :       INTEGER                                            :: match
      73              : 
      74            0 :       match = MAX(0, 100 - levenshtein_distance(string, typo_string))
      75              : 
      76            0 :    END FUNCTION typo_match
      77              : 
      78              : ! **************************************************************************************************
      79              : !> \brief Compute the Levenshtein edit distance between the two given strings.
      80              : !> \param s source string
      81              : !> \param t target string
      82              : !> \return edit distance
      83              : !> \author Ole Schuett
      84              : ! **************************************************************************************************
      85            0 :    PURE FUNCTION levenshtein_distance(s, t) RESULT(distance)
      86              : 
      87              :       CHARACTER(LEN=*), INTENT(IN)                       :: s, t
      88              :       INTEGER                                            :: distance
      89              : 
      90              :       INTEGER                                            :: i, j, m, n, substitution_cost
      91            0 :       INTEGER, ALLOCATABLE, DIMENSION(:, :)              :: d
      92              : 
      93            0 :       m = LEN_TRIM(s)
      94            0 :       n = LEN_TRIM(t)
      95              : 
      96              :       ! distance between the first i characters of s and the first j characters of t
      97            0 :       ALLOCATE (d(0:m, 0:n))
      98            0 :       d(:, :) = 0
      99              : 
     100              :       ! source prefixes can be transformed into empty string by dropping all characters
     101            0 :       DO i = 1, m
     102            0 :          d(i, 0) = i
     103              :       END DO
     104              : 
     105              :       ! target prefixes can be reached from empty source prefix by inserting every character
     106            0 :       DO j = 1, n
     107            0 :          d(0, j) = j
     108              :       END DO
     109              : 
     110            0 :       DO j = 1, n
     111            0 :          DO i = 1, m
     112            0 :             IF (s(i:i) == t(j:j)) THEN
     113              :                substitution_cost = 0
     114              :             ELSE
     115            0 :                substitution_cost = 1
     116              :             END IF
     117              :             d(i, j) = MIN(d(i - 1, j) + 1, &                    ! deletion
     118              :                           d(i, j - 1) + 1, &                    ! insertion
     119            0 :                           d(i - 1, j - 1) + substitution_cost)  ! substitution
     120              :          END DO
     121              :       END DO
     122              : 
     123            0 :       distance = d(m, n)
     124              : 
     125            0 :    END FUNCTION levenshtein_distance
     126              : 
     127              : ! **************************************************************************************************
     128              : !> \brief Converts a character-array into a string
     129              : !> \param array ...
     130              : !> \return ...
     131              : !> \par History
     132              : !>      10.2013 created [Ole Schuett]
     133              : ! **************************************************************************************************
     134           21 :    PURE FUNCTION a2s(array) RESULT(string)
     135              :       CHARACTER, DIMENSION(:), INTENT(IN)                :: array
     136              :       CHARACTER(LEN=SIZE(array))                         :: string
     137              : 
     138              :       INTEGER                                            :: i
     139              : 
     140         3109 :       DO i = 1, SIZE(array)
     141         3109 :          string(i:i) = array(i)
     142              :       END DO
     143           21 :    END FUNCTION a2s
     144              : 
     145              : ! **************************************************************************************************
     146              : !> \brief converts a bunch of strings of different length to an array of
     147              : !>        strings of the same length
     148              : !> \param s1 ...
     149              : !> \return ...
     150              : !> \par History
     151              : !>      11.2004 created [Joost VandeVondele ]
     152              : !> \note
     153              : !>     can be used instead of the illegal (/"12","1234"/) generating
     154              : !>     s2a("12","1234")==(/"12  ","1234"/)
     155              : ! **************************************************************************************************
     156      2379672 :    PURE FUNCTION s2a_1(s1) RESULT(a)
     157              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1
     158              :       CHARACTER(LEN=1000), DIMENSION(1)                  :: a
     159              : 
     160      2379672 :       a(1) = s1
     161      2379672 :    END FUNCTION s2a_1
     162              :    ! **************************************************************************************************
     163              : ! **************************************************************************************************
     164              : !> \brief ...
     165              : !> \param s1 ...
     166              : !> \param s2 ...
     167              : !> \return ...
     168              : ! **************************************************************************************************
     169     12030440 :    PURE FUNCTION s2a_2(s1, s2) RESULT(a)
     170              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2
     171              :       CHARACTER(LEN=1000), DIMENSION(2)                  :: a
     172              : 
     173      6015220 :       a(1) = s1; a(2) = s2
     174      6015220 :    END FUNCTION s2a_2
     175              :    ! **************************************************************************************************
     176              : ! **************************************************************************************************
     177              : !> \brief ...
     178              : !> \param s1 ...
     179              : !> \param s2 ...
     180              : !> \param s3 ...
     181              : !> \return ...
     182              : ! **************************************************************************************************
     183     41273564 :    PURE FUNCTION s2a_3(s1, s2, s3) RESULT(a)
     184              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3
     185              :       CHARACTER(LEN=1000), DIMENSION(3)                  :: a
     186              : 
     187     20636782 :       a(1) = s1; a(2) = s2; a(3) = s3
     188     20636782 :    END FUNCTION s2a_3
     189              :    ! **************************************************************************************************
     190              : ! **************************************************************************************************
     191              : !> \brief ...
     192              : !> \param s1 ...
     193              : !> \param s2 ...
     194              : !> \param s3 ...
     195              : !> \param s4 ...
     196              : !> \return ...
     197              : ! **************************************************************************************************
     198      6512908 :    PURE FUNCTION s2a_4(s1, s2, s3, s4) RESULT(a)
     199              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4
     200              :       CHARACTER(LEN=1000), DIMENSION(4)                  :: a
     201              : 
     202      3256454 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4
     203      3256454 :    END FUNCTION s2a_4
     204              :    ! **************************************************************************************************
     205              : ! **************************************************************************************************
     206              : !> \brief ...
     207              : !> \param s1 ...
     208              : !> \param s2 ...
     209              : !> \param s3 ...
     210              : !> \param s4 ...
     211              : !> \param s5 ...
     212              : !> \return ...
     213              : ! **************************************************************************************************
     214      4185876 :    PURE FUNCTION s2a_5(s1, s2, s3, s4, s5) RESULT(a)
     215              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5
     216              :       CHARACTER(LEN=1000), DIMENSION(5)                  :: a
     217              : 
     218      2092938 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
     219      2092938 :    END FUNCTION s2a_5
     220              :    ! **************************************************************************************************
     221              : ! **************************************************************************************************
     222              : !> \brief ...
     223              : !> \param s1 ...
     224              : !> \param s2 ...
     225              : !> \param s3 ...
     226              : !> \param s4 ...
     227              : !> \param s5 ...
     228              : !> \param s6 ...
     229              : !> \return ...
     230              : ! **************************************************************************************************
     231      2678408 :    PURE FUNCTION s2a_6(s1, s2, s3, s4, s5, s6) RESULT(a)
     232              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6
     233              :       CHARACTER(LEN=1000), DIMENSION(6)                  :: a
     234              : 
     235      1339204 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6
     236      1339204 :    END FUNCTION s2a_6
     237              :    ! **************************************************************************************************
     238              : ! **************************************************************************************************
     239              : !> \brief ...
     240              : !> \param s1 ...
     241              : !> \param s2 ...
     242              : !> \param s3 ...
     243              : !> \param s4 ...
     244              : !> \param s5 ...
     245              : !> \param s6 ...
     246              : !> \param s7 ...
     247              : !> \return ...
     248              : ! **************************************************************************************************
     249     14833824 :    PURE FUNCTION s2a_7(s1, s2, s3, s4, s5, s6, s7) RESULT(a)
     250              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7
     251              :       CHARACTER(LEN=1000), DIMENSION(7)                  :: a
     252              : 
     253      7416912 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     254      7416912 :    END FUNCTION s2a_7
     255              :    ! **************************************************************************************************
     256              : ! **************************************************************************************************
     257              : !> \brief ...
     258              : !> \param s1 ...
     259              : !> \param s2 ...
     260              : !> \param s3 ...
     261              : !> \param s4 ...
     262              : !> \param s5 ...
     263              : !> \param s6 ...
     264              : !> \param s7 ...
     265              : !> \param s8 ...
     266              : !> \return ...
     267              : ! **************************************************************************************************
     268       905272 :    PURE FUNCTION s2a_8(s1, s2, s3, s4, s5, s6, s7, s8) RESULT(a)
     269              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8
     270              :       CHARACTER(LEN=1000), DIMENSION(8)                  :: a
     271              : 
     272       452636 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     273       452636 :       a(8) = s8
     274       452636 :    END FUNCTION s2a_8
     275              :    ! **************************************************************************************************
     276              : ! **************************************************************************************************
     277              : !> \brief ...
     278              : !> \param s1 ...
     279              : !> \param s2 ...
     280              : !> \param s3 ...
     281              : !> \param s4 ...
     282              : !> \param s5 ...
     283              : !> \param s6 ...
     284              : !> \param s7 ...
     285              : !> \param s8 ...
     286              : !> \param s9 ...
     287              : !> \return ...
     288              : ! **************************************************************************************************
     289      1263500 :    PURE FUNCTION s2a_9(s1, s2, s3, s4, s5, s6, s7, s8, s9) RESULT(a)
     290              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9
     291              :       CHARACTER(LEN=1000), DIMENSION(9)                  :: a
     292              : 
     293       631750 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     294       631750 :       a(8) = s8; a(9) = s9
     295       631750 :    END FUNCTION s2a_9
     296              :    ! **************************************************************************************************
     297              : ! **************************************************************************************************
     298              : !> \brief ...
     299              : !> \param s1 ...
     300              : !> \param s2 ...
     301              : !> \param s3 ...
     302              : !> \param s4 ...
     303              : !> \param s5 ...
     304              : !> \param s6 ...
     305              : !> \param s7 ...
     306              : !> \param s8 ...
     307              : !> \param s9 ...
     308              : !> \param s10 ...
     309              : !> \return ...
     310              : ! **************************************************************************************************
     311       334608 :    PURE FUNCTION s2a_10(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10) RESULT(a)
     312              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10
     313              :       CHARACTER(LEN=1000), DIMENSION(10)                 :: a
     314              : 
     315       167304 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     316       167304 :       a(8) = s8; a(9) = s9; a(10) = s10
     317       167304 :    END FUNCTION s2a_10
     318              :    ! **************************************************************************************************
     319              : ! **************************************************************************************************
     320              : !> \brief ...
     321              : !> \param s1 ...
     322              : !> \param s2 ...
     323              : !> \param s3 ...
     324              : !> \param s4 ...
     325              : !> \param s5 ...
     326              : !> \param s6 ...
     327              : !> \param s7 ...
     328              : !> \param s8 ...
     329              : !> \param s9 ...
     330              : !> \param s10 ...
     331              : !> \param s11 ...
     332              : !> \return ...
     333              : ! **************************************************************************************************
     334        37136 :    PURE FUNCTION s2a_11(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11) RESULT(a)
     335              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     336              :                                                             s11
     337              :       CHARACTER(LEN=1000), DIMENSION(11)                 :: a
     338              : 
     339        18568 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     340        18568 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11
     341        18568 :    END FUNCTION s2a_11
     342              :    ! **************************************************************************************************
     343              : ! **************************************************************************************************
     344              : !> \brief ...
     345              : !> \param s1 ...
     346              : !> \param s2 ...
     347              : !> \param s3 ...
     348              : !> \param s4 ...
     349              : !> \param s5 ...
     350              : !> \param s6 ...
     351              : !> \param s7 ...
     352              : !> \param s8 ...
     353              : !> \param s9 ...
     354              : !> \param s10 ...
     355              : !> \param s11 ...
     356              : !> \param s12 ...
     357              : !> \return ...
     358              : ! **************************************************************************************************
     359            0 :    PURE FUNCTION s2a_12(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12) RESULT(a)
     360              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     361              :                                                             s11, s12
     362              :       CHARACTER(LEN=1000), DIMENSION(12)                 :: a
     363              : 
     364            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     365            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12
     366            0 :    END FUNCTION s2a_12
     367              :    ! **************************************************************************************************
     368              : ! **************************************************************************************************
     369              : !> \brief ...
     370              : !> \param s1 ...
     371              : !> \param s2 ...
     372              : !> \param s3 ...
     373              : !> \param s4 ...
     374              : !> \param s5 ...
     375              : !> \param s6 ...
     376              : !> \param s7 ...
     377              : !> \param s8 ...
     378              : !> \param s9 ...
     379              : !> \param s10 ...
     380              : !> \param s11 ...
     381              : !> \param s12 ...
     382              : !> \param s13 ...
     383              : !> \return ...
     384              : ! **************************************************************************************************
     385       371680 :    PURE FUNCTION s2a_13(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13) RESULT(a)
     386              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     387              :                                                             s11, s12, s13
     388              :       CHARACTER(LEN=1000), DIMENSION(13)                 :: a
     389              : 
     390       185840 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     391       185840 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13
     392       185840 :    END FUNCTION s2a_13
     393              :    ! **************************************************************************************************
     394              : ! **************************************************************************************************
     395              : !> \brief ...
     396              : !> \param s1 ...
     397              : !> \param s2 ...
     398              : !> \param s3 ...
     399              : !> \param s4 ...
     400              : !> \param s5 ...
     401              : !> \param s6 ...
     402              : !> \param s7 ...
     403              : !> \param s8 ...
     404              : !> \param s9 ...
     405              : !> \param s10 ...
     406              : !> \param s11 ...
     407              : !> \param s12 ...
     408              : !> \param s13 ...
     409              : !> \param s14 ...
     410              : !> \return ...
     411              : ! **************************************************************************************************
     412       278736 :    PURE FUNCTION s2a_14(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14) RESULT(a)
     413              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     414              :                                                             s11, s12, s13, s14
     415              :       CHARACTER(LEN=1000), DIMENSION(14)                 :: a
     416              : 
     417       139368 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     418       139368 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     419       139368 :    END FUNCTION s2a_14
     420              :    ! **************************************************************************************************
     421              : ! **************************************************************************************************
     422              : !> \brief ...
     423              : !> \param s1 ...
     424              : !> \param s2 ...
     425              : !> \param s3 ...
     426              : !> \param s4 ...
     427              : !> \param s5 ...
     428              : !> \param s6 ...
     429              : !> \param s7 ...
     430              : !> \param s8 ...
     431              : !> \param s9 ...
     432              : !> \param s10 ...
     433              : !> \param s11 ...
     434              : !> \param s12 ...
     435              : !> \param s13 ...
     436              : !> \param s14 ...
     437              : !> \param s15 ...
     438              : !> \return ...
     439              : ! **************************************************************************************************
     440        18568 :    PURE FUNCTION s2a_15(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15) RESULT(a)
     441              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     442              :                                                             s11, s12, s13, s14, s15
     443              :       CHARACTER(LEN=1000), DIMENSION(15)                 :: a
     444              : 
     445         9284 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     446         9284 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     447         9284 :       a(15) = s15
     448         9284 :    END FUNCTION s2a_15
     449              :    ! **************************************************************************************************
     450              : ! **************************************************************************************************
     451              : !> \brief ...
     452              : !> \param s1 ...
     453              : !> \param s2 ...
     454              : !> \param s3 ...
     455              : !> \param s4 ...
     456              : !> \param s5 ...
     457              : !> \param s6 ...
     458              : !> \param s7 ...
     459              : !> \param s8 ...
     460              : !> \param s9 ...
     461              : !> \param s10 ...
     462              : !> \param s11 ...
     463              : !> \param s12 ...
     464              : !> \param s13 ...
     465              : !> \param s14 ...
     466              : !> \param s15 ...
     467              : !> \param s16 ...
     468              : !> \return ...
     469              : ! **************************************************************************************************
     470            0 :    PURE FUNCTION s2a_16(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     471            0 :                         s16) RESULT(a)
     472              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     473              :                                                             s11, s12, s13, s14, s15, s16
     474              :       CHARACTER(LEN=1000), DIMENSION(16)                 :: a
     475              : 
     476            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     477            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     478            0 :       a(15) = s15; a(16) = s16
     479            0 :    END FUNCTION s2a_16
     480              :    ! **************************************************************************************************
     481              : ! **************************************************************************************************
     482              : !> \brief ...
     483              : !> \param s1 ...
     484              : !> \param s2 ...
     485              : !> \param s3 ...
     486              : !> \param s4 ...
     487              : !> \param s5 ...
     488              : !> \param s6 ...
     489              : !> \param s7 ...
     490              : !> \param s8 ...
     491              : !> \param s9 ...
     492              : !> \param s10 ...
     493              : !> \param s11 ...
     494              : !> \param s12 ...
     495              : !> \param s13 ...
     496              : !> \param s14 ...
     497              : !> \param s15 ...
     498              : !> \param s16 ...
     499              : !> \param s17 ...
     500              : !> \return ...
     501              : ! **************************************************************************************************
     502        18600 :    PURE FUNCTION s2a_17(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     503        37200 :                         s16, s17) RESULT(a)
     504              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     505              :                                                             s11, s12, s13, s14, s15, s16, s17
     506              :       CHARACTER(LEN=1000), DIMENSION(17)                 :: a
     507              : 
     508        18600 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     509        18600 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     510        18600 :       a(15) = s15; a(16) = s16; a(17) = s17
     511        18600 :    END FUNCTION s2a_17
     512              :    ! **************************************************************************************************
     513              : ! **************************************************************************************************
     514              : !> \brief ...
     515              : !> \param s1 ...
     516              : !> \param s2 ...
     517              : !> \param s3 ...
     518              : !> \param s4 ...
     519              : !> \param s5 ...
     520              : !> \param s6 ...
     521              : !> \param s7 ...
     522              : !> \param s8 ...
     523              : !> \param s9 ...
     524              : !> \param s10 ...
     525              : !> \param s11 ...
     526              : !> \param s12 ...
     527              : !> \param s13 ...
     528              : !> \param s14 ...
     529              : !> \param s15 ...
     530              : !> \param s16 ...
     531              : !> \param s17 ...
     532              : !> \param s18 ...
     533              : !> \return ...
     534              : ! **************************************************************************************************
     535            0 :    PURE FUNCTION s2a_18(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     536            0 :                         s16, s17, s18) RESULT(a)
     537              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     538              :                                                             s11, s12, s13, s14, s15, s16, s17, s18
     539              :       CHARACTER(LEN=1000), DIMENSION(18)                 :: a
     540              : 
     541            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     542            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     543            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18
     544            0 :    END FUNCTION s2a_18
     545              :    ! **************************************************************************************************
     546              : ! **************************************************************************************************
     547              : !> \brief ...
     548              : !> \param s1 ...
     549              : !> \param s2 ...
     550              : !> \param s3 ...
     551              : !> \param s4 ...
     552              : !> \param s5 ...
     553              : !> \param s6 ...
     554              : !> \param s7 ...
     555              : !> \param s8 ...
     556              : !> \param s9 ...
     557              : !> \param s10 ...
     558              : !> \param s11 ...
     559              : !> \param s12 ...
     560              : !> \param s13 ...
     561              : !> \param s14 ...
     562              : !> \param s15 ...
     563              : !> \param s16 ...
     564              : !> \param s17 ...
     565              : !> \param s18 ...
     566              : !> \param s19 ...
     567              : !> \return ...
     568              : ! **************************************************************************************************
     569            0 :    PURE FUNCTION s2a_19(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     570            0 :                         s16, s17, s18, s19) RESULT(a)
     571              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     572              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     573              :                                                             s18, s19
     574              :       CHARACTER(LEN=1000), DIMENSION(19)                 :: a
     575              : 
     576            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     577            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     578            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19
     579            0 :    END FUNCTION s2a_19
     580              :    ! **************************************************************************************************
     581              : ! **************************************************************************************************
     582              : !> \brief ...
     583              : !> \param s1 ...
     584              : !> \param s2 ...
     585              : !> \param s3 ...
     586              : !> \param s4 ...
     587              : !> \param s5 ...
     588              : !> \param s6 ...
     589              : !> \param s7 ...
     590              : !> \param s8 ...
     591              : !> \param s9 ...
     592              : !> \param s10 ...
     593              : !> \param s11 ...
     594              : !> \param s12 ...
     595              : !> \param s13 ...
     596              : !> \param s14 ...
     597              : !> \param s15 ...
     598              : !> \param s16 ...
     599              : !> \param s17 ...
     600              : !> \param s18 ...
     601              : !> \param s19 ...
     602              : !> \param s20 ...
     603              : !> \return ...
     604              : ! **************************************************************************************************
     605            0 :    PURE FUNCTION s2a_20(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     606            0 :                         s16, s17, s18, s19, s20) RESULT(a)
     607              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     608              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     609              :                                                             s18, s19, s20
     610              :       CHARACTER(LEN=1000), DIMENSION(20)                 :: a
     611              : 
     612            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     613            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     614            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     615            0 :    END FUNCTION s2a_20
     616              :    ! **************************************************************************************************
     617              : ! **************************************************************************************************
     618              : !> \brief ...
     619              : !> \param s1 ...
     620              : !> \param s2 ...
     621              : !> \param s3 ...
     622              : !> \param s4 ...
     623              : !> \param s5 ...
     624              : !> \param s6 ...
     625              : !> \param s7 ...
     626              : !> \param s8 ...
     627              : !> \param s9 ...
     628              : !> \param s10 ...
     629              : !> \param s11 ...
     630              : !> \param s12 ...
     631              : !> \param s13 ...
     632              : !> \param s14 ...
     633              : !> \param s15 ...
     634              : !> \param s16 ...
     635              : !> \param s17 ...
     636              : !> \param s18 ...
     637              : !> \param s19 ...
     638              : !> \param s20 ...
     639              : !> \param s21 ...
     640              : !> \return ...
     641              : ! **************************************************************************************************
     642            0 :    PURE FUNCTION s2a_21(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     643            0 :                         s16, s17, s18, s19, s20, s21) RESULT(a)
     644              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     645              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     646              :                                                             s18, s19, s20, s21
     647              :       CHARACTER(LEN=1000), DIMENSION(21)                 :: a
     648              : 
     649            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     650            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     651            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     652            0 :       a(21) = s21
     653            0 :    END FUNCTION s2a_21
     654              :    ! **************************************************************************************************
     655              : ! **************************************************************************************************
     656              : !> \brief ...
     657              : !> \param s1 ...
     658              : !> \param s2 ...
     659              : !> \param s3 ...
     660              : !> \param s4 ...
     661              : !> \param s5 ...
     662              : !> \param s6 ...
     663              : !> \param s7 ...
     664              : !> \param s8 ...
     665              : !> \param s9 ...
     666              : !> \param s10 ...
     667              : !> \param s11 ...
     668              : !> \param s12 ...
     669              : !> \param s13 ...
     670              : !> \param s14 ...
     671              : !> \param s15 ...
     672              : !> \param s16 ...
     673              : !> \param s17 ...
     674              : !> \param s18 ...
     675              : !> \param s19 ...
     676              : !> \param s20 ...
     677              : !> \param s21 ...
     678              : !> \param s22 ...
     679              : !> \return ...
     680              : ! **************************************************************************************************
     681            0 :    PURE FUNCTION s2a_22(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     682            0 :                         s16, s17, s18, s19, s20, s21, s22) RESULT(a)
     683              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     684              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     685              :                                                             s18, s19, s20, s21, s22
     686              :       CHARACTER(LEN=1000), DIMENSION(22)                 :: a
     687              : 
     688            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     689            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     690            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     691            0 :       a(21) = s21; a(22) = s22
     692            0 :    END FUNCTION s2a_22
     693              :    ! **************************************************************************************************
     694              : ! **************************************************************************************************
     695              : !> \brief ...
     696              : !> \param s1 ...
     697              : !> \param s2 ...
     698              : !> \param s3 ...
     699              : !> \param s4 ...
     700              : !> \param s5 ...
     701              : !> \param s6 ...
     702              : !> \param s7 ...
     703              : !> \param s8 ...
     704              : !> \param s9 ...
     705              : !> \param s10 ...
     706              : !> \param s11 ...
     707              : !> \param s12 ...
     708              : !> \param s13 ...
     709              : !> \param s14 ...
     710              : !> \param s15 ...
     711              : !> \param s16 ...
     712              : !> \param s17 ...
     713              : !> \param s18 ...
     714              : !> \param s19 ...
     715              : !> \param s20 ...
     716              : !> \param s21 ...
     717              : !> \param s22 ...
     718              : !> \param s23 ...
     719              : !> \return ...
     720              : ! **************************************************************************************************
     721            0 :    PURE FUNCTION s2a_23(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     722            0 :                         s16, s17, s18, s19, s20, s21, s22, s23) RESULT(a)
     723              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     724              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     725              :                                                             s18, s19, s20, s21, s22, s23
     726              :       CHARACTER(LEN=1000), DIMENSION(23)                 :: a
     727              : 
     728            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     729            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     730            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     731            0 :       a(21) = s21; a(22) = s22; a(23) = s23
     732            0 :    END FUNCTION s2a_23
     733              :    ! **************************************************************************************************
     734              : ! **************************************************************************************************
     735              : !> \brief ...
     736              : !> \param s1 ...
     737              : !> \param s2 ...
     738              : !> \param s3 ...
     739              : !> \param s4 ...
     740              : !> \param s5 ...
     741              : !> \param s6 ...
     742              : !> \param s7 ...
     743              : !> \param s8 ...
     744              : !> \param s9 ...
     745              : !> \param s10 ...
     746              : !> \param s11 ...
     747              : !> \param s12 ...
     748              : !> \param s13 ...
     749              : !> \param s14 ...
     750              : !> \param s15 ...
     751              : !> \param s16 ...
     752              : !> \param s17 ...
     753              : !> \param s18 ...
     754              : !> \param s19 ...
     755              : !> \param s20 ...
     756              : !> \param s21 ...
     757              : !> \param s22 ...
     758              : !> \param s23 ...
     759              : !> \param s24 ...
     760              : !> \return ...
     761              : ! **************************************************************************************************
     762            0 :    PURE FUNCTION s2a_24(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     763            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24) RESULT(a)
     764              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     765              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     766              :                                                             s18, s19, s20, s21, s22, s23, s24
     767              :       CHARACTER(LEN=1000), DIMENSION(24)                 :: a
     768              : 
     769            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     770            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     771            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     772            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24
     773            0 :    END FUNCTION s2a_24
     774              :    ! **************************************************************************************************
     775              : ! **************************************************************************************************
     776              : !> \brief ...
     777              : !> \param s1 ...
     778              : !> \param s2 ...
     779              : !> \param s3 ...
     780              : !> \param s4 ...
     781              : !> \param s5 ...
     782              : !> \param s6 ...
     783              : !> \param s7 ...
     784              : !> \param s8 ...
     785              : !> \param s9 ...
     786              : !> \param s10 ...
     787              : !> \param s11 ...
     788              : !> \param s12 ...
     789              : !> \param s13 ...
     790              : !> \param s14 ...
     791              : !> \param s15 ...
     792              : !> \param s16 ...
     793              : !> \param s17 ...
     794              : !> \param s18 ...
     795              : !> \param s19 ...
     796              : !> \param s20 ...
     797              : !> \param s21 ...
     798              : !> \param s22 ...
     799              : !> \param s23 ...
     800              : !> \param s24 ...
     801              : !> \param s25 ...
     802              : !> \return ...
     803              : ! **************************************************************************************************
     804            0 :    PURE FUNCTION s2a_25(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     805            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25) RESULT(a)
     806              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     807              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     808              :                                                             s18, s19, s20, s21, s22, s23, s24, s25
     809              :       CHARACTER(LEN=1000), DIMENSION(25)                 :: a
     810              : 
     811            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     812            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     813            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     814            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
     815            0 :    END FUNCTION s2a_25
     816              :    ! **************************************************************************************************
     817              : ! **************************************************************************************************
     818              : !> \brief ...
     819              : !> \param s1 ...
     820              : !> \param s2 ...
     821              : !> \param s3 ...
     822              : !> \param s4 ...
     823              : !> \param s5 ...
     824              : !> \param s6 ...
     825              : !> \param s7 ...
     826              : !> \param s8 ...
     827              : !> \param s9 ...
     828              : !> \param s10 ...
     829              : !> \param s11 ...
     830              : !> \param s12 ...
     831              : !> \param s13 ...
     832              : !> \param s14 ...
     833              : !> \param s15 ...
     834              : !> \param s16 ...
     835              : !> \param s17 ...
     836              : !> \param s18 ...
     837              : !> \param s19 ...
     838              : !> \param s20 ...
     839              : !> \param s21 ...
     840              : !> \param s22 ...
     841              : !> \param s23 ...
     842              : !> \param s24 ...
     843              : !> \param s25 ...
     844              : !> \param s26 ...
     845              : !> \return ...
     846              : ! **************************************************************************************************
     847        30686 :    PURE FUNCTION s2a_26(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     848        61372 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26) RESULT(a)
     849              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     850              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     851              :                                                             s18, s19, s20, s21, s22, s23, s24, &
     852              :                                                             s25, s26
     853              :       CHARACTER(LEN=1000), DIMENSION(26)                 :: a
     854              : 
     855        30686 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     856        30686 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     857        30686 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     858        30686 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
     859        30686 :    END FUNCTION s2a_26
     860              :    ! **************************************************************************************************
     861              : ! **************************************************************************************************
     862              : !> \brief ...
     863              : !> \param s1 ...
     864              : !> \param s2 ...
     865              : !> \param s3 ...
     866              : !> \param s4 ...
     867              : !> \param s5 ...
     868              : !> \param s6 ...
     869              : !> \param s7 ...
     870              : !> \param s8 ...
     871              : !> \param s9 ...
     872              : !> \param s10 ...
     873              : !> \param s11 ...
     874              : !> \param s12 ...
     875              : !> \param s13 ...
     876              : !> \param s14 ...
     877              : !> \param s15 ...
     878              : !> \param s16 ...
     879              : !> \param s17 ...
     880              : !> \param s18 ...
     881              : !> \param s19 ...
     882              : !> \param s20 ...
     883              : !> \param s21 ...
     884              : !> \param s22 ...
     885              : !> \param s23 ...
     886              : !> \param s24 ...
     887              : !> \param s25 ...
     888              : !> \param s26 ...
     889              : !> \param s27 ...
     890              : !> \return ...
     891              : ! **************************************************************************************************
     892            0 :    PURE FUNCTION s2a_27(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     893            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27) RESULT(a)
     894              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     895              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     896              :                                                             s18, s19, s20, s21, s22, s23, s24, &
     897              :                                                             s25, s26, s27
     898              :       CHARACTER(LEN=1000), DIMENSION(27)                 :: a
     899              : 
     900            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     901            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     902            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     903            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
     904            0 :       a(27) = s27
     905            0 :    END FUNCTION s2a_27
     906              :    ! **************************************************************************************************
     907              : ! **************************************************************************************************
     908              : !> \brief ...
     909              : !> \param s1 ...
     910              : !> \param s2 ...
     911              : !> \param s3 ...
     912              : !> \param s4 ...
     913              : !> \param s5 ...
     914              : !> \param s6 ...
     915              : !> \param s7 ...
     916              : !> \param s8 ...
     917              : !> \param s9 ...
     918              : !> \param s10 ...
     919              : !> \param s11 ...
     920              : !> \param s12 ...
     921              : !> \param s13 ...
     922              : !> \param s14 ...
     923              : !> \param s15 ...
     924              : !> \param s16 ...
     925              : !> \param s17 ...
     926              : !> \param s18 ...
     927              : !> \param s19 ...
     928              : !> \param s20 ...
     929              : !> \param s21 ...
     930              : !> \param s22 ...
     931              : !> \param s23 ...
     932              : !> \param s24 ...
     933              : !> \param s25 ...
     934              : !> \param s26 ...
     935              : !> \param s27 ...
     936              : !> \param s28 ...
     937              : !> \return ...
     938              : ! **************************************************************************************************
     939            0 :    PURE FUNCTION s2a_28(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     940            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28) RESULT(a)
     941              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     942              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     943              :                                                             s18, s19, s20, s21, s22, s23, s24, &
     944              :                                                             s25, s26, s27, s28
     945              :       CHARACTER(LEN=1000), DIMENSION(28)                 :: a
     946              : 
     947            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     948            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     949            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     950            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
     951            0 :       a(27) = s27; a(28) = s28
     952            0 :    END FUNCTION s2a_28
     953              :    ! **************************************************************************************************
     954              : ! **************************************************************************************************
     955              : !> \brief ...
     956              : !> \param s1 ...
     957              : !> \param s2 ...
     958              : !> \param s3 ...
     959              : !> \param s4 ...
     960              : !> \param s5 ...
     961              : !> \param s6 ...
     962              : !> \param s7 ...
     963              : !> \param s8 ...
     964              : !> \param s9 ...
     965              : !> \param s10 ...
     966              : !> \param s11 ...
     967              : !> \param s12 ...
     968              : !> \param s13 ...
     969              : !> \param s14 ...
     970              : !> \param s15 ...
     971              : !> \param s16 ...
     972              : !> \param s17 ...
     973              : !> \param s18 ...
     974              : !> \param s19 ...
     975              : !> \param s20 ...
     976              : !> \param s21 ...
     977              : !> \param s22 ...
     978              : !> \param s23 ...
     979              : !> \param s24 ...
     980              : !> \param s25 ...
     981              : !> \param s26 ...
     982              : !> \param s27 ...
     983              : !> \param s28 ...
     984              : !> \param s29 ...
     985              : !> \return ...
     986              : ! **************************************************************************************************
     987            0 :    PURE FUNCTION s2a_29(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
     988            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29) RESULT(a)
     989              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
     990              :                                                             s11, s12, s13, s14, s15, s16, s17, &
     991              :                                                             s18, s19, s20, s21, s22, s23, s24, &
     992              :                                                             s25, s26, s27, s28, s29
     993              :       CHARACTER(LEN=1000), DIMENSION(29)                 :: a
     994              : 
     995            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
     996            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
     997            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
     998            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
     999            0 :       a(27) = s27; a(28) = s28; a(29) = s29
    1000            0 :    END FUNCTION s2a_29
    1001              :    ! **************************************************************************************************
    1002              : ! **************************************************************************************************
    1003              : !> \brief ...
    1004              : !> \param s1 ...
    1005              : !> \param s2 ...
    1006              : !> \param s3 ...
    1007              : !> \param s4 ...
    1008              : !> \param s5 ...
    1009              : !> \param s6 ...
    1010              : !> \param s7 ...
    1011              : !> \param s8 ...
    1012              : !> \param s9 ...
    1013              : !> \param s10 ...
    1014              : !> \param s11 ...
    1015              : !> \param s12 ...
    1016              : !> \param s13 ...
    1017              : !> \param s14 ...
    1018              : !> \param s15 ...
    1019              : !> \param s16 ...
    1020              : !> \param s17 ...
    1021              : !> \param s18 ...
    1022              : !> \param s19 ...
    1023              : !> \param s20 ...
    1024              : !> \param s21 ...
    1025              : !> \param s22 ...
    1026              : !> \param s23 ...
    1027              : !> \param s24 ...
    1028              : !> \param s25 ...
    1029              : !> \param s26 ...
    1030              : !> \param s27 ...
    1031              : !> \param s28 ...
    1032              : !> \param s29 ...
    1033              : !> \param s30 ...
    1034              : !> \return ...
    1035              : ! **************************************************************************************************
    1036            0 :    PURE FUNCTION s2a_30(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1037            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30) RESULT(a)
    1038              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1039              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1040              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1041              :                                                             s25, s26, s27, s28, s29, s30
    1042              :       CHARACTER(LEN=1000), DIMENSION(30)                 :: a
    1043              : 
    1044            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1045            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1046            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1047            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1048            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1049            0 :    END FUNCTION s2a_30
    1050              :    ! **************************************************************************************************
    1051              : ! **************************************************************************************************
    1052              : !> \brief ...
    1053              : !> \param s1 ...
    1054              : !> \param s2 ...
    1055              : !> \param s3 ...
    1056              : !> \param s4 ...
    1057              : !> \param s5 ...
    1058              : !> \param s6 ...
    1059              : !> \param s7 ...
    1060              : !> \param s8 ...
    1061              : !> \param s9 ...
    1062              : !> \param s10 ...
    1063              : !> \param s11 ...
    1064              : !> \param s12 ...
    1065              : !> \param s13 ...
    1066              : !> \param s14 ...
    1067              : !> \param s15 ...
    1068              : !> \param s16 ...
    1069              : !> \param s17 ...
    1070              : !> \param s18 ...
    1071              : !> \param s19 ...
    1072              : !> \param s20 ...
    1073              : !> \param s21 ...
    1074              : !> \param s22 ...
    1075              : !> \param s23 ...
    1076              : !> \param s24 ...
    1077              : !> \param s25 ...
    1078              : !> \param s26 ...
    1079              : !> \param s27 ...
    1080              : !> \param s28 ...
    1081              : !> \param s29 ...
    1082              : !> \param s30 ...
    1083              : !> \param s31 ...
    1084              : !> \return ...
    1085              : ! **************************************************************************************************
    1086            0 :    PURE FUNCTION s2a_31(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1087            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31) RESULT(a)
    1088              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1089              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1090              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1091              :                                                             s25, s26, s27, s28, s29, s30, s31
    1092              :       CHARACTER(LEN=1000), DIMENSION(31)                 :: a
    1093              : 
    1094            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1095            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1096            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1097            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1098            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31
    1099            0 :    END FUNCTION s2a_31
    1100              :    ! **************************************************************************************************
    1101              : ! **************************************************************************************************
    1102              : !> \brief ...
    1103              : !> \param s1 ...
    1104              : !> \param s2 ...
    1105              : !> \param s3 ...
    1106              : !> \param s4 ...
    1107              : !> \param s5 ...
    1108              : !> \param s6 ...
    1109              : !> \param s7 ...
    1110              : !> \param s8 ...
    1111              : !> \param s9 ...
    1112              : !> \param s10 ...
    1113              : !> \param s11 ...
    1114              : !> \param s12 ...
    1115              : !> \param s13 ...
    1116              : !> \param s14 ...
    1117              : !> \param s15 ...
    1118              : !> \param s16 ...
    1119              : !> \param s17 ...
    1120              : !> \param s18 ...
    1121              : !> \param s19 ...
    1122              : !> \param s20 ...
    1123              : !> \param s21 ...
    1124              : !> \param s22 ...
    1125              : !> \param s23 ...
    1126              : !> \param s24 ...
    1127              : !> \param s25 ...
    1128              : !> \param s26 ...
    1129              : !> \param s27 ...
    1130              : !> \param s28 ...
    1131              : !> \param s29 ...
    1132              : !> \param s30 ...
    1133              : !> \param s31 ...
    1134              : !> \param s32 ...
    1135              : !> \return ...
    1136              : ! **************************************************************************************************
    1137            0 :    PURE FUNCTION s2a_32(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1138            0 :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32) RESULT(a)
    1139              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1140              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1141              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1142              :                                                             s25, s26, s27, s28, s29, s30, s31, s32
    1143              :       CHARACTER(LEN=1000), DIMENSION(32)                 :: a
    1144              : 
    1145            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1146            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1147            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1148            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1149            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1150            0 :    END FUNCTION s2a_32
    1151              :    ! **************************************************************************************************
    1152              : ! **************************************************************************************************
    1153              : !> \brief ...
    1154              : !> \param s1 ...
    1155              : !> \param s2 ...
    1156              : !> \param s3 ...
    1157              : !> \param s4 ...
    1158              : !> \param s5 ...
    1159              : !> \param s6 ...
    1160              : !> \param s7 ...
    1161              : !> \param s8 ...
    1162              : !> \param s9 ...
    1163              : !> \param s10 ...
    1164              : !> \param s11 ...
    1165              : !> \param s12 ...
    1166              : !> \param s13 ...
    1167              : !> \param s14 ...
    1168              : !> \param s15 ...
    1169              : !> \param s16 ...
    1170              : !> \param s17 ...
    1171              : !> \param s18 ...
    1172              : !> \param s19 ...
    1173              : !> \param s20 ...
    1174              : !> \param s21 ...
    1175              : !> \param s22 ...
    1176              : !> \param s23 ...
    1177              : !> \param s24 ...
    1178              : !> \param s25 ...
    1179              : !> \param s26 ...
    1180              : !> \param s27 ...
    1181              : !> \param s28 ...
    1182              : !> \param s29 ...
    1183              : !> \param s30 ...
    1184              : !> \param s31 ...
    1185              : !> \param s32 ...
    1186              : !> \param s33 ...
    1187              : !> \return ...
    1188              : ! **************************************************************************************************
    1189            0 :    PURE FUNCTION s2a_33(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1190              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1191            0 :                         s33) RESULT(a)
    1192              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1193              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1194              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1195              :                                                             s25, s26, s27, s28, s29, s30, s31, &
    1196              :                                                             s32, s33
    1197              :       CHARACTER(LEN=1000), DIMENSION(33)                 :: a
    1198              : 
    1199            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1200            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1201            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1202            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1203            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1204            0 :       a(33) = s33
    1205            0 :    END FUNCTION s2a_33
    1206              :    ! **************************************************************************************************
    1207              : ! **************************************************************************************************
    1208              : !> \brief ...
    1209              : !> \param s1 ...
    1210              : !> \param s2 ...
    1211              : !> \param s3 ...
    1212              : !> \param s4 ...
    1213              : !> \param s5 ...
    1214              : !> \param s6 ...
    1215              : !> \param s7 ...
    1216              : !> \param s8 ...
    1217              : !> \param s9 ...
    1218              : !> \param s10 ...
    1219              : !> \param s11 ...
    1220              : !> \param s12 ...
    1221              : !> \param s13 ...
    1222              : !> \param s14 ...
    1223              : !> \param s15 ...
    1224              : !> \param s16 ...
    1225              : !> \param s17 ...
    1226              : !> \param s18 ...
    1227              : !> \param s19 ...
    1228              : !> \param s20 ...
    1229              : !> \param s21 ...
    1230              : !> \param s22 ...
    1231              : !> \param s23 ...
    1232              : !> \param s24 ...
    1233              : !> \param s25 ...
    1234              : !> \param s26 ...
    1235              : !> \param s27 ...
    1236              : !> \param s28 ...
    1237              : !> \param s29 ...
    1238              : !> \param s30 ...
    1239              : !> \param s31 ...
    1240              : !> \param s32 ...
    1241              : !> \param s33 ...
    1242              : !> \param s34 ...
    1243              : !> \return ...
    1244              : ! **************************************************************************************************
    1245            0 :    PURE FUNCTION s2a_34(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1246              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1247            0 :                         s33, s34) RESULT(a)
    1248              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1249              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1250              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1251              :                                                             s25, s26, s27, s28, s29, s30, s31, &
    1252              :                                                             s32, s33, s34
    1253              :       CHARACTER(LEN=1000), DIMENSION(34)                 :: a
    1254              : 
    1255            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1256            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1257            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1258            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1259            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1260            0 :       a(33) = s33; a(34) = s34
    1261            0 :    END FUNCTION s2a_34
    1262              :    ! **************************************************************************************************
    1263              : ! **************************************************************************************************
    1264              : !> \brief ...
    1265              : !> \param s1 ...
    1266              : !> \param s2 ...
    1267              : !> \param s3 ...
    1268              : !> \param s4 ...
    1269              : !> \param s5 ...
    1270              : !> \param s6 ...
    1271              : !> \param s7 ...
    1272              : !> \param s8 ...
    1273              : !> \param s9 ...
    1274              : !> \param s10 ...
    1275              : !> \param s11 ...
    1276              : !> \param s12 ...
    1277              : !> \param s13 ...
    1278              : !> \param s14 ...
    1279              : !> \param s15 ...
    1280              : !> \param s16 ...
    1281              : !> \param s17 ...
    1282              : !> \param s18 ...
    1283              : !> \param s19 ...
    1284              : !> \param s20 ...
    1285              : !> \param s21 ...
    1286              : !> \param s22 ...
    1287              : !> \param s23 ...
    1288              : !> \param s24 ...
    1289              : !> \param s25 ...
    1290              : !> \param s26 ...
    1291              : !> \param s27 ...
    1292              : !> \param s28 ...
    1293              : !> \param s29 ...
    1294              : !> \param s30 ...
    1295              : !> \param s31 ...
    1296              : !> \param s32 ...
    1297              : !> \param s33 ...
    1298              : !> \param s34 ...
    1299              : !> \param s35 ...
    1300              : !> \return ...
    1301              : ! **************************************************************************************************
    1302            0 :    PURE FUNCTION s2a_35(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1303              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1304            0 :                         s33, s34, s35) RESULT(a)
    1305              :       CHARACTER(LEN=*), INTENT(IN)                       :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1306              :                                                             s11, s12, s13, s14, s15, s16, s17, &
    1307              :                                                             s18, s19, s20, s21, s22, s23, s24, &
    1308              :                                                             s25, s26, s27, s28, s29, s30, s31, &
    1309              :                                                             s32, s33, s34, s35
    1310              :       CHARACTER(LEN=1000), DIMENSION(35)                 :: a
    1311              : 
    1312            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1313            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1314            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1315            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1316            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1317            0 :       a(33) = s33; a(34) = s34; a(35) = s35
    1318            0 :    END FUNCTION s2a_35
    1319              :    ! **************************************************************************************************
    1320              : ! **************************************************************************************************
    1321              : !> \brief ...
    1322              : !> \param s1 ...
    1323              : !> \param s2 ...
    1324              : !> \param s3 ...
    1325              : !> \param s4 ...
    1326              : !> \param s5 ...
    1327              : !> \param s6 ...
    1328              : !> \param s7 ...
    1329              : !> \param s8 ...
    1330              : !> \param s9 ...
    1331              : !> \param s10 ...
    1332              : !> \param s11 ...
    1333              : !> \param s12 ...
    1334              : !> \param s13 ...
    1335              : !> \param s14 ...
    1336              : !> \param s15 ...
    1337              : !> \param s16 ...
    1338              : !> \param s17 ...
    1339              : !> \param s18 ...
    1340              : !> \param s19 ...
    1341              : !> \param s20 ...
    1342              : !> \param s21 ...
    1343              : !> \param s22 ...
    1344              : !> \param s23 ...
    1345              : !> \param s24 ...
    1346              : !> \param s25 ...
    1347              : !> \param s26 ...
    1348              : !> \param s27 ...
    1349              : !> \param s28 ...
    1350              : !> \param s29 ...
    1351              : !> \param s30 ...
    1352              : !> \param s31 ...
    1353              : !> \param s32 ...
    1354              : !> \param s33 ...
    1355              : !> \param s34 ...
    1356              : !> \param s35 ...
    1357              : !> \param s36 ...
    1358              : !> \return ...
    1359              : ! **************************************************************************************************
    1360            0 :    PURE FUNCTION s2a_36(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1361              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1362            0 :                         s33, s34, s35, s36) RESULT(a)
    1363              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1364              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1365              :          s33, s34, s35, s36
    1366              :       CHARACTER(LEN=1000), DIMENSION(36)                 :: a
    1367              : 
    1368            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1369            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1370            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1371            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1372            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1373            0 :       a(33) = s33; a(34) = s34; a(35) = s35; a(36) = s36
    1374            0 :    END FUNCTION s2a_36
    1375              :    ! **************************************************************************************************
    1376              : ! **************************************************************************************************
    1377              : !> \brief ...
    1378              : !> \param s1 ...
    1379              : !> \param s2 ...
    1380              : !> \param s3 ...
    1381              : !> \param s4 ...
    1382              : !> \param s5 ...
    1383              : !> \param s6 ...
    1384              : !> \param s7 ...
    1385              : !> \param s8 ...
    1386              : !> \param s9 ...
    1387              : !> \param s10 ...
    1388              : !> \param s11 ...
    1389              : !> \param s12 ...
    1390              : !> \param s13 ...
    1391              : !> \param s14 ...
    1392              : !> \param s15 ...
    1393              : !> \param s16 ...
    1394              : !> \param s17 ...
    1395              : !> \param s18 ...
    1396              : !> \param s19 ...
    1397              : !> \param s20 ...
    1398              : !> \param s21 ...
    1399              : !> \param s22 ...
    1400              : !> \param s23 ...
    1401              : !> \param s24 ...
    1402              : !> \param s25 ...
    1403              : !> \param s26 ...
    1404              : !> \param s27 ...
    1405              : !> \param s28 ...
    1406              : !> \param s29 ...
    1407              : !> \param s30 ...
    1408              : !> \param s31 ...
    1409              : !> \param s32 ...
    1410              : !> \param s33 ...
    1411              : !> \param s34 ...
    1412              : !> \param s35 ...
    1413              : !> \param s36 ...
    1414              : !> \param s37 ...
    1415              : !> \return ...
    1416              : ! **************************************************************************************************
    1417            0 :    PURE FUNCTION s2a_37(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1418              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1419            0 :                         s33, s34, s35, s36, s37) RESULT(a)
    1420              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1421              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1422              :          s33, s34, s35, s36, s37
    1423              :       CHARACTER(LEN=1000), DIMENSION(37)                 :: a
    1424              : 
    1425            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1426            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1427            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1428            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1429            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1430            0 :       a(33) = s33; a(34) = s34; a(35) = s35; a(36) = s36; a(37) = s37
    1431            0 :    END FUNCTION s2a_37
    1432              :    ! **************************************************************************************************
    1433              : ! **************************************************************************************************
    1434              : !> \brief ...
    1435              : !> \param s1 ...
    1436              : !> \param s2 ...
    1437              : !> \param s3 ...
    1438              : !> \param s4 ...
    1439              : !> \param s5 ...
    1440              : !> \param s6 ...
    1441              : !> \param s7 ...
    1442              : !> \param s8 ...
    1443              : !> \param s9 ...
    1444              : !> \param s10 ...
    1445              : !> \param s11 ...
    1446              : !> \param s12 ...
    1447              : !> \param s13 ...
    1448              : !> \param s14 ...
    1449              : !> \param s15 ...
    1450              : !> \param s16 ...
    1451              : !> \param s17 ...
    1452              : !> \param s18 ...
    1453              : !> \param s19 ...
    1454              : !> \param s20 ...
    1455              : !> \param s21 ...
    1456              : !> \param s22 ...
    1457              : !> \param s23 ...
    1458              : !> \param s24 ...
    1459              : !> \param s25 ...
    1460              : !> \param s26 ...
    1461              : !> \param s27 ...
    1462              : !> \param s28 ...
    1463              : !> \param s29 ...
    1464              : !> \param s30 ...
    1465              : !> \param s31 ...
    1466              : !> \param s32 ...
    1467              : !> \param s33 ...
    1468              : !> \param s34 ...
    1469              : !> \param s35 ...
    1470              : !> \param s36 ...
    1471              : !> \param s37 ...
    1472              : !> \param s38 ...
    1473              : !> \return ...
    1474              : ! **************************************************************************************************
    1475            0 :    PURE FUNCTION s2a_38(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1476              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1477            0 :                         s33, s34, s35, s36, s37, s38) RESULT(a)
    1478              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1479              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1480              :          s33, s34, s35, s36, s37, s38
    1481              :       CHARACTER(LEN=1000), DIMENSION(38)                 :: a
    1482              : 
    1483            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1484            0 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1485            0 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1486            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1487            0 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1488            0 :       a(33) = s33; a(34) = s34; a(35) = s35; a(36) = s36; a(37) = s37; a(38) = s38
    1489            0 :    END FUNCTION s2a_38
    1490              :    ! **************************************************************************************************
    1491              : ! **************************************************************************************************
    1492              : !> \brief ...
    1493              : !> \param s1 ...
    1494              : !> \param s2 ...
    1495              : !> \param s3 ...
    1496              : !> \param s4 ...
    1497              : !> \param s5 ...
    1498              : !> \param s6 ...
    1499              : !> \param s7 ...
    1500              : !> \param s8 ...
    1501              : !> \param s9 ...
    1502              : !> \param s10 ...
    1503              : !> \param s11 ...
    1504              : !> \param s12 ...
    1505              : !> \param s13 ...
    1506              : !> \param s14 ...
    1507              : !> \param s15 ...
    1508              : !> \param s16 ...
    1509              : !> \param s17 ...
    1510              : !> \param s18 ...
    1511              : !> \param s19 ...
    1512              : !> \param s20 ...
    1513              : !> \param s21 ...
    1514              : !> \param s22 ...
    1515              : !> \param s23 ...
    1516              : !> \param s24 ...
    1517              : !> \param s25 ...
    1518              : !> \param s26 ...
    1519              : !> \param s27 ...
    1520              : !> \param s28 ...
    1521              : !> \param s29 ...
    1522              : !> \param s30 ...
    1523              : !> \param s31 ...
    1524              : !> \param s32 ...
    1525              : !> \param s33 ...
    1526              : !> \param s34 ...
    1527              : !> \param s35 ...
    1528              : !> \param s36 ...
    1529              : !> \param s37 ...
    1530              : !> \param s38 ...
    1531              : !> \param s39 ...
    1532              : !> \return ...
    1533              : ! **************************************************************************************************
    1534         9284 :    PURE FUNCTION s2a_39(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, &
    1535              :                         s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1536        18568 :                         s33, s34, s35, s36, s37, s38, s39) RESULT(a)
    1537              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1538              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1539              :          s33, s34, s35, s36, s37, s38, s39
    1540              :       CHARACTER(LEN=1000), DIMENSION(39)                 :: a
    1541              : 
    1542         9284 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5; a(6) = s6; a(7) = s7
    1543         9284 :       a(8) = s8; a(9) = s9; a(10) = s10; a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14
    1544         9284 :       a(15) = s15; a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1545         9284 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25; a(26) = s26
    1546         9284 :       a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30; a(31) = s31; a(32) = s32
    1547         9284 :       a(33) = s33; a(34) = s34; a(35) = s35; a(36) = s36; a(37) = s37; a(38) = s38
    1548         9284 :       a(39) = s39
    1549         9284 :    END FUNCTION s2a_39
    1550              : ! **************************************************************************************************
    1551              : !> \brief ...
    1552              : !> \param s1 ...
    1553              : !> \param s2 ...
    1554              : !> \param s3 ...
    1555              : !> \param s4 ...
    1556              : !> \param s5 ...
    1557              : !> \param s6 ...
    1558              : !> \param s7 ...
    1559              : !> \param s8 ...
    1560              : !> \param s9 ...
    1561              : !> \param s10 ...
    1562              : !> \param s11 ...
    1563              : !> \param s12 ...
    1564              : !> \param s13 ...
    1565              : !> \param s14 ...
    1566              : !> \param s15 ...
    1567              : !> \param s16 ...
    1568              : !> \param s17 ...
    1569              : !> \param s18 ...
    1570              : !> \param s19 ...
    1571              : !> \param s20 ...
    1572              : !> \param s21 ...
    1573              : !> \param s22 ...
    1574              : !> \param s23 ...
    1575              : !> \param s24 ...
    1576              : !> \param s25 ...
    1577              : !> \param s26 ...
    1578              : !> \param s27 ...
    1579              : !> \param s28 ...
    1580              : !> \param s29 ...
    1581              : !> \param s30 ...
    1582              : !> \param s31 ...
    1583              : !> \param s32 ...
    1584              : !> \param s33 ...
    1585              : !> \param s34 ...
    1586              : !> \param s35 ...
    1587              : !> \param s36 ...
    1588              : !> \param s37 ...
    1589              : !> \param s38 ...
    1590              : !> \param s39 ...
    1591              : !> \param s40 ...
    1592              : !> \return ...
    1593              : ! **************************************************************************************************
    1594            0 :    PURE FUNCTION s2a_40(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1595              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1596              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1597            0 :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40) RESULT(a)
    1598              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1599              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1600              :          s33, s34, s35, s36, s37, s38, s39, s40
    1601              :       CHARACTER(LEN=1000), DIMENSION(40)                 :: a
    1602              : 
    1603            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1604            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1605            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1606            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1607            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1608            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1609            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1610            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1611            0 :    END FUNCTION s2a_40
    1612              : ! **************************************************************************************************
    1613              : !> \brief ...
    1614              : !> \param s1 ...
    1615              : !> \param s2 ...
    1616              : !> \param s3 ...
    1617              : !> \param s4 ...
    1618              : !> \param s5 ...
    1619              : !> \param s6 ...
    1620              : !> \param s7 ...
    1621              : !> \param s8 ...
    1622              : !> \param s9 ...
    1623              : !> \param s10 ...
    1624              : !> \param s11 ...
    1625              : !> \param s12 ...
    1626              : !> \param s13 ...
    1627              : !> \param s14 ...
    1628              : !> \param s15 ...
    1629              : !> \param s16 ...
    1630              : !> \param s17 ...
    1631              : !> \param s18 ...
    1632              : !> \param s19 ...
    1633              : !> \param s20 ...
    1634              : !> \param s21 ...
    1635              : !> \param s22 ...
    1636              : !> \param s23 ...
    1637              : !> \param s24 ...
    1638              : !> \param s25 ...
    1639              : !> \param s26 ...
    1640              : !> \param s27 ...
    1641              : !> \param s28 ...
    1642              : !> \param s29 ...
    1643              : !> \param s30 ...
    1644              : !> \param s31 ...
    1645              : !> \param s32 ...
    1646              : !> \param s33 ...
    1647              : !> \param s34 ...
    1648              : !> \param s35 ...
    1649              : !> \param s36 ...
    1650              : !> \param s37 ...
    1651              : !> \param s38 ...
    1652              : !> \param s39 ...
    1653              : !> \param s40 ...
    1654              : !> \param s41 ...
    1655              : !> \return ...
    1656              : ! **************************************************************************************************
    1657            0 :    PURE FUNCTION s2a_41(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1658              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1659              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1660              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    1661            0 :                         s41) RESULT(a)
    1662              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1663              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1664              :          s33, s34, s35, s36, s37, s38, s39, s40, s41
    1665              :       CHARACTER(LEN=1000), DIMENSION(41)                 :: a
    1666              : 
    1667            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1668            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1669            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1670            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1671            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1672            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1673            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1674            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1675            0 :       a(41) = s41
    1676            0 :    END FUNCTION s2a_41
    1677              : ! **************************************************************************************************
    1678              : !> \brief ...
    1679              : !> \param s1 ...
    1680              : !> \param s2 ...
    1681              : !> \param s3 ...
    1682              : !> \param s4 ...
    1683              : !> \param s5 ...
    1684              : !> \param s6 ...
    1685              : !> \param s7 ...
    1686              : !> \param s8 ...
    1687              : !> \param s9 ...
    1688              : !> \param s10 ...
    1689              : !> \param s11 ...
    1690              : !> \param s12 ...
    1691              : !> \param s13 ...
    1692              : !> \param s14 ...
    1693              : !> \param s15 ...
    1694              : !> \param s16 ...
    1695              : !> \param s17 ...
    1696              : !> \param s18 ...
    1697              : !> \param s19 ...
    1698              : !> \param s20 ...
    1699              : !> \param s21 ...
    1700              : !> \param s22 ...
    1701              : !> \param s23 ...
    1702              : !> \param s24 ...
    1703              : !> \param s25 ...
    1704              : !> \param s26 ...
    1705              : !> \param s27 ...
    1706              : !> \param s28 ...
    1707              : !> \param s29 ...
    1708              : !> \param s30 ...
    1709              : !> \param s31 ...
    1710              : !> \param s32 ...
    1711              : !> \param s33 ...
    1712              : !> \param s34 ...
    1713              : !> \param s35 ...
    1714              : !> \param s36 ...
    1715              : !> \param s37 ...
    1716              : !> \param s38 ...
    1717              : !> \param s39 ...
    1718              : !> \param s40 ...
    1719              : !> \param s41 ...
    1720              : !> \param s42 ...
    1721              : !> \return ...
    1722              : ! **************************************************************************************************
    1723            0 :    PURE FUNCTION s2a_42(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1724              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1725              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1726              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    1727            0 :                         s41, s42) RESULT(a)
    1728              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1729              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1730              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42
    1731              :       CHARACTER(LEN=1000), DIMENSION(42)                 :: a
    1732              : 
    1733            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1734            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1735            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1736            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1737            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1738            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1739            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1740            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1741            0 :       a(41) = s41; a(42) = s42
    1742            0 :    END FUNCTION s2a_42
    1743              : ! **************************************************************************************************
    1744              : !> \brief ...
    1745              : !> \param s1 ...
    1746              : !> \param s2 ...
    1747              : !> \param s3 ...
    1748              : !> \param s4 ...
    1749              : !> \param s5 ...
    1750              : !> \param s6 ...
    1751              : !> \param s7 ...
    1752              : !> \param s8 ...
    1753              : !> \param s9 ...
    1754              : !> \param s10 ...
    1755              : !> \param s11 ...
    1756              : !> \param s12 ...
    1757              : !> \param s13 ...
    1758              : !> \param s14 ...
    1759              : !> \param s15 ...
    1760              : !> \param s16 ...
    1761              : !> \param s17 ...
    1762              : !> \param s18 ...
    1763              : !> \param s19 ...
    1764              : !> \param s20 ...
    1765              : !> \param s21 ...
    1766              : !> \param s22 ...
    1767              : !> \param s23 ...
    1768              : !> \param s24 ...
    1769              : !> \param s25 ...
    1770              : !> \param s26 ...
    1771              : !> \param s27 ...
    1772              : !> \param s28 ...
    1773              : !> \param s29 ...
    1774              : !> \param s30 ...
    1775              : !> \param s31 ...
    1776              : !> \param s32 ...
    1777              : !> \param s33 ...
    1778              : !> \param s34 ...
    1779              : !> \param s35 ...
    1780              : !> \param s36 ...
    1781              : !> \param s37 ...
    1782              : !> \param s38 ...
    1783              : !> \param s39 ...
    1784              : !> \param s40 ...
    1785              : !> \param s41 ...
    1786              : !> \param s42 ...
    1787              : !> \param s43 ...
    1788              : !> \return ...
    1789              : ! **************************************************************************************************
    1790            0 :    PURE FUNCTION s2a_43(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1791              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1792              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1793              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    1794            0 :                         s41, s42, s43) RESULT(a)
    1795              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1796              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1797              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43
    1798              :       CHARACTER(LEN=1000), DIMENSION(43)                 :: a
    1799              : 
    1800            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1801            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1802            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1803            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1804            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1805            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1806            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1807            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1808            0 :       a(41) = s41; a(42) = s42; a(43) = s43
    1809            0 :    END FUNCTION s2a_43
    1810              : ! **************************************************************************************************
    1811              : !> \brief ...
    1812              : !> \param s1 ...
    1813              : !> \param s2 ...
    1814              : !> \param s3 ...
    1815              : !> \param s4 ...
    1816              : !> \param s5 ...
    1817              : !> \param s6 ...
    1818              : !> \param s7 ...
    1819              : !> \param s8 ...
    1820              : !> \param s9 ...
    1821              : !> \param s10 ...
    1822              : !> \param s11 ...
    1823              : !> \param s12 ...
    1824              : !> \param s13 ...
    1825              : !> \param s14 ...
    1826              : !> \param s15 ...
    1827              : !> \param s16 ...
    1828              : !> \param s17 ...
    1829              : !> \param s18 ...
    1830              : !> \param s19 ...
    1831              : !> \param s20 ...
    1832              : !> \param s21 ...
    1833              : !> \param s22 ...
    1834              : !> \param s23 ...
    1835              : !> \param s24 ...
    1836              : !> \param s25 ...
    1837              : !> \param s26 ...
    1838              : !> \param s27 ...
    1839              : !> \param s28 ...
    1840              : !> \param s29 ...
    1841              : !> \param s30 ...
    1842              : !> \param s31 ...
    1843              : !> \param s32 ...
    1844              : !> \param s33 ...
    1845              : !> \param s34 ...
    1846              : !> \param s35 ...
    1847              : !> \param s36 ...
    1848              : !> \param s37 ...
    1849              : !> \param s38 ...
    1850              : !> \param s39 ...
    1851              : !> \param s40 ...
    1852              : !> \param s41 ...
    1853              : !> \param s42 ...
    1854              : !> \param s43 ...
    1855              : !> \param s44 ...
    1856              : !> \return ...
    1857              : ! **************************************************************************************************
    1858            0 :    PURE FUNCTION s2a_44(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1859              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1860              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1861              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    1862            0 :                         s41, s42, s43, s44) RESULT(a)
    1863              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1864              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1865              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44
    1866              :       CHARACTER(LEN=1000), DIMENSION(44)                 :: a
    1867              : 
    1868            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1869            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1870            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1871            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1872            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1873            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1874            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1875            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1876            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44
    1877            0 :    END FUNCTION s2a_44
    1878              : ! **************************************************************************************************
    1879              : !> \brief ...
    1880              : !> \param s1 ...
    1881              : !> \param s2 ...
    1882              : !> \param s3 ...
    1883              : !> \param s4 ...
    1884              : !> \param s5 ...
    1885              : !> \param s6 ...
    1886              : !> \param s7 ...
    1887              : !> \param s8 ...
    1888              : !> \param s9 ...
    1889              : !> \param s10 ...
    1890              : !> \param s11 ...
    1891              : !> \param s12 ...
    1892              : !> \param s13 ...
    1893              : !> \param s14 ...
    1894              : !> \param s15 ...
    1895              : !> \param s16 ...
    1896              : !> \param s17 ...
    1897              : !> \param s18 ...
    1898              : !> \param s19 ...
    1899              : !> \param s20 ...
    1900              : !> \param s21 ...
    1901              : !> \param s22 ...
    1902              : !> \param s23 ...
    1903              : !> \param s24 ...
    1904              : !> \param s25 ...
    1905              : !> \param s26 ...
    1906              : !> \param s27 ...
    1907              : !> \param s28 ...
    1908              : !> \param s29 ...
    1909              : !> \param s30 ...
    1910              : !> \param s31 ...
    1911              : !> \param s32 ...
    1912              : !> \param s33 ...
    1913              : !> \param s34 ...
    1914              : !> \param s35 ...
    1915              : !> \param s36 ...
    1916              : !> \param s37 ...
    1917              : !> \param s38 ...
    1918              : !> \param s39 ...
    1919              : !> \param s40 ...
    1920              : !> \param s41 ...
    1921              : !> \param s42 ...
    1922              : !> \param s43 ...
    1923              : !> \param s44 ...
    1924              : !> \param s45 ...
    1925              : !> \return ...
    1926              : ! **************************************************************************************************
    1927            0 :    PURE FUNCTION s2a_45(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1928              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1929              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    1930              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    1931            0 :                         s41, s42, s43, s44, s45) RESULT(a)
    1932              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    1933              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    1934              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45
    1935              :       CHARACTER(LEN=1000), DIMENSION(45)                 :: a
    1936              : 
    1937            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    1938            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    1939            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    1940            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    1941            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    1942            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    1943            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    1944            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    1945            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    1946            0 :    END FUNCTION s2a_45
    1947              : ! **************************************************************************************************
    1948              : !> \brief ...
    1949              : !> \param s1 ...
    1950              : !> \param s2 ...
    1951              : !> \param s3 ...
    1952              : !> \param s4 ...
    1953              : !> \param s5 ...
    1954              : !> \param s6 ...
    1955              : !> \param s7 ...
    1956              : !> \param s8 ...
    1957              : !> \param s9 ...
    1958              : !> \param s10 ...
    1959              : !> \param s11 ...
    1960              : !> \param s12 ...
    1961              : !> \param s13 ...
    1962              : !> \param s14 ...
    1963              : !> \param s15 ...
    1964              : !> \param s16 ...
    1965              : !> \param s17 ...
    1966              : !> \param s18 ...
    1967              : !> \param s19 ...
    1968              : !> \param s20 ...
    1969              : !> \param s21 ...
    1970              : !> \param s22 ...
    1971              : !> \param s23 ...
    1972              : !> \param s24 ...
    1973              : !> \param s25 ...
    1974              : !> \param s26 ...
    1975              : !> \param s27 ...
    1976              : !> \param s28 ...
    1977              : !> \param s29 ...
    1978              : !> \param s30 ...
    1979              : !> \param s31 ...
    1980              : !> \param s32 ...
    1981              : !> \param s33 ...
    1982              : !> \param s34 ...
    1983              : !> \param s35 ...
    1984              : !> \param s36 ...
    1985              : !> \param s37 ...
    1986              : !> \param s38 ...
    1987              : !> \param s39 ...
    1988              : !> \param s40 ...
    1989              : !> \param s41 ...
    1990              : !> \param s42 ...
    1991              : !> \param s43 ...
    1992              : !> \param s44 ...
    1993              : !> \param s45 ...
    1994              : !> \param s46 ...
    1995              : !> \return ...
    1996              : ! **************************************************************************************************
    1997            0 :    PURE FUNCTION s2a_46(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    1998              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    1999              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2000              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2001            0 :                         s41, s42, s43, s44, s45, s46) RESULT(a)
    2002              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2003              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2004              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46
    2005              :       CHARACTER(LEN=1000), DIMENSION(46)                 :: a
    2006              : 
    2007            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2008            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2009            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2010            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2011            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2012            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2013            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2014            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2015            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2016            0 :       a(46) = s46
    2017            0 :    END FUNCTION s2a_46
    2018              : ! **************************************************************************************************
    2019              : !> \brief ...
    2020              : !> \param s1 ...
    2021              : !> \param s2 ...
    2022              : !> \param s3 ...
    2023              : !> \param s4 ...
    2024              : !> \param s5 ...
    2025              : !> \param s6 ...
    2026              : !> \param s7 ...
    2027              : !> \param s8 ...
    2028              : !> \param s9 ...
    2029              : !> \param s10 ...
    2030              : !> \param s11 ...
    2031              : !> \param s12 ...
    2032              : !> \param s13 ...
    2033              : !> \param s14 ...
    2034              : !> \param s15 ...
    2035              : !> \param s16 ...
    2036              : !> \param s17 ...
    2037              : !> \param s18 ...
    2038              : !> \param s19 ...
    2039              : !> \param s20 ...
    2040              : !> \param s21 ...
    2041              : !> \param s22 ...
    2042              : !> \param s23 ...
    2043              : !> \param s24 ...
    2044              : !> \param s25 ...
    2045              : !> \param s26 ...
    2046              : !> \param s27 ...
    2047              : !> \param s28 ...
    2048              : !> \param s29 ...
    2049              : !> \param s30 ...
    2050              : !> \param s31 ...
    2051              : !> \param s32 ...
    2052              : !> \param s33 ...
    2053              : !> \param s34 ...
    2054              : !> \param s35 ...
    2055              : !> \param s36 ...
    2056              : !> \param s37 ...
    2057              : !> \param s38 ...
    2058              : !> \param s39 ...
    2059              : !> \param s40 ...
    2060              : !> \param s41 ...
    2061              : !> \param s42 ...
    2062              : !> \param s43 ...
    2063              : !> \param s44 ...
    2064              : !> \param s45 ...
    2065              : !> \param s46 ...
    2066              : !> \param s47 ...
    2067              : !> \return ...
    2068              : ! **************************************************************************************************
    2069         9284 :    PURE FUNCTION s2a_47(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2070              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2071              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2072              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2073        18568 :                         s41, s42, s43, s44, s45, s46, s47) RESULT(a)
    2074              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2075              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2076              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47
    2077              :       CHARACTER(LEN=1000), DIMENSION(47)                 :: a
    2078              : 
    2079         9284 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2080         9284 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2081         9284 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2082         9284 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2083         9284 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2084         9284 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2085         9284 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2086         9284 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2087         9284 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2088         9284 :       a(46) = s46; a(47) = s47
    2089         9284 :    END FUNCTION s2a_47
    2090              : ! **************************************************************************************************
    2091              : !> \brief ...
    2092              : !> \param s1 ...
    2093              : !> \param s2 ...
    2094              : !> \param s3 ...
    2095              : !> \param s4 ...
    2096              : !> \param s5 ...
    2097              : !> \param s6 ...
    2098              : !> \param s7 ...
    2099              : !> \param s8 ...
    2100              : !> \param s9 ...
    2101              : !> \param s10 ...
    2102              : !> \param s11 ...
    2103              : !> \param s12 ...
    2104              : !> \param s13 ...
    2105              : !> \param s14 ...
    2106              : !> \param s15 ...
    2107              : !> \param s16 ...
    2108              : !> \param s17 ...
    2109              : !> \param s18 ...
    2110              : !> \param s19 ...
    2111              : !> \param s20 ...
    2112              : !> \param s21 ...
    2113              : !> \param s22 ...
    2114              : !> \param s23 ...
    2115              : !> \param s24 ...
    2116              : !> \param s25 ...
    2117              : !> \param s26 ...
    2118              : !> \param s27 ...
    2119              : !> \param s28 ...
    2120              : !> \param s29 ...
    2121              : !> \param s30 ...
    2122              : !> \param s31 ...
    2123              : !> \param s32 ...
    2124              : !> \param s33 ...
    2125              : !> \param s34 ...
    2126              : !> \param s35 ...
    2127              : !> \param s36 ...
    2128              : !> \param s37 ...
    2129              : !> \param s38 ...
    2130              : !> \param s39 ...
    2131              : !> \param s40 ...
    2132              : !> \param s41 ...
    2133              : !> \param s42 ...
    2134              : !> \param s43 ...
    2135              : !> \param s44 ...
    2136              : !> \param s45 ...
    2137              : !> \param s46 ...
    2138              : !> \param s47 ...
    2139              : !> \param s48 ...
    2140              : !> \return ...
    2141              : ! **************************************************************************************************
    2142            0 :    PURE FUNCTION s2a_48(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2143              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2144              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2145              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2146            0 :                         s41, s42, s43, s44, s45, s46, s47, s48) RESULT(a)
    2147              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2148              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2149              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48
    2150              :       CHARACTER(LEN=1000), DIMENSION(48)                 :: a
    2151              : 
    2152            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2153            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2154            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2155            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2156            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2157            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2158            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2159            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2160            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2161            0 :       a(46) = s46; a(47) = s47; a(48) = s48
    2162            0 :    END FUNCTION s2a_48
    2163              : ! **************************************************************************************************
    2164              : !> \brief ...
    2165              : !> \param s1 ...
    2166              : !> \param s2 ...
    2167              : !> \param s3 ...
    2168              : !> \param s4 ...
    2169              : !> \param s5 ...
    2170              : !> \param s6 ...
    2171              : !> \param s7 ...
    2172              : !> \param s8 ...
    2173              : !> \param s9 ...
    2174              : !> \param s10 ...
    2175              : !> \param s11 ...
    2176              : !> \param s12 ...
    2177              : !> \param s13 ...
    2178              : !> \param s14 ...
    2179              : !> \param s15 ...
    2180              : !> \param s16 ...
    2181              : !> \param s17 ...
    2182              : !> \param s18 ...
    2183              : !> \param s19 ...
    2184              : !> \param s20 ...
    2185              : !> \param s21 ...
    2186              : !> \param s22 ...
    2187              : !> \param s23 ...
    2188              : !> \param s24 ...
    2189              : !> \param s25 ...
    2190              : !> \param s26 ...
    2191              : !> \param s27 ...
    2192              : !> \param s28 ...
    2193              : !> \param s29 ...
    2194              : !> \param s30 ...
    2195              : !> \param s31 ...
    2196              : !> \param s32 ...
    2197              : !> \param s33 ...
    2198              : !> \param s34 ...
    2199              : !> \param s35 ...
    2200              : !> \param s36 ...
    2201              : !> \param s37 ...
    2202              : !> \param s38 ...
    2203              : !> \param s39 ...
    2204              : !> \param s40 ...
    2205              : !> \param s41 ...
    2206              : !> \param s42 ...
    2207              : !> \param s43 ...
    2208              : !> \param s44 ...
    2209              : !> \param s45 ...
    2210              : !> \param s46 ...
    2211              : !> \param s47 ...
    2212              : !> \param s48 ...
    2213              : !> \param s49 ...
    2214              : !> \return ...
    2215              : ! **************************************************************************************************
    2216            0 :    PURE FUNCTION s2a_49(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2217              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2218              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2219              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2220            0 :                         s41, s42, s43, s44, s45, s46, s47, s48, s49) RESULT(a)
    2221              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2222              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2223              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49
    2224              :       CHARACTER(LEN=1000), DIMENSION(49)                 :: a
    2225              : 
    2226            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2227            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2228            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2229            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2230            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2231            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2232            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2233            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2234            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2235            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49
    2236            0 :    END FUNCTION s2a_49
    2237              : ! **************************************************************************************************
    2238              : !> \brief ...
    2239              : !> \param s1 ...
    2240              : !> \param s2 ...
    2241              : !> \param s3 ...
    2242              : !> \param s4 ...
    2243              : !> \param s5 ...
    2244              : !> \param s6 ...
    2245              : !> \param s7 ...
    2246              : !> \param s8 ...
    2247              : !> \param s9 ...
    2248              : !> \param s10 ...
    2249              : !> \param s11 ...
    2250              : !> \param s12 ...
    2251              : !> \param s13 ...
    2252              : !> \param s14 ...
    2253              : !> \param s15 ...
    2254              : !> \param s16 ...
    2255              : !> \param s17 ...
    2256              : !> \param s18 ...
    2257              : !> \param s19 ...
    2258              : !> \param s20 ...
    2259              : !> \param s21 ...
    2260              : !> \param s22 ...
    2261              : !> \param s23 ...
    2262              : !> \param s24 ...
    2263              : !> \param s25 ...
    2264              : !> \param s26 ...
    2265              : !> \param s27 ...
    2266              : !> \param s28 ...
    2267              : !> \param s29 ...
    2268              : !> \param s30 ...
    2269              : !> \param s31 ...
    2270              : !> \param s32 ...
    2271              : !> \param s33 ...
    2272              : !> \param s34 ...
    2273              : !> \param s35 ...
    2274              : !> \param s36 ...
    2275              : !> \param s37 ...
    2276              : !> \param s38 ...
    2277              : !> \param s39 ...
    2278              : !> \param s40 ...
    2279              : !> \param s41 ...
    2280              : !> \param s42 ...
    2281              : !> \param s43 ...
    2282              : !> \param s44 ...
    2283              : !> \param s45 ...
    2284              : !> \param s46 ...
    2285              : !> \param s47 ...
    2286              : !> \param s48 ...
    2287              : !> \param s49 ...
    2288              : !> \param s50 ...
    2289              : !> \return ...
    2290              : ! **************************************************************************************************
    2291            0 :    PURE FUNCTION s2a_50(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2292              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2293              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2294              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2295            0 :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50) RESULT(a)
    2296              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2297              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2298              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50
    2299              :       CHARACTER(LEN=1000), DIMENSION(50)                 :: a
    2300              : 
    2301            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2302            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2303            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2304            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2305            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2306            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2307            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2308            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2309            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2310            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2311            0 :    END FUNCTION s2a_50
    2312              : ! **************************************************************************************************
    2313              : !> \brief ...
    2314              : !> \param s1 ...
    2315              : !> \param s2 ...
    2316              : !> \param s3 ...
    2317              : !> \param s4 ...
    2318              : !> \param s5 ...
    2319              : !> \param s6 ...
    2320              : !> \param s7 ...
    2321              : !> \param s8 ...
    2322              : !> \param s9 ...
    2323              : !> \param s10 ...
    2324              : !> \param s11 ...
    2325              : !> \param s12 ...
    2326              : !> \param s13 ...
    2327              : !> \param s14 ...
    2328              : !> \param s15 ...
    2329              : !> \param s16 ...
    2330              : !> \param s17 ...
    2331              : !> \param s18 ...
    2332              : !> \param s19 ...
    2333              : !> \param s20 ...
    2334              : !> \param s21 ...
    2335              : !> \param s22 ...
    2336              : !> \param s23 ...
    2337              : !> \param s24 ...
    2338              : !> \param s25 ...
    2339              : !> \param s26 ...
    2340              : !> \param s27 ...
    2341              : !> \param s28 ...
    2342              : !> \param s29 ...
    2343              : !> \param s30 ...
    2344              : !> \param s31 ...
    2345              : !> \param s32 ...
    2346              : !> \param s33 ...
    2347              : !> \param s34 ...
    2348              : !> \param s35 ...
    2349              : !> \param s36 ...
    2350              : !> \param s37 ...
    2351              : !> \param s38 ...
    2352              : !> \param s39 ...
    2353              : !> \param s40 ...
    2354              : !> \param s41 ...
    2355              : !> \param s42 ...
    2356              : !> \param s43 ...
    2357              : !> \param s44 ...
    2358              : !> \param s45 ...
    2359              : !> \param s46 ...
    2360              : !> \param s47 ...
    2361              : !> \param s48 ...
    2362              : !> \param s49 ...
    2363              : !> \param s50 ...
    2364              : !> \param s51 ...
    2365              : !> \return ...
    2366              : ! **************************************************************************************************
    2367            0 :    PURE FUNCTION s2a_51(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2368              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2369              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2370              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2371              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2372            0 :                         s51) RESULT(a)
    2373              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2374              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2375              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2376              :          s51
    2377              :       CHARACTER(LEN=1000), DIMENSION(51)                 :: a
    2378              : 
    2379            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2380            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2381            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2382            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2383            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2384            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2385            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2386            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2387            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2388            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2389            0 :       a(51) = s51
    2390            0 :    END FUNCTION s2a_51
    2391              : ! **************************************************************************************************
    2392              : !> \brief ...
    2393              : !> \param s1 ...
    2394              : !> \param s2 ...
    2395              : !> \param s3 ...
    2396              : !> \param s4 ...
    2397              : !> \param s5 ...
    2398              : !> \param s6 ...
    2399              : !> \param s7 ...
    2400              : !> \param s8 ...
    2401              : !> \param s9 ...
    2402              : !> \param s10 ...
    2403              : !> \param s11 ...
    2404              : !> \param s12 ...
    2405              : !> \param s13 ...
    2406              : !> \param s14 ...
    2407              : !> \param s15 ...
    2408              : !> \param s16 ...
    2409              : !> \param s17 ...
    2410              : !> \param s18 ...
    2411              : !> \param s19 ...
    2412              : !> \param s20 ...
    2413              : !> \param s21 ...
    2414              : !> \param s22 ...
    2415              : !> \param s23 ...
    2416              : !> \param s24 ...
    2417              : !> \param s25 ...
    2418              : !> \param s26 ...
    2419              : !> \param s27 ...
    2420              : !> \param s28 ...
    2421              : !> \param s29 ...
    2422              : !> \param s30 ...
    2423              : !> \param s31 ...
    2424              : !> \param s32 ...
    2425              : !> \param s33 ...
    2426              : !> \param s34 ...
    2427              : !> \param s35 ...
    2428              : !> \param s36 ...
    2429              : !> \param s37 ...
    2430              : !> \param s38 ...
    2431              : !> \param s39 ...
    2432              : !> \param s40 ...
    2433              : !> \param s41 ...
    2434              : !> \param s42 ...
    2435              : !> \param s43 ...
    2436              : !> \param s44 ...
    2437              : !> \param s45 ...
    2438              : !> \param s46 ...
    2439              : !> \param s47 ...
    2440              : !> \param s48 ...
    2441              : !> \param s49 ...
    2442              : !> \param s50 ...
    2443              : !> \param s51 ...
    2444              : !> \param s52 ...
    2445              : !> \return ...
    2446              : ! **************************************************************************************************
    2447            0 :    PURE FUNCTION s2a_52(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2448              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2449              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2450              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2451              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2452            0 :                         s51, s52) RESULT(a)
    2453              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2454              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2455              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2456              :          s51, s52
    2457              :       CHARACTER(LEN=1000), DIMENSION(52)                 :: a
    2458              : 
    2459            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2460            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2461            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2462            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2463            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2464            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2465            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2466            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2467            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2468            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2469            0 :       a(51) = s51; a(52) = s52
    2470            0 :    END FUNCTION s2a_52
    2471              : ! **************************************************************************************************
    2472              : !> \brief ...
    2473              : !> \param s1 ...
    2474              : !> \param s2 ...
    2475              : !> \param s3 ...
    2476              : !> \param s4 ...
    2477              : !> \param s5 ...
    2478              : !> \param s6 ...
    2479              : !> \param s7 ...
    2480              : !> \param s8 ...
    2481              : !> \param s9 ...
    2482              : !> \param s10 ...
    2483              : !> \param s11 ...
    2484              : !> \param s12 ...
    2485              : !> \param s13 ...
    2486              : !> \param s14 ...
    2487              : !> \param s15 ...
    2488              : !> \param s16 ...
    2489              : !> \param s17 ...
    2490              : !> \param s18 ...
    2491              : !> \param s19 ...
    2492              : !> \param s20 ...
    2493              : !> \param s21 ...
    2494              : !> \param s22 ...
    2495              : !> \param s23 ...
    2496              : !> \param s24 ...
    2497              : !> \param s25 ...
    2498              : !> \param s26 ...
    2499              : !> \param s27 ...
    2500              : !> \param s28 ...
    2501              : !> \param s29 ...
    2502              : !> \param s30 ...
    2503              : !> \param s31 ...
    2504              : !> \param s32 ...
    2505              : !> \param s33 ...
    2506              : !> \param s34 ...
    2507              : !> \param s35 ...
    2508              : !> \param s36 ...
    2509              : !> \param s37 ...
    2510              : !> \param s38 ...
    2511              : !> \param s39 ...
    2512              : !> \param s40 ...
    2513              : !> \param s41 ...
    2514              : !> \param s42 ...
    2515              : !> \param s43 ...
    2516              : !> \param s44 ...
    2517              : !> \param s45 ...
    2518              : !> \param s46 ...
    2519              : !> \param s47 ...
    2520              : !> \param s48 ...
    2521              : !> \param s49 ...
    2522              : !> \param s50 ...
    2523              : !> \param s51 ...
    2524              : !> \param s52 ...
    2525              : !> \param s53 ...
    2526              : !> \return ...
    2527              : ! **************************************************************************************************
    2528            0 :    PURE FUNCTION s2a_53(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2529              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2530              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2531              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2532              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2533            0 :                         s51, s52, s53) RESULT(a)
    2534              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2535              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2536              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2537              :          s51, s52, s53
    2538              :       CHARACTER(LEN=1000), DIMENSION(53)                 :: a
    2539              : 
    2540            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2541            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2542            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2543            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2544            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2545            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2546            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2547            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2548            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2549            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2550            0 :       a(51) = s51; a(52) = s52; a(53) = s53
    2551            0 :    END FUNCTION s2a_53
    2552              : ! **************************************************************************************************
    2553              : !> \brief ...
    2554              : !> \param s1 ...
    2555              : !> \param s2 ...
    2556              : !> \param s3 ...
    2557              : !> \param s4 ...
    2558              : !> \param s5 ...
    2559              : !> \param s6 ...
    2560              : !> \param s7 ...
    2561              : !> \param s8 ...
    2562              : !> \param s9 ...
    2563              : !> \param s10 ...
    2564              : !> \param s11 ...
    2565              : !> \param s12 ...
    2566              : !> \param s13 ...
    2567              : !> \param s14 ...
    2568              : !> \param s15 ...
    2569              : !> \param s16 ...
    2570              : !> \param s17 ...
    2571              : !> \param s18 ...
    2572              : !> \param s19 ...
    2573              : !> \param s20 ...
    2574              : !> \param s21 ...
    2575              : !> \param s22 ...
    2576              : !> \param s23 ...
    2577              : !> \param s24 ...
    2578              : !> \param s25 ...
    2579              : !> \param s26 ...
    2580              : !> \param s27 ...
    2581              : !> \param s28 ...
    2582              : !> \param s29 ...
    2583              : !> \param s30 ...
    2584              : !> \param s31 ...
    2585              : !> \param s32 ...
    2586              : !> \param s33 ...
    2587              : !> \param s34 ...
    2588              : !> \param s35 ...
    2589              : !> \param s36 ...
    2590              : !> \param s37 ...
    2591              : !> \param s38 ...
    2592              : !> \param s39 ...
    2593              : !> \param s40 ...
    2594              : !> \param s41 ...
    2595              : !> \param s42 ...
    2596              : !> \param s43 ...
    2597              : !> \param s44 ...
    2598              : !> \param s45 ...
    2599              : !> \param s46 ...
    2600              : !> \param s47 ...
    2601              : !> \param s48 ...
    2602              : !> \param s49 ...
    2603              : !> \param s50 ...
    2604              : !> \param s51 ...
    2605              : !> \param s52 ...
    2606              : !> \param s53 ...
    2607              : !> \param s54 ...
    2608              : !> \return ...
    2609              : ! **************************************************************************************************
    2610            0 :    PURE FUNCTION s2a_54(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2611              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2612              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2613              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2614              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2615            0 :                         s51, s52, s53, s54) RESULT(a)
    2616              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2617              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2618              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2619              :          s51, s52, s53, s54
    2620              :       CHARACTER(LEN=1000), DIMENSION(54)                 :: a
    2621              : 
    2622            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2623            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2624            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2625            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2626            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2627            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2628            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2629            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2630            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2631            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2632            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54
    2633            0 :    END FUNCTION s2a_54
    2634              : ! **************************************************************************************************
    2635              : !> \brief ...
    2636              : !> \param s1 ...
    2637              : !> \param s2 ...
    2638              : !> \param s3 ...
    2639              : !> \param s4 ...
    2640              : !> \param s5 ...
    2641              : !> \param s6 ...
    2642              : !> \param s7 ...
    2643              : !> \param s8 ...
    2644              : !> \param s9 ...
    2645              : !> \param s10 ...
    2646              : !> \param s11 ...
    2647              : !> \param s12 ...
    2648              : !> \param s13 ...
    2649              : !> \param s14 ...
    2650              : !> \param s15 ...
    2651              : !> \param s16 ...
    2652              : !> \param s17 ...
    2653              : !> \param s18 ...
    2654              : !> \param s19 ...
    2655              : !> \param s20 ...
    2656              : !> \param s21 ...
    2657              : !> \param s22 ...
    2658              : !> \param s23 ...
    2659              : !> \param s24 ...
    2660              : !> \param s25 ...
    2661              : !> \param s26 ...
    2662              : !> \param s27 ...
    2663              : !> \param s28 ...
    2664              : !> \param s29 ...
    2665              : !> \param s30 ...
    2666              : !> \param s31 ...
    2667              : !> \param s32 ...
    2668              : !> \param s33 ...
    2669              : !> \param s34 ...
    2670              : !> \param s35 ...
    2671              : !> \param s36 ...
    2672              : !> \param s37 ...
    2673              : !> \param s38 ...
    2674              : !> \param s39 ...
    2675              : !> \param s40 ...
    2676              : !> \param s41 ...
    2677              : !> \param s42 ...
    2678              : !> \param s43 ...
    2679              : !> \param s44 ...
    2680              : !> \param s45 ...
    2681              : !> \param s46 ...
    2682              : !> \param s47 ...
    2683              : !> \param s48 ...
    2684              : !> \param s49 ...
    2685              : !> \param s50 ...
    2686              : !> \param s51 ...
    2687              : !> \param s52 ...
    2688              : !> \param s53 ...
    2689              : !> \param s54 ...
    2690              : !> \param s55 ...
    2691              : !> \return ...
    2692              : ! **************************************************************************************************
    2693            0 :    PURE FUNCTION s2a_55(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2694              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2695              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2696              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2697              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2698            0 :                         s51, s52, s53, s54, s55) RESULT(a)
    2699              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2700              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2701              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2702              :          s51, s52, s53, s54, s55
    2703              :       CHARACTER(LEN=1000), DIMENSION(55)                 :: a
    2704              : 
    2705            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2706            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2707            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2708            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2709            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2710            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2711            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2712            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2713            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2714            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2715            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    2716            0 :    END FUNCTION s2a_55
    2717              : ! **************************************************************************************************
    2718              : !> \brief ...
    2719              : !> \param s1 ...
    2720              : !> \param s2 ...
    2721              : !> \param s3 ...
    2722              : !> \param s4 ...
    2723              : !> \param s5 ...
    2724              : !> \param s6 ...
    2725              : !> \param s7 ...
    2726              : !> \param s8 ...
    2727              : !> \param s9 ...
    2728              : !> \param s10 ...
    2729              : !> \param s11 ...
    2730              : !> \param s12 ...
    2731              : !> \param s13 ...
    2732              : !> \param s14 ...
    2733              : !> \param s15 ...
    2734              : !> \param s16 ...
    2735              : !> \param s17 ...
    2736              : !> \param s18 ...
    2737              : !> \param s19 ...
    2738              : !> \param s20 ...
    2739              : !> \param s21 ...
    2740              : !> \param s22 ...
    2741              : !> \param s23 ...
    2742              : !> \param s24 ...
    2743              : !> \param s25 ...
    2744              : !> \param s26 ...
    2745              : !> \param s27 ...
    2746              : !> \param s28 ...
    2747              : !> \param s29 ...
    2748              : !> \param s30 ...
    2749              : !> \param s31 ...
    2750              : !> \param s32 ...
    2751              : !> \param s33 ...
    2752              : !> \param s34 ...
    2753              : !> \param s35 ...
    2754              : !> \param s36 ...
    2755              : !> \param s37 ...
    2756              : !> \param s38 ...
    2757              : !> \param s39 ...
    2758              : !> \param s40 ...
    2759              : !> \param s41 ...
    2760              : !> \param s42 ...
    2761              : !> \param s43 ...
    2762              : !> \param s44 ...
    2763              : !> \param s45 ...
    2764              : !> \param s46 ...
    2765              : !> \param s47 ...
    2766              : !> \param s48 ...
    2767              : !> \param s49 ...
    2768              : !> \param s50 ...
    2769              : !> \param s51 ...
    2770              : !> \param s52 ...
    2771              : !> \param s53 ...
    2772              : !> \param s54 ...
    2773              : !> \param s55 ...
    2774              : !> \param s56 ...
    2775              : !> \return ...
    2776              : ! **************************************************************************************************
    2777            0 :    PURE FUNCTION s2a_56(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2778              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2779              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2780              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2781              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2782            0 :                         s51, s52, s53, s54, s55, s56) RESULT(a)
    2783              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2784              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2785              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2786              :          s51, s52, s53, s54, s55, s56
    2787              :       CHARACTER(LEN=1000), DIMENSION(56)                 :: a
    2788              : 
    2789            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2790            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2791            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2792            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2793            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2794            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2795            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2796            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2797            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2798            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2799            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    2800            0 :       a(56) = s56
    2801            0 :    END FUNCTION s2a_56
    2802              : ! **************************************************************************************************
    2803              : !> \brief ...
    2804              : !> \param s1 ...
    2805              : !> \param s2 ...
    2806              : !> \param s3 ...
    2807              : !> \param s4 ...
    2808              : !> \param s5 ...
    2809              : !> \param s6 ...
    2810              : !> \param s7 ...
    2811              : !> \param s8 ...
    2812              : !> \param s9 ...
    2813              : !> \param s10 ...
    2814              : !> \param s11 ...
    2815              : !> \param s12 ...
    2816              : !> \param s13 ...
    2817              : !> \param s14 ...
    2818              : !> \param s15 ...
    2819              : !> \param s16 ...
    2820              : !> \param s17 ...
    2821              : !> \param s18 ...
    2822              : !> \param s19 ...
    2823              : !> \param s20 ...
    2824              : !> \param s21 ...
    2825              : !> \param s22 ...
    2826              : !> \param s23 ...
    2827              : !> \param s24 ...
    2828              : !> \param s25 ...
    2829              : !> \param s26 ...
    2830              : !> \param s27 ...
    2831              : !> \param s28 ...
    2832              : !> \param s29 ...
    2833              : !> \param s30 ...
    2834              : !> \param s31 ...
    2835              : !> \param s32 ...
    2836              : !> \param s33 ...
    2837              : !> \param s34 ...
    2838              : !> \param s35 ...
    2839              : !> \param s36 ...
    2840              : !> \param s37 ...
    2841              : !> \param s38 ...
    2842              : !> \param s39 ...
    2843              : !> \param s40 ...
    2844              : !> \param s41 ...
    2845              : !> \param s42 ...
    2846              : !> \param s43 ...
    2847              : !> \param s44 ...
    2848              : !> \param s45 ...
    2849              : !> \param s46 ...
    2850              : !> \param s47 ...
    2851              : !> \param s48 ...
    2852              : !> \param s49 ...
    2853              : !> \param s50 ...
    2854              : !> \param s51 ...
    2855              : !> \param s52 ...
    2856              : !> \param s53 ...
    2857              : !> \param s54 ...
    2858              : !> \param s55 ...
    2859              : !> \param s56 ...
    2860              : !> \param s57 ...
    2861              : !> \return ...
    2862              : ! **************************************************************************************************
    2863            0 :    PURE FUNCTION s2a_57(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2864              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2865              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2866              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2867              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2868            0 :                         s51, s52, s53, s54, s55, s56, s57) RESULT(a)
    2869              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2870              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2871              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2872              :          s51, s52, s53, s54, s55, s56, s57
    2873              :       CHARACTER(LEN=1000), DIMENSION(57)                 :: a
    2874              : 
    2875            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2876            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2877            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2878            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2879            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2880            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2881            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2882            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2883            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2884            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2885            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    2886            0 :       a(56) = s56; a(57) = s57
    2887            0 :    END FUNCTION s2a_57
    2888              : ! **************************************************************************************************
    2889              : !> \brief ...
    2890              : !> \param s1 ...
    2891              : !> \param s2 ...
    2892              : !> \param s3 ...
    2893              : !> \param s4 ...
    2894              : !> \param s5 ...
    2895              : !> \param s6 ...
    2896              : !> \param s7 ...
    2897              : !> \param s8 ...
    2898              : !> \param s9 ...
    2899              : !> \param s10 ...
    2900              : !> \param s11 ...
    2901              : !> \param s12 ...
    2902              : !> \param s13 ...
    2903              : !> \param s14 ...
    2904              : !> \param s15 ...
    2905              : !> \param s16 ...
    2906              : !> \param s17 ...
    2907              : !> \param s18 ...
    2908              : !> \param s19 ...
    2909              : !> \param s20 ...
    2910              : !> \param s21 ...
    2911              : !> \param s22 ...
    2912              : !> \param s23 ...
    2913              : !> \param s24 ...
    2914              : !> \param s25 ...
    2915              : !> \param s26 ...
    2916              : !> \param s27 ...
    2917              : !> \param s28 ...
    2918              : !> \param s29 ...
    2919              : !> \param s30 ...
    2920              : !> \param s31 ...
    2921              : !> \param s32 ...
    2922              : !> \param s33 ...
    2923              : !> \param s34 ...
    2924              : !> \param s35 ...
    2925              : !> \param s36 ...
    2926              : !> \param s37 ...
    2927              : !> \param s38 ...
    2928              : !> \param s39 ...
    2929              : !> \param s40 ...
    2930              : !> \param s41 ...
    2931              : !> \param s42 ...
    2932              : !> \param s43 ...
    2933              : !> \param s44 ...
    2934              : !> \param s45 ...
    2935              : !> \param s46 ...
    2936              : !> \param s47 ...
    2937              : !> \param s48 ...
    2938              : !> \param s49 ...
    2939              : !> \param s50 ...
    2940              : !> \param s51 ...
    2941              : !> \param s52 ...
    2942              : !> \param s53 ...
    2943              : !> \param s54 ...
    2944              : !> \param s55 ...
    2945              : !> \param s56 ...
    2946              : !> \param s57 ...
    2947              : !> \param s58 ...
    2948              : !> \return ...
    2949              : ! **************************************************************************************************
    2950            0 :    PURE FUNCTION s2a_58(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    2951              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    2952              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    2953              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    2954              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2955            0 :                         s51, s52, s53, s54, s55, s56, s57, s58) RESULT(a)
    2956              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    2957              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    2958              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    2959              :          s51, s52, s53, s54, s55, s56, s57, s58
    2960              :       CHARACTER(LEN=1000), DIMENSION(58)                 :: a
    2961              : 
    2962            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    2963            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    2964            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    2965            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    2966            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    2967            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    2968            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    2969            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    2970            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    2971            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    2972            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    2973            0 :       a(56) = s56; a(57) = s57; a(58) = s58
    2974            0 :    END FUNCTION s2a_58
    2975              : ! **************************************************************************************************
    2976              : !> \brief ...
    2977              : !> \param s1 ...
    2978              : !> \param s2 ...
    2979              : !> \param s3 ...
    2980              : !> \param s4 ...
    2981              : !> \param s5 ...
    2982              : !> \param s6 ...
    2983              : !> \param s7 ...
    2984              : !> \param s8 ...
    2985              : !> \param s9 ...
    2986              : !> \param s10 ...
    2987              : !> \param s11 ...
    2988              : !> \param s12 ...
    2989              : !> \param s13 ...
    2990              : !> \param s14 ...
    2991              : !> \param s15 ...
    2992              : !> \param s16 ...
    2993              : !> \param s17 ...
    2994              : !> \param s18 ...
    2995              : !> \param s19 ...
    2996              : !> \param s20 ...
    2997              : !> \param s21 ...
    2998              : !> \param s22 ...
    2999              : !> \param s23 ...
    3000              : !> \param s24 ...
    3001              : !> \param s25 ...
    3002              : !> \param s26 ...
    3003              : !> \param s27 ...
    3004              : !> \param s28 ...
    3005              : !> \param s29 ...
    3006              : !> \param s30 ...
    3007              : !> \param s31 ...
    3008              : !> \param s32 ...
    3009              : !> \param s33 ...
    3010              : !> \param s34 ...
    3011              : !> \param s35 ...
    3012              : !> \param s36 ...
    3013              : !> \param s37 ...
    3014              : !> \param s38 ...
    3015              : !> \param s39 ...
    3016              : !> \param s40 ...
    3017              : !> \param s41 ...
    3018              : !> \param s42 ...
    3019              : !> \param s43 ...
    3020              : !> \param s44 ...
    3021              : !> \param s45 ...
    3022              : !> \param s46 ...
    3023              : !> \param s47 ...
    3024              : !> \param s48 ...
    3025              : !> \param s49 ...
    3026              : !> \param s50 ...
    3027              : !> \param s51 ...
    3028              : !> \param s52 ...
    3029              : !> \param s53 ...
    3030              : !> \param s54 ...
    3031              : !> \param s55 ...
    3032              : !> \param s56 ...
    3033              : !> \param s57 ...
    3034              : !> \param s58 ...
    3035              : !> \param s59 ...
    3036              : !> \return ...
    3037              : ! **************************************************************************************************
    3038            0 :    PURE FUNCTION s2a_59(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    3039              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    3040              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    3041              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    3042              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    3043            0 :                         s51, s52, s53, s54, s55, s56, s57, s58, s59) RESULT(a)
    3044              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    3045              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    3046              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    3047              :          s51, s52, s53, s54, s55, s56, s57, s58, s59
    3048              :       CHARACTER(LEN=1000), DIMENSION(59)                 :: a
    3049              : 
    3050            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    3051            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    3052            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    3053            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    3054            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    3055            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    3056            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    3057            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    3058            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    3059            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    3060            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    3061            0 :       a(56) = s56; a(57) = s57; a(58) = s58; a(59) = s59
    3062            0 :    END FUNCTION s2a_59
    3063              : ! **************************************************************************************************
    3064              : !> \brief ...
    3065              : !> \param s1 ...
    3066              : !> \param s2 ...
    3067              : !> \param s3 ...
    3068              : !> \param s4 ...
    3069              : !> \param s5 ...
    3070              : !> \param s6 ...
    3071              : !> \param s7 ...
    3072              : !> \param s8 ...
    3073              : !> \param s9 ...
    3074              : !> \param s10 ...
    3075              : !> \param s11 ...
    3076              : !> \param s12 ...
    3077              : !> \param s13 ...
    3078              : !> \param s14 ...
    3079              : !> \param s15 ...
    3080              : !> \param s16 ...
    3081              : !> \param s17 ...
    3082              : !> \param s18 ...
    3083              : !> \param s19 ...
    3084              : !> \param s20 ...
    3085              : !> \param s21 ...
    3086              : !> \param s22 ...
    3087              : !> \param s23 ...
    3088              : !> \param s24 ...
    3089              : !> \param s25 ...
    3090              : !> \param s26 ...
    3091              : !> \param s27 ...
    3092              : !> \param s28 ...
    3093              : !> \param s29 ...
    3094              : !> \param s30 ...
    3095              : !> \param s31 ...
    3096              : !> \param s32 ...
    3097              : !> \param s33 ...
    3098              : !> \param s34 ...
    3099              : !> \param s35 ...
    3100              : !> \param s36 ...
    3101              : !> \param s37 ...
    3102              : !> \param s38 ...
    3103              : !> \param s39 ...
    3104              : !> \param s40 ...
    3105              : !> \param s41 ...
    3106              : !> \param s42 ...
    3107              : !> \param s43 ...
    3108              : !> \param s44 ...
    3109              : !> \param s45 ...
    3110              : !> \param s46 ...
    3111              : !> \param s47 ...
    3112              : !> \param s48 ...
    3113              : !> \param s49 ...
    3114              : !> \param s50 ...
    3115              : !> \param s51 ...
    3116              : !> \param s52 ...
    3117              : !> \param s53 ...
    3118              : !> \param s54 ...
    3119              : !> \param s55 ...
    3120              : !> \param s56 ...
    3121              : !> \param s57 ...
    3122              : !> \param s58 ...
    3123              : !> \param s59 ...
    3124              : !> \param s60 ...
    3125              : !> \return ...
    3126              : ! **************************************************************************************************
    3127            0 :    PURE FUNCTION s2a_60(s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, &
    3128              :                         s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, &
    3129              :                         s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, &
    3130              :                         s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, &
    3131              :                         s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    3132            0 :                         s51, s52, s53, s54, s55, s56, s57, s58, s59, s60) RESULT(a)
    3133              :       CHARACTER(LEN=*), INTENT(IN) :: s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, &
    3134              :          s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31, s32, &
    3135              :          s33, s34, s35, s36, s37, s38, s39, s40, s41, s42, s43, s44, s45, s46, s47, s48, s49, s50, &
    3136              :          s51, s52, s53, s54, s55, s56, s57, s58, s59, s60
    3137              :       CHARACTER(LEN=1000), DIMENSION(60)                 :: a
    3138              : 
    3139            0 :       a(1) = s1; a(2) = s2; a(3) = s3; a(4) = s4; a(5) = s5
    3140            0 :       a(6) = s6; a(7) = s7; a(8) = s8; a(9) = s9; a(10) = s10
    3141            0 :       a(11) = s11; a(12) = s12; a(13) = s13; a(14) = s14; a(15) = s15
    3142            0 :       a(16) = s16; a(17) = s17; a(18) = s18; a(19) = s19; a(20) = s20
    3143            0 :       a(21) = s21; a(22) = s22; a(23) = s23; a(24) = s24; a(25) = s25
    3144            0 :       a(26) = s26; a(27) = s27; a(28) = s28; a(29) = s29; a(30) = s30
    3145            0 :       a(31) = s31; a(32) = s32; a(33) = s33; a(34) = s34; a(35) = s35
    3146            0 :       a(36) = s36; a(37) = s37; a(38) = s38; a(39) = s39; a(40) = s40
    3147            0 :       a(41) = s41; a(42) = s42; a(43) = s43; a(44) = s44; a(45) = s45
    3148            0 :       a(46) = s46; a(47) = s47; a(48) = s48; a(49) = s49; a(50) = s50
    3149            0 :       a(51) = s51; a(52) = s52; a(53) = s53; a(54) = s54; a(55) = s55
    3150            0 :       a(56) = s56; a(57) = s57; a(58) = s58; a(59) = s59; a(60) = s60
    3151            0 :    END FUNCTION s2a_60
    3152              : 
    3153              : ! **************************************************************************************************
    3154              : !> \brief Convert a sequence of integer numbers (ASCII code) to a string.
    3155              : !>         Blanks are inserted for invalid ASCII code numbers.
    3156              : !> \param nascii ...
    3157              : !> \param string ...
    3158              : !> \date    19.10.2000
    3159              : !> \author  MK
    3160              : !> \version 1.0
    3161              : ! **************************************************************************************************
    3162       121908 :    SUBROUTINE ascii_to_string(nascii, string)
    3163              : 
    3164              :       INTEGER, DIMENSION(:), INTENT(IN)                  :: nascii
    3165              :       CHARACTER(LEN=*), INTENT(OUT)                      :: string
    3166              : 
    3167              :       INTEGER                                            :: i
    3168              : 
    3169        60954 :       string = ""
    3170              : 
    3171     14590522 :       DO i = 1, MIN(LEN(string), SIZE(nascii))
    3172     14590522 :          IF ((nascii(i) >= 0) .AND. (nascii(i) <= 127)) THEN
    3173     14529568 :             string(i:i) = CHAR(nascii(i))
    3174              :          ELSE
    3175            0 :             string(i:i) = " "
    3176              :          END IF
    3177              :       END DO
    3178              : 
    3179        60954 :    END SUBROUTINE ascii_to_string
    3180              : 
    3181              : ! **************************************************************************************************
    3182              : !> \brief   Eliminate multiple space characters in a string.
    3183              : !>          If full is .TRUE., then all spaces are eliminated.
    3184              : !> \param string ...
    3185              : !> \param full ...
    3186              : !> \date    23.06.1998
    3187              : !> \author  MK
    3188              : !> \version 1.0
    3189              : ! **************************************************************************************************
    3190     58353526 :    SUBROUTINE compress(string, full)
    3191              : 
    3192              :       CHARACTER(LEN=*), INTENT(INOUT)                    :: string
    3193              :       LOGICAL, INTENT(IN), OPTIONAL                      :: full
    3194              : 
    3195              :       CHARACTER                                          :: tmp
    3196              :       INTEGER                                            :: i, z
    3197              :       LOGICAL                                            :: remove_all
    3198              : 
    3199     58353526 :       IF (PRESENT(full)) THEN
    3200     58006937 :          remove_all = full
    3201              :       ELSE
    3202              :          remove_all = .FALSE.
    3203              :       END IF
    3204              : 
    3205     58353526 :       z = 1
    3206              : 
    3207    589382037 :       DO i = 1, LEN_TRIM(string)
    3208    589382037 :          IF ((z == 1) .OR. remove_all) THEN
    3209    522908051 :             IF (string(i:i) /= " ") THEN
    3210    191102411 :                tmp = string(i:i)
    3211    191102411 :                string(z:z) = tmp
    3212    191102411 :                z = z + 1
    3213              :             END IF
    3214              :          ELSE
    3215      8120460 :             IF ((string(i:i) /= " ") .OR. (string(z - 1:z - 1) /= " ")) THEN
    3216      7987932 :                tmp = string(i:i)
    3217      7987932 :                string(z:z) = tmp
    3218      7987932 :                z = z + 1
    3219              :             END IF
    3220              :          END IF
    3221              :       END DO
    3222              : 
    3223     58353526 :       string(z:) = ""
    3224              : 
    3225     58353526 :    END SUBROUTINE compress
    3226              : 
    3227              : ! **************************************************************************************************
    3228              : !> \brief   Converts an integer number to a string.
    3229              : !>          The WRITE statement will return an error message, if the number of
    3230              : !>          digits of the integer number is larger the than the length of the
    3231              : !>          supplied string.
    3232              : !> \param inumber ...
    3233              : !> \param string ...
    3234              : !> \date    05.01.2004
    3235              : !> \author  MK
    3236              : !> \version 1.0
    3237              : ! **************************************************************************************************
    3238       241733 :    SUBROUTINE integer_to_string(inumber, string)
    3239              : 
    3240              :       INTEGER, INTENT(IN)                                :: inumber
    3241              :       CHARACTER(LEN=*), INTENT(OUT)                      :: string
    3242              : 
    3243       241733 :       WRITE (UNIT=string, FMT='(I0)') inumber
    3244       241733 :    END SUBROUTINE integer_to_string
    3245              : 
    3246              : ! **************************************************************************************************
    3247              : !> \brief   Convert a string to sequence of integer numbers.
    3248              : !> \param string ...
    3249              : !> \param nascii ...
    3250              : !> \date    19.10.2000
    3251              : !> \author  MK
    3252              : !> \version 1.0
    3253              : ! **************************************************************************************************
    3254        25854 :    SUBROUTINE string_to_ascii(string, nascii)
    3255              : 
    3256              :       CHARACTER(LEN=*), INTENT(IN)                       :: string
    3257              :       INTEGER, DIMENSION(:), INTENT(OUT)                 :: nascii
    3258              : 
    3259              :       INTEGER                                            :: i
    3260              : 
    3261      7237787 :       nascii(:) = 0
    3262              : 
    3263      7237787 :       DO i = 1, MIN(LEN(string), SIZE(nascii))
    3264      7237787 :          nascii(i) = ICHAR(string(i:i))
    3265              :       END DO
    3266              : 
    3267        25854 :    END SUBROUTINE string_to_ascii
    3268              : 
    3269              : ! **************************************************************************************************
    3270              : !> \brief   remove a word from a string (words are separated by white spaces)
    3271              : !> \param string ...
    3272              : !> \version 1.0
    3273              : ! **************************************************************************************************
    3274         8798 :    SUBROUTINE remove_word(string)
    3275              :       CHARACTER(LEN=*), INTENT(INOUT)                    :: string
    3276              : 
    3277              :       INTEGER                                            :: i
    3278              : 
    3279         8798 :       i = 1
    3280              :       ! possibly clean white spaces
    3281        40480 :       DO WHILE (string(i:i) == " ")
    3282        31682 :          i = i + 1
    3283              :       END DO
    3284              :       ! now remove the word
    3285        86018 :       DO WHILE (string(i:i) /= " ")
    3286        77220 :          i = i + 1
    3287              :       END DO
    3288         8798 :       string = string(i:)
    3289              : 
    3290         8798 :    END SUBROUTINE remove_word
    3291              : 
    3292              : ! **************************************************************************************************
    3293              : !> \brief Substitutes the five predefined XML entities: &amp;, &lt;, &gt;, &apos;, and &quot;.
    3294              : !> \param inp_string ...
    3295              : !> \return ...
    3296              : !> !> \author Ole Schuett
    3297              : ! **************************************************************************************************
    3298            0 :    FUNCTION substitute_special_xml_tokens(inp_string) RESULT(out_string)
    3299              : 
    3300              :       CHARACTER(LEN=*), INTENT(IN)                       :: inp_string
    3301              :       CHARACTER(LEN=2*LEN(inp_string))                   :: out_string
    3302              : 
    3303              :       INTEGER                                            :: i, j
    3304              : 
    3305            0 :       out_string = ""
    3306              : 
    3307            0 :       j = 1
    3308            0 :       DO i = 1, LEN_TRIM(inp_string)
    3309            0 :          SELECT CASE (inp_string(i:i))
    3310              :          CASE ("<")
    3311            0 :             out_string(j:j + 3) = "&lt;"
    3312            0 :             j = j + 4
    3313              :          CASE (">")
    3314            0 :             out_string(j:j + 3) = "&gt;"
    3315            0 :             j = j + 4
    3316              :          CASE ("&")
    3317            0 :             out_string(j:j + 4) = "&amp;"
    3318            0 :             j = j + 5
    3319              :          CASE ("'")
    3320            0 :             out_string(j:j + 5) = "&apos;"
    3321            0 :             j = j + 6
    3322              :          CASE ('"')
    3323            0 :             out_string(j:j + 5) = "&quot;"
    3324            0 :             j = j + 6
    3325              :          CASE DEFAULT
    3326            0 :             out_string(j:j) = inp_string(i:i)
    3327            0 :             j = j + 1
    3328              :          END SELECT
    3329              :       END DO
    3330              : 
    3331            0 :    END FUNCTION substitute_special_xml_tokens
    3332              : 
    3333              : ! **************************************************************************************************
    3334              : !> \brief   Convert all upper case characters in a string to lower case.
    3335              : !> \param string ...
    3336              : !> \date    14.08.2013
    3337              : !> \author  Matthias Krack (MK)
    3338              : !> \version 1.0
    3339              : ! **************************************************************************************************
    3340         1830 :    ELEMENTAL SUBROUTINE lowercase(string)
    3341              :       CHARACTER(LEN=*), INTENT(INOUT)                    :: string
    3342              : 
    3343              :       INTEGER                                            :: i, iascii
    3344              : 
    3345        15285 :       DO i = 1, LEN_TRIM(string)
    3346        13455 :          iascii = ICHAR(string(i:i))
    3347        15285 :          IF ((iascii >= 65) .AND. (iascii <= 90)) THEN
    3348         1830 :             string(i:i) = CHAR(iascii + 32)
    3349              :          END IF
    3350              :       END DO
    3351              : 
    3352         1830 :    END SUBROUTINE lowercase
    3353              : 
    3354              : ! **************************************************************************************************
    3355              : !> \brief   Convert all lower case characters in a string to upper case.
    3356              : !> \param string ...
    3357              : !> \date    22.06.1998
    3358              : !> \author  MK
    3359              : !> \version 1.0
    3360              : ! **************************************************************************************************
    3361   1677732833 :    ELEMENTAL SUBROUTINE uppercase(string)
    3362              :       CHARACTER(LEN=*), INTENT(INOUT)                    :: string
    3363              : 
    3364              :       INTEGER                                            :: i, iascii
    3365              : 
    3366  19706212684 :       DO i = 1, LEN_TRIM(string)
    3367  18028479851 :          iascii = ICHAR(string(i:i))
    3368  19706212684 :          IF ((iascii >= 97) .AND. (iascii <= 122)) THEN
    3369   4253002658 :             string(i:i) = CHAR(iascii - 32)
    3370              :          END IF
    3371              :       END DO
    3372              : 
    3373   1677732833 :    END SUBROUTINE uppercase
    3374              : 
    3375              : ! **************************************************************************************************
    3376              : !> \brief ...
    3377              : !> \param string ...
    3378              : !> \param ia ...
    3379              : !> \param ib ...
    3380              : ! **************************************************************************************************
    3381         3754 :    ELEMENTAL SUBROUTINE xstring(string, ia, ib)
    3382              : 
    3383              :       CHARACTER(LEN=*), INTENT(IN)                       :: string
    3384              :       INTEGER, INTENT(OUT)                               :: ia, ib
    3385              : 
    3386         3754 :       ia = 1
    3387         3754 :       ib = LEN_TRIM(string)
    3388         3754 :       IF (ib > 0) THEN
    3389         3754 :          DO WHILE (string(ia:ia) == ' ')
    3390            0 :             ia = ia + 1
    3391              :          END DO
    3392              :       END IF
    3393              : 
    3394         3754 :    END SUBROUTINE xstring
    3395              : 
    3396              : ! **************************************************************************************************
    3397              : !> \brief ...
    3398              : !> \param str1 ...
    3399              : !> \param str2 ...
    3400              : !> \return ...
    3401              : ! **************************************************************************************************
    3402            2 :    ELEMENTAL FUNCTION str_comp(str1, str2) RESULT(equal)
    3403              : 
    3404              :       CHARACTER(LEN=*), INTENT(IN)                       :: str1, str2
    3405              :       LOGICAL                                            :: equal
    3406              : 
    3407              :       INTEGER                                            :: i1, i2, j1, j2
    3408              : 
    3409            2 :       i1 = 0
    3410            2 :       i2 = 0
    3411            2 :       j1 = 0
    3412            2 :       j2 = 0
    3413            2 :       CALL xstring(str1, i1, i2)
    3414            2 :       CALL xstring(str2, j1, j2)
    3415            2 :       equal = (str1(i1:i2) == str2(j1:j2))
    3416            2 :    END FUNCTION str_comp
    3417              : 
    3418              : ! **************************************************************************************************
    3419              : !> \brief returns .true. if the character passed is a whitespace char.
    3420              : !> \param testchar ...
    3421              : !> \return ...
    3422              : !> \par History
    3423              : !>      02.2008 created, AK
    3424              : ! **************************************************************************************************
    3425    967029696 :    ELEMENTAL FUNCTION is_whitespace(testchar) RESULT(resval)
    3426              :       CHARACTER(LEN=1), INTENT(IN)                       :: testchar
    3427              :       LOGICAL                                            :: resval
    3428              : 
    3429    967029696 :       resval = .FALSE.
    3430   1203396976 :       IF (ANY(default_blank_character == testchar)) resval = .TRUE.
    3431    967029696 :    END FUNCTION is_whitespace
    3432              : 
    3433              : ! **************************************************************************************************
    3434              : !> \brief Strip control codes and extended characters from a string, i.e. replace them with blanks
    3435              : !> \param string ...
    3436              : !> \date    13.12.2019
    3437              : !> \author  MK
    3438              : !> \version 1.0
    3439              : ! **************************************************************************************************
    3440         1332 :    ELEMENTAL SUBROUTINE strip_control_codes(string)
    3441              : 
    3442              :       CHARACTER(LEN=*), INTENT(INOUT)                    :: string
    3443              : 
    3444              :       INTEGER                                            :: i, iascii
    3445              : 
    3446        13320 :       DO i = 1, LEN(string)
    3447        11988 :          iascii = ICHAR(string(i:i))
    3448        13320 :          IF ((iascii < 32) .OR. (iascii > 126)) string(i:i) = " "
    3449              :       END DO
    3450              : 
    3451         1332 :    END SUBROUTINE strip_control_codes
    3452              : 
    3453              : ! **************************************************************************************************
    3454              : !> \brief Copy the content of a \0-terminated C-string to a finite-length Fortran string
    3455              : !>
    3456              : !> The content of the new string may be truncated if the number of characters before the '\0'
    3457              : !> in the source string exceed the length of the destination string. Based on the strlcpy C function.
    3458              : !> \param fstring destination string
    3459              : !> \param cstring source string
    3460              : !> \return the number of characters copied
    3461              : !> \author Tiziano Müller
    3462              : ! **************************************************************************************************
    3463           46 :    FUNCTION strlcpy_c2f(fstring, cstring) RESULT(nchar)
    3464              :       CHARACTER(LEN=*), INTENT(OUT)                      :: fstring
    3465              :       CHARACTER(LEN=1, KIND=C_CHAR), INTENT(IN)          :: cstring(*)
    3466              :       INTEGER                                            :: nchar
    3467              : 
    3468          260 :       DO nchar = 1, LEN(fstring)
    3469          260 :          IF (cstring(nchar) == C_NULL_CHAR) EXIT
    3470          260 :          fstring(nchar:nchar) = cstring(nchar)
    3471              :       END DO
    3472              : 
    3473           46 :       nchar = nchar - 1
    3474           46 :    END FUNCTION strlcpy_c2f
    3475              : 
    3476              : END MODULE string_utilities
        

Generated by: LCOV version 2.0-1