LCOV - code coverage report
Current view: top level - src/common - string_utilities.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:262480d) Lines: 171 643 26.6 %
Date: 2024-11-22 07:00:40 Functions: 31 76 40.8 %

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

Generated by: LCOV version 1.15