LCOV - code coverage report
Current view: top level - src/common - string_utilities.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:9843133) Lines: 275 643 42.8 %
Date: 2024-05-10 06:53:45 Functions: 45 76 59.2 %

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

Generated by: LCOV version 1.15