https://www.cdslab.org/paramonte/fortran/2
Current view: top level - main - pm_arraySort.F90 (source / functions) Hit Total Coverage
Test: ParaMonte 2.0.0 :: Serial Fortran - Code Coverage Report Lines: 0 1 0.0 %
Date: 2024-04-08 03:18:57 Functions: 0 15 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       2             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       3             : !!!!                                                                                                                            !!!!
       4             : !!!!    ParaMonte: Parallel Monte Carlo and Machine Learning Library.                                                           !!!!
       5             : !!!!                                                                                                                            !!!!
       6             : !!!!    Copyright (C) 2012-present, The Computational Data Science Lab                                                          !!!!
       7             : !!!!                                                                                                                            !!!!
       8             : !!!!    This file is part of the ParaMonte library.                                                                             !!!!
       9             : !!!!                                                                                                                            !!!!
      10             : !!!!    LICENSE                                                                                                                 !!!!
      11             : !!!!                                                                                                                            !!!!
      12             : !!!!       https://github.com/cdslaborg/paramonte/blob/main/LICENSE.md                                                          !!!!
      13             : !!!!                                                                                                                            !!!!
      14             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      15             : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      16             : 
      17             : !>  \brief
      18             : !>  This module contains procedures and generic interfaces for various sorting tasks.<br>
      19             : !>
      20             : !>  \details
      21             : !>  Specifically, the generic interfaces of this module fall into three categories:<br>
      22             : !>  <ol>
      23             : !>          <li>    Testing whether an array of intrinsic type and kind is in
      24             : !>                  <ol>
      25             : !>                      <li>    [ascending](@ref pm_arraySort::isAscending),
      26             : !>                      <li>    [descending](@ref pm_arraySort::isDescending),
      27             : !>                      <li>    [sorted (i.e., either ascending or descending)](@ref pm_arraySort::isSorted),
      28             : !>                      <li>    [all ascending (i.e., strictly ascending with no duplicates)](@ref pm_arraySort::isSorted),
      29             : !>                      <li>    [all descending (i.e., strictly descending with no duplicates)](@ref pm_arraySort::isSorted),
      30             : !>                      <li>    [user-specified](@ref pm_arraySort::isSorted),
      31             : !>                  </ol>
      32             : !>                  order.<br>
      33             : !>          <li>    [Sorting the indices](@ref pm_arraySort::setSorted) of an array of intrinsic type and kind in ascending order.<br>
      34             : !>          <li>    [Sorting the elements](@ref pm_arraySort::setSorted) of an array of intrinsic type and kind in ascending order.<br>
      35             : !>          <li>    [Generating sorted indices](@ref pm_arraySort::getSorted) of an array of intrinsic type and kind in ascending order.<br>
      36             : !>          <li>    [Generating sorted elements](@ref pm_arraySort::getSorted) of an array of intrinsic type and kind in ascending order.<br>
      37             : !>  </ol>
      38             : !>
      39             : !>  There are currently twelve different sorting algorithms implemented in
      40             : !>  this module in addition to index sorting and sort checking algorithms.<br>
      41             : !>
      42             : !>  \note
      43             : !>  <b>Recommended routines for sorting arrays:</b><br>
      44             : !>  The procedures under the generic interface [setSorted](@ref pm_arraySort::setSorted) with default
      45             : !<  method are among the fastest sorting algorithms, particularly for fully random input arrays.<br>
      46             : !>
      47             : !>  \benchmarks
      48             : !>
      49             : !>  \benchmark{sorting}
      50             : !>  The following is program to test the performance of the different sorting algorithms in this module.<br>
      51             : !>  \include{lineno} benchmark/pm_arraySort/sorting/main.F90
      52             : !>  \compilefb{sorting}
      53             : !>  \postprocb{sorting}
      54             : !>  \include{lineno} benchmark/pm_arraySort/sorting/main.py
      55             : !>  \visb{sorting}
      56             : !>  \image html benchmark/pm_arraySort/sorting/benchmark.sorting.random.png width=1000
      57             : !>  \image html benchmark/pm_arraySort/sorting/benchmark.sorting.sorted.png width=1000
      58             : !>  \image html benchmark/pm_arraySort/sorting/benchmark.sorting.random.sorted.ratio.png width=1000
      59             : !>
      60             : !>  \benchmark{sorting_vs_indexing, sorting vs. indexing}
      61             : !>  The following program generates a performance comparison of the [setSorted](@ref pm_arraySort::setSorted) algorithm for various sorting methods.
      62             : !>  \include{lineno} benchmark/pm_arraySort/sorting_vs_indexing/main.F90
      63             : !>  \compilefb{sorting_vs_indexing}
      64             : !>  \postprocb{sorting_vs_indexing}
      65             : !>  \include{lineno} benchmark/pm_arraySort/sorting_vs_indexing/main.py
      66             : !>  \visb{sorting_vs_indexing}
      67             : !>  \image html benchmark/pm_arraySort/sorting_vs_indexing/benchmark.sorting_vs_indexing.random.png width=1000
      68             : !>  \image html benchmark/pm_arraySort/sorting_vs_indexing/benchmark.sorting_vs_indexing.random.ratio.png width=1000
      69             : !>  \image html benchmark/pm_arraySort/sorting_vs_indexing/benchmark.sorting_vs_indexing.sorted.png width=1000
      70             : !>  \image html benchmark/pm_arraySort/sorting_vs_indexing/benchmark.sorting_vs_indexing.sorted.ratio.png width=1000
      71             : !>
      72             : !>  \todo
      73             : !>  \pvlow
      74             : !>  An equivalent functional versions of [setSorted](@ref pm_arraySort::setSorted) and
      75             : !>  [setSorted](@ref pm_arraySort::setSorted) could be added along with the relevant benchmarks.<br>
      76             : !>
      77             : !>  \remark
      78             : !>  The sorting routines of this module are inspired by (although substantially different from),
      79             : !>  +   the works of <a href="https://www.mjr19.org.uk/IT/sorts/" target="_blank">Dr. Michael Rutter</a> and,
      80             : !>  +   the [Numerical Recipes in Fortran](https://www.amazon.com/Numerical-Recipes-Fortran-Scientific-Computing/dp/052143064X/) by Press et al., 1992.
      81             : !>
      82             : !>  \finmain
      83             : !>
      84             : !>  \author
      85             : !>  \AmirShahmoradi, April 21, 2017, 1:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
      86             : 
      87             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      88             : 
      89             : module pm_arraySort
      90             : 
      91             :     use pm_kind, only: IK, LK, RK, SK
      92             : 
      93             :     implicit none
      94             : 
      95             :     character(*,SK), parameter :: MODULE_NAME = "@pm_arraySort"
      96             : 
      97             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      98             : 
      99             :     type :: isort_type; end type
     100             :     type, abstract :: sort_type; end type
     101             :     type, extends(sort_type) :: qsort_type; end type
     102             :     type, extends(qsort_type) :: qsorti_type; end type
     103             :     type, extends(sort_type) :: heap_type; end type
     104             :     type, extends(sort_type) :: insertion_type; end type
     105             : 
     106             :     type, extends(qsort_type) :: qsortr_type; end type
     107             :     type, extends(qsort_type) :: qsortrdp_type; end type
     108             :     type, extends(sort_type) :: bubble_type; end type
     109             :     type, extends(heap_type):: heapi_type; end type
     110             :     type, extends(heap_type):: heapr_type; end type
     111             :     type, extends(insertion_type) :: insertionl_type; end type
     112             :     type, extends(insertion_type) :: insertionb_type; end type
     113             :     type, extends(sort_type) :: merger_type; end type
     114             :     type, extends(sort_type) :: selection_type; end type
     115             :     type, extends(sort_type) :: shell_type; end type
     116             : 
     117             :     type(isort_type), parameter :: isort = isort_type()
     118             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     119             :     !DIR$ ATTRIBUTES DLLEXPORT :: isort
     120             : #endif
     121             : 
     122             :     type(qsorti_type), parameter :: qsorti = qsorti_type()
     123             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     124             :     !DIR$ ATTRIBUTES DLLEXPORT :: qsorti
     125             : #endif
     126             :     type(qsortr_type), parameter :: qsortr = qsortr_type()
     127             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     128             :     !DIR$ ATTRIBUTES DLLEXPORT :: qsortr
     129             : #endif
     130             :     type(qsortrdp_type), parameter :: qsortrdp = qsortrdp_type()
     131             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     132             :     !DIR$ ATTRIBUTES DLLEXPORT :: qsortrdp
     133             : #endif
     134             :     type(bubble_type), parameter :: bubble = bubble_type()
     135             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     136             :     !DIR$ ATTRIBUTES DLLEXPORT :: bubble
     137             : #endif
     138             :     type(heapi_type), parameter :: heapi = heapi_type()
     139             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     140             :     !DIR$ ATTRIBUTES DLLEXPORT :: heapi
     141             : #endif
     142             :     type(heapr_type), parameter :: heapr = heapr_type()
     143             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     144             :     !DIR$ ATTRIBUTES DLLEXPORT :: heapr
     145             : #endif
     146             :     type(insertionl_type), parameter :: insertionl = insertionl_type()
     147             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     148             :     !DIR$ ATTRIBUTES DLLEXPORT :: insertionl
     149             : #endif
     150             :     type(insertionb_type), parameter :: insertionb = insertionb_type()
     151             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     152             :     !DIR$ ATTRIBUTES DLLEXPORT :: insertionb
     153             : #endif
     154             :     type(merger_type), parameter :: merger = merger_type()
     155             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     156             :     !DIR$ ATTRIBUTES DLLEXPORT :: merger
     157             : #endif
     158             :     type(selection_type), parameter :: selection = selection_type()
     159             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     160             :     !DIR$ ATTRIBUTES DLLEXPORT :: selection
     161             : #endif
     162             :     type(shell_type), parameter :: shell = shell_type()
     163             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     164             :     !DIR$ ATTRIBUTES DLLEXPORT :: shell
     165             : #endif
     166             : 
     167             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     168             : 
     169             :     !>  \brief
     170             :     !>  Generate and return `.true.` if the input array is sorted in **strictly** all ascending order (**without** equal elements),
     171             :     !>  otherwise, generate and return `.false.`.
     172             :     !>
     173             :     !>  \param[in]  array       :   The input `contiguous` array of rank `1` of either<br>
     174             :     !>                              <ol>
     175             :     !>                                  <li>    type [css_pdt](@ref pm_container::css_pdt) or,<br>
     176             :     !>                                  <li>    type [css_type](@ref pm_container::css_type) or,<br>
     177             :     !>                                  <li>    type `character` of kind \SKALL of arbitrary length type parameter or,<br>
     178             :     !>                                  <li>    type `integer` of kind \IKALL or,<br>
     179             :     !>                                  <li>    type `logical` of kind \LKALL or,<br>
     180             :     !>                                  <li>    type `complex` of kind \CKALL or,<br>
     181             :     !>                                  <li>    type `real` of kind \RKALL or,<br>
     182             :     !>                              </ol>
     183             :     !>                              or,
     184             :     !>                              <ol>
     185             :     !>                                  <li>    a *scalar* of type `character` of kind \SKALL of arbitrary length type parameter,<br>
     186             :     !>                              </ol>
     187             :     !>                              whose elements will be checked for a **strictly** all ascending order (**without** equal elements).
     188             :     !>
     189             :     !>  \return
     190             :     !>  `ascendingAll`          :   The output scalar `logical` of default kind \LK that is `.true.` if elements of the input array are
     191             :     !>                              in **strictly** all ascending order (**without** equal elements), Otherwise, it is `.false.`.
     192             :     !>
     193             :     !>  \interface{isAscendingAll}
     194             :     !>  \code{.F90}
     195             :     !>
     196             :     !>      use pm_arraySort, only: isAscendingAll
     197             :     !>
     198             :     !>      ascendingAll = isAscendingAll(array)
     199             :     !>
     200             :     !>  \endcode
     201             :     !>
     202             :     !>  \warning
     203             :     !>  The output of this procedure is `.true.` when the input array has zero length.
     204             :     !>
     205             :     !>  \warnpure
     206             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.
     207             :     !>
     208             :     !>  \see
     209             :     !>  [isSorted](@ref pm_arraySort::isSorted)<br>
     210             :     !>  [isDescending](@ref pm_arraySort::isDescending)<br>
     211             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
     212             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
     213             :     !>
     214             :     !>  \example{isAscendingAll}
     215             :     !>  \include{lineno} example/pm_arraySort/isAscendingAll/main.F90
     216             :     !>  \compilef{isAscendingAll}
     217             :     !>  \output{isAscendingAll}
     218             :     !>  \include{lineno} example/pm_arraySort/isAscendingAll/main.out.F90
     219             :     !>
     220             :     !>  \test
     221             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
     222             :     !>
     223             :     !>  \todo
     224             :     !>  This interface can be extended to scalar containers of strings.
     225             :     !>
     226             :     !>  \finmain{isAscendingAll}
     227             :     !>
     228             :     !>  \author
     229             :     !>  \AmirShahmoradi, April 21, 2017, 3:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     230             : 
     231             :     interface isAscendingAll
     232             : 
     233             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     234             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     235             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     236             : 
     237             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     238             : 
     239             : #if SK5_ENABLED
     240             :     PURE module function isAscendingAllDefCom_D0_SK5(array) result(ascendingAll)
     241             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     242             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D0_SK5
     243             : #endif
     244             :         use pm_kind, only: SKC => SK5
     245             :         character(*,SKC)        , intent(in)                    :: array
     246             :         logical(LK)                                             :: ascendingAll
     247             :     end function
     248             : #endif
     249             : 
     250             : #if SK4_ENABLED
     251             :     PURE module function isAscendingAllDefCom_D0_SK4(array) result(ascendingAll)
     252             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     253             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D0_SK4
     254             : #endif
     255             :         use pm_kind, only: SKC => SK4
     256             :         character(*,SKC)        , intent(in)                    :: array
     257             :         logical(LK)                                             :: ascendingAll
     258             :     end function
     259             : #endif
     260             : 
     261             : #if SK3_ENABLED
     262             :     PURE module function isAscendingAllDefCom_D0_SK3(array) result(ascendingAll)
     263             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     264             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D0_SK3
     265             : #endif
     266             :         use pm_kind, only: SKC => SK3
     267             :         character(*,SKC)        , intent(in)                    :: array
     268             :         logical(LK)                                             :: ascendingAll
     269             :     end function
     270             : #endif
     271             : 
     272             : #if SK2_ENABLED
     273             :     PURE module function isAscendingAllDefCom_D0_SK2(array) result(ascendingAll)
     274             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     275             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D0_SK2
     276             : #endif
     277             :         use pm_kind, only: SKC => SK2
     278             :         character(*,SKC)        , intent(in)                    :: array
     279             :         logical(LK)                                             :: ascendingAll
     280             :     end function
     281             : #endif
     282             : 
     283             : #if SK1_ENABLED
     284             :     PURE module function isAscendingAllDefCom_D0_SK1(array) result(ascendingAll)
     285             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     286             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D0_SK1
     287             : #endif
     288             :         use pm_kind, only: SKC => SK1
     289             :         character(*,SKC)        , intent(in)                    :: array
     290             :         logical(LK)                                             :: ascendingAll
     291             :     end function
     292             : #endif
     293             : 
     294             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     295             : 
     296             : #if SK5_ENABLED
     297             :     PURE module function isAscendingAllDefCom_D1_SK5(array) result(ascendingAll)
     298             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     299             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_SK5
     300             : #endif
     301             :         use pm_kind, only: SKC => SK5
     302             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     303             :         logical(LK)                                             :: ascendingAll
     304             :     end function
     305             : #endif
     306             : 
     307             : #if SK4_ENABLED
     308             :     PURE module function isAscendingAllDefCom_D1_SK4(array) result(ascendingAll)
     309             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     310             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_SK4
     311             : #endif
     312             :         use pm_kind, only: SKC => SK4
     313             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     314             :         logical(LK)                                             :: ascendingAll
     315             :     end function
     316             : #endif
     317             : 
     318             : #if SK3_ENABLED
     319             :     PURE module function isAscendingAllDefCom_D1_SK3(array) result(ascendingAll)
     320             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     321             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_SK3
     322             : #endif
     323             :         use pm_kind, only: SKC => SK3
     324             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     325             :         logical(LK)                                             :: ascendingAll
     326             :     end function
     327             : #endif
     328             : 
     329             : #if SK2_ENABLED
     330             :     PURE module function isAscendingAllDefCom_D1_SK2(array) result(ascendingAll)
     331             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     332             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_SK2
     333             : #endif
     334             :         use pm_kind, only: SKC => SK2
     335             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     336             :         logical(LK)                                             :: ascendingAll
     337             :     end function
     338             : #endif
     339             : 
     340             : #if SK1_ENABLED
     341             :     PURE module function isAscendingAllDefCom_D1_SK1(array) result(ascendingAll)
     342             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     343             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_SK1
     344             : #endif
     345             :         use pm_kind, only: SKC => SK1
     346             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     347             :         logical(LK)                                             :: ascendingAll
     348             :     end function
     349             : #endif
     350             : 
     351             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     352             : 
     353             : #if IK5_ENABLED
     354             :     PURE module function isAscendingAllDefCom_D1_IK5(array) result(ascendingAll)
     355             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     356             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_IK5
     357             : #endif
     358             :         use pm_kind, only: IKC => IK5
     359             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     360             :         logical(LK)                                             :: ascendingAll
     361             :     end function
     362             : #endif
     363             : 
     364             : #if IK4_ENABLED
     365             :     PURE module function isAscendingAllDefCom_D1_IK4(array) result(ascendingAll)
     366             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     367             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_IK4
     368             : #endif
     369             :         use pm_kind, only: IKC => IK4
     370             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     371             :         logical(LK)                                             :: ascendingAll
     372             :     end function
     373             : #endif
     374             : 
     375             : #if IK3_ENABLED
     376             :     PURE module function isAscendingAllDefCom_D1_IK3(array) result(ascendingAll)
     377             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     378             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_IK3
     379             : #endif
     380             :         use pm_kind, only: IKC => IK3
     381             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     382             :         logical(LK)                                             :: ascendingAll
     383             :     end function
     384             : #endif
     385             : 
     386             : #if IK2_ENABLED
     387             :     PURE module function isAscendingAllDefCom_D1_IK2(array) result(ascendingAll)
     388             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     389             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_IK2
     390             : #endif
     391             :         use pm_kind, only: IKC => IK2
     392             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     393             :         logical(LK)                                             :: ascendingAll
     394             :     end function
     395             : #endif
     396             : 
     397             : #if IK1_ENABLED
     398             :     PURE module function isAscendingAllDefCom_D1_IK1(array) result(ascendingAll)
     399             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     400             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_IK1
     401             : #endif
     402             :         use pm_kind, only: IKC => IK1
     403             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     404             :         logical(LK)                                             :: ascendingAll
     405             :     end function
     406             : #endif
     407             : 
     408             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     409             : 
     410             : #if LK5_ENABLED
     411             :     PURE module function isAscendingAllDefCom_D1_LK5(array) result(ascendingAll)
     412             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     413             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_LK5
     414             : #endif
     415             :         use pm_kind, only: LKC => LK5
     416             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     417             :         logical(LK)                                             :: ascendingAll
     418             :     end function
     419             : #endif
     420             : 
     421             : #if LK4_ENABLED
     422             :     PURE module function isAscendingAllDefCom_D1_LK4(array) result(ascendingAll)
     423             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     424             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_LK4
     425             : #endif
     426             :         use pm_kind, only: LKC => LK4
     427             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     428             :         logical(LK)                                             :: ascendingAll
     429             :     end function
     430             : #endif
     431             : 
     432             : #if LK3_ENABLED
     433             :     PURE module function isAscendingAllDefCom_D1_LK3(array) result(ascendingAll)
     434             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     435             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_LK3
     436             : #endif
     437             :         use pm_kind, only: LKC => LK3
     438             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     439             :         logical(LK)                                             :: ascendingAll
     440             :     end function
     441             : #endif
     442             : 
     443             : #if LK2_ENABLED
     444             :     PURE module function isAscendingAllDefCom_D1_LK2(array) result(ascendingAll)
     445             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     446             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_LK2
     447             : #endif
     448             :         use pm_kind, only: LKC => LK2
     449             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     450             :         logical(LK)                                             :: ascendingAll
     451             :     end function
     452             : #endif
     453             : 
     454             : #if LK1_ENABLED
     455             :     PURE module function isAscendingAllDefCom_D1_LK1(array) result(ascendingAll)
     456             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     457             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_LK1
     458             : #endif
     459             :         use pm_kind, only: LKC => LK1
     460             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     461             :         logical(LK)                                             :: ascendingAll
     462             :     end function
     463             : #endif
     464             : 
     465             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     466             : 
     467             : #if RK5_ENABLED
     468             :     PURE module function isAscendingAllDefCom_D1_RK5(array) result(ascendingAll)
     469             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     470             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_RK5
     471             : #endif
     472             :         use pm_kind, only: RKC => RK5
     473             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     474             :         logical(LK)                                             :: ascendingAll
     475             :     end function
     476             : #endif
     477             : 
     478             : #if RK4_ENABLED
     479             :     PURE module function isAscendingAllDefCom_D1_RK4(array) result(ascendingAll)
     480             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     481             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_RK4
     482             : #endif
     483             :         use pm_kind, only: RKC => RK4
     484             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     485             :         logical(LK)                                             :: ascendingAll
     486             :     end function
     487             : #endif
     488             : 
     489             : #if RK3_ENABLED
     490             :     PURE module function isAscendingAllDefCom_D1_RK3(array) result(ascendingAll)
     491             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     492             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_RK3
     493             : #endif
     494             :         use pm_kind, only: RKC => RK3
     495             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     496             :         logical(LK)                                             :: ascendingAll
     497             :     end function
     498             : #endif
     499             : 
     500             : #if RK2_ENABLED
     501             :     PURE module function isAscendingAllDefCom_D1_RK2(array) result(ascendingAll)
     502             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     503             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_RK2
     504             : #endif
     505             :         use pm_kind, only: RKC => RK2
     506             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     507             :         logical(LK)                                             :: ascendingAll
     508             :     end function
     509             : #endif
     510             : 
     511             : #if RK1_ENABLED
     512             :     PURE module function isAscendingAllDefCom_D1_RK1(array) result(ascendingAll)
     513             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     514             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_RK1
     515             : #endif
     516             :         use pm_kind, only: RKC => RK1
     517             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     518             :         logical(LK)                                             :: ascendingAll
     519             :     end function
     520             : #endif
     521             : 
     522             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     523             : 
     524             : #if CK5_ENABLED
     525             :     PURE module function isAscendingAllDefCom_D1_CK5(array) result(ascendingAll)
     526             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     527             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_CK5
     528             : #endif
     529             :         use pm_kind, only: CKC => CK5
     530             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
     531             :         logical(LK)                                             :: ascendingAll
     532             :     end function
     533             : #endif
     534             : 
     535             : #if CK4_ENABLED
     536             :     PURE module function isAscendingAllDefCom_D1_CK4(array) result(ascendingAll)
     537             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     538             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_CK4
     539             : #endif
     540             :         use pm_kind, only: CKC => CK4
     541             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
     542             :         logical(LK)                                             :: ascendingAll
     543             :     end function
     544             : #endif
     545             : 
     546             : #if CK3_ENABLED
     547             :     PURE module function isAscendingAllDefCom_D1_CK3(array) result(ascendingAll)
     548             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     549             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_CK3
     550             : #endif
     551             :         use pm_kind, only: CKC => CK3
     552             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
     553             :         logical(LK)                                             :: ascendingAll
     554             :     end function
     555             : #endif
     556             : 
     557             : #if CK2_ENABLED
     558             :     PURE module function isAscendingAllDefCom_D1_CK2(array) result(ascendingAll)
     559             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     560             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_CK2
     561             : #endif
     562             :         use pm_kind, only: CKC => CK2
     563             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
     564             :         logical(LK)                                             :: ascendingAll
     565             :     end function
     566             : #endif
     567             : 
     568             : #if CK1_ENABLED
     569             :     PURE module function isAscendingAllDefCom_D1_CK1(array) result(ascendingAll)
     570             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     571             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_CK1
     572             : #endif
     573             :         use pm_kind, only: CKC => CK1
     574             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
     575             :         logical(LK)                                             :: ascendingAll
     576             :     end function
     577             : #endif
     578             : 
     579             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     580             : 
     581             : #if SK5_ENABLED
     582             :     PURE module function isAscendingAllDefCom_D1_PSSK5(array) result(ascendingAll)
     583             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     584             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_PSSK5
     585             : #endif
     586             :         use pm_kind, only: SKC => SK5
     587             :         use pm_container, only: css_pdt
     588             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
     589             :         logical(LK)                                             :: ascendingAll
     590             :     end function
     591             : #endif
     592             : 
     593             : #if SK4_ENABLED
     594             :     PURE module function isAscendingAllDefCom_D1_PSSK4(array) result(ascendingAll)
     595             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     596             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_PSSK4
     597             : #endif
     598             :         use pm_kind, only: SKC => SK4
     599             :         use pm_container, only: css_pdt
     600             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
     601             :         logical(LK)                                             :: ascendingAll
     602             :     end function
     603             : #endif
     604             : 
     605             : #if SK3_ENABLED
     606             :     PURE module function isAscendingAllDefCom_D1_PSSK3(array) result(ascendingAll)
     607             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     608             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_PSSK3
     609             : #endif
     610             :         use pm_kind, only: SKC => SK3
     611             :         use pm_container, only: css_pdt
     612             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
     613             :         logical(LK)                                             :: ascendingAll
     614             :     end function
     615             : #endif
     616             : 
     617             : #if SK2_ENABLED
     618             :     PURE module function isAscendingAllDefCom_D1_PSSK2(array) result(ascendingAll)
     619             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     620             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_PSSK2
     621             : #endif
     622             :         use pm_kind, only: SKC => SK2
     623             :         use pm_container, only: css_pdt
     624             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
     625             :         logical(LK)                                             :: ascendingAll
     626             :     end function
     627             : #endif
     628             : 
     629             : #if SK1_ENABLED
     630             :     PURE module function isAscendingAllDefCom_D1_PSSK1(array) result(ascendingAll)
     631             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     632             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_PSSK1
     633             : #endif
     634             :         use pm_kind, only: SKC => SK1
     635             :         use pm_container, only: css_pdt
     636             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
     637             :         logical(LK)                                             :: ascendingAll
     638             :     end function
     639             : #endif
     640             : 
     641             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     642             : 
     643             :     PURE module function isAscendingAllDefCom_D1_BSSK(array) result(ascendingAll)
     644             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     645             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingAllDefCom_D1_BSSK
     646             : #endif
     647             :         use pm_kind, only: SKC => SK
     648             :         use pm_container, only: css_type
     649             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
     650             :         logical(LK)                                             :: ascendingAll
     651             :     end function
     652             : 
     653             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     654             : 
     655             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     657             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     658             : 
     659             :     end interface
     660             : 
     661             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     662             : 
     663             :     !>  \brief
     664             :     !>  Generate and return `.true.` if the input array is sorted in **strictly** all descending order (**without** equal elements),
     665             :     !>  otherwise, generate and return `.false.`.
     666             :     !>
     667             :     !>  \param[in]  array       :   The input `contiguous` array of rank `1` of either<br>
     668             :     !>                              <ol>
     669             :     !>                                  <li>    type [css_pdt](@ref pm_container::css_pdt) or,<br>
     670             :     !>                                  <li>    type [css_type](@ref pm_container::css_type) or,<br>
     671             :     !>                                  <li>    type `character` of kind \SKALL of arbitrary length type parameter or,<br>
     672             :     !>                                  <li>    type `integer` of kind \IKALL or,<br>
     673             :     !>                                  <li>    type `logical` of kind \LKALL or,<br>
     674             :     !>                                  <li>    type `complex` of kind \CKALL or,<br>
     675             :     !>                                  <li>    type `real` of kind \RKALL or,<br>
     676             :     !>                              </ol>
     677             :     !>                              or,
     678             :     !>                              <ol>
     679             :     !>                                  <li>    a *scalar* of type `character` of kind \SKALL of arbitrary length type parameter,<br>
     680             :     !>                              </ol>
     681             :     !>                              whose elements will be checked for a **strictly** all descending order (**without** equal elements).
     682             :     !>
     683             :     !>  \return
     684             :     !>  `descendingAll`          :   The output scalar `logical` of default kind \LK that is `.true.` if elements of the input array are
     685             :     !>                              in **strictly** all descending order (**without** equal elements), Otherwise, it is `.false.`.
     686             :     !>
     687             :     !>  \interface{isDescendingAll}
     688             :     !>  \code{.F90}
     689             :     !>
     690             :     !>      use pm_arraySort, only: isDescendingAll
     691             :     !>
     692             :     !>      descendingAll = isDescendingAll(array)
     693             :     !>
     694             :     !>  \endcode
     695             :     !>
     696             :     !>  \warning
     697             :     !>  The output of this procedure is `.true.` when the input array has zero length.
     698             :     !>
     699             :     !>  \warnpure
     700             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.
     701             :     !>
     702             :     !>  \see
     703             :     !>  [isSorted](@ref pm_arraySort::isSorted)<br>
     704             :     !>  [isDescending](@ref pm_arraySort::isDescending)<br>
     705             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
     706             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
     707             :     !>
     708             :     !>  \example{isDescendingAll}
     709             :     !>  \include{lineno} example/pm_arraySort/isDescendingAll/main.F90
     710             :     !>  \compilef{isDescendingAll}
     711             :     !>  \output{isDescendingAll}
     712             :     !>  \include{lineno} example/pm_arraySort/isDescendingAll/main.out.F90
     713             :     !>
     714             :     !>  \test
     715             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
     716             :     !>
     717             :     !>  \todo
     718             :     !>  This interface can be extended to scalar containers of strings.
     719             :     !>
     720             :     !>  \finmain{isDescendingAll}
     721             :     !>
     722             :     !>  \author
     723             :     !>  \AmirShahmoradi, April 21, 2017, 3:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
     724             : 
     725             :     interface isDescendingAll
     726             : 
     727             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     728             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     729             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     730             : 
     731             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     732             : 
     733             : #if SK5_ENABLED
     734             :     PURE module function isDescendingAllDefCom_D0_SK5(array) result(descendingAll)
     735             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     736             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D0_SK5
     737             : #endif
     738             :         use pm_kind, only: SKC => SK5
     739             :         character(*,SKC)        , intent(in)                    :: array
     740             :         logical(LK)                                             :: descendingAll
     741             :     end function
     742             : #endif
     743             : 
     744             : #if SK4_ENABLED
     745             :     PURE module function isDescendingAllDefCom_D0_SK4(array) result(descendingAll)
     746             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     747             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D0_SK4
     748             : #endif
     749             :         use pm_kind, only: SKC => SK4
     750             :         character(*,SKC)        , intent(in)                    :: array
     751             :         logical(LK)                                             :: descendingAll
     752             :     end function
     753             : #endif
     754             : 
     755             : #if SK3_ENABLED
     756             :     PURE module function isDescendingAllDefCom_D0_SK3(array) result(descendingAll)
     757             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     758             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D0_SK3
     759             : #endif
     760             :         use pm_kind, only: SKC => SK3
     761             :         character(*,SKC)        , intent(in)                    :: array
     762             :         logical(LK)                                             :: descendingAll
     763             :     end function
     764             : #endif
     765             : 
     766             : #if SK2_ENABLED
     767             :     PURE module function isDescendingAllDefCom_D0_SK2(array) result(descendingAll)
     768             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     769             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D0_SK2
     770             : #endif
     771             :         use pm_kind, only: SKC => SK2
     772             :         character(*,SKC)        , intent(in)                    :: array
     773             :         logical(LK)                                             :: descendingAll
     774             :     end function
     775             : #endif
     776             : 
     777             : #if SK1_ENABLED
     778             :     PURE module function isDescendingAllDefCom_D0_SK1(array) result(descendingAll)
     779             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     780             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D0_SK1
     781             : #endif
     782             :         use pm_kind, only: SKC => SK1
     783             :         character(*,SKC)        , intent(in)                    :: array
     784             :         logical(LK)                                             :: descendingAll
     785             :     end function
     786             : #endif
     787             : 
     788             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     789             : 
     790             : #if SK5_ENABLED
     791             :     PURE module function isDescendingAllDefCom_D1_SK5(array) result(descendingAll)
     792             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     793             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_SK5
     794             : #endif
     795             :         use pm_kind, only: SKC => SK5
     796             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     797             :         logical(LK)                                             :: descendingAll
     798             :     end function
     799             : #endif
     800             : 
     801             : #if SK4_ENABLED
     802             :     PURE module function isDescendingAllDefCom_D1_SK4(array) result(descendingAll)
     803             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     804             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_SK4
     805             : #endif
     806             :         use pm_kind, only: SKC => SK4
     807             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     808             :         logical(LK)                                             :: descendingAll
     809             :     end function
     810             : #endif
     811             : 
     812             : #if SK3_ENABLED
     813             :     PURE module function isDescendingAllDefCom_D1_SK3(array) result(descendingAll)
     814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     815             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_SK3
     816             : #endif
     817             :         use pm_kind, only: SKC => SK3
     818             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     819             :         logical(LK)                                             :: descendingAll
     820             :     end function
     821             : #endif
     822             : 
     823             : #if SK2_ENABLED
     824             :     PURE module function isDescendingAllDefCom_D1_SK2(array) result(descendingAll)
     825             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     826             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_SK2
     827             : #endif
     828             :         use pm_kind, only: SKC => SK2
     829             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     830             :         logical(LK)                                             :: descendingAll
     831             :     end function
     832             : #endif
     833             : 
     834             : #if SK1_ENABLED
     835             :     PURE module function isDescendingAllDefCom_D1_SK1(array) result(descendingAll)
     836             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     837             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_SK1
     838             : #endif
     839             :         use pm_kind, only: SKC => SK1
     840             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
     841             :         logical(LK)                                             :: descendingAll
     842             :     end function
     843             : #endif
     844             : 
     845             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     846             : 
     847             : #if IK5_ENABLED
     848             :     PURE module function isDescendingAllDefCom_D1_IK5(array) result(descendingAll)
     849             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     850             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_IK5
     851             : #endif
     852             :         use pm_kind, only: IKC => IK5
     853             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     854             :         logical(LK)                                             :: descendingAll
     855             :     end function
     856             : #endif
     857             : 
     858             : #if IK4_ENABLED
     859             :     PURE module function isDescendingAllDefCom_D1_IK4(array) result(descendingAll)
     860             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     861             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_IK4
     862             : #endif
     863             :         use pm_kind, only: IKC => IK4
     864             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     865             :         logical(LK)                                             :: descendingAll
     866             :     end function
     867             : #endif
     868             : 
     869             : #if IK3_ENABLED
     870             :     PURE module function isDescendingAllDefCom_D1_IK3(array) result(descendingAll)
     871             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     872             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_IK3
     873             : #endif
     874             :         use pm_kind, only: IKC => IK3
     875             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     876             :         logical(LK)                                             :: descendingAll
     877             :     end function
     878             : #endif
     879             : 
     880             : #if IK2_ENABLED
     881             :     PURE module function isDescendingAllDefCom_D1_IK2(array) result(descendingAll)
     882             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     883             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_IK2
     884             : #endif
     885             :         use pm_kind, only: IKC => IK2
     886             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     887             :         logical(LK)                                             :: descendingAll
     888             :     end function
     889             : #endif
     890             : 
     891             : #if IK1_ENABLED
     892             :     PURE module function isDescendingAllDefCom_D1_IK1(array) result(descendingAll)
     893             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     894             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_IK1
     895             : #endif
     896             :         use pm_kind, only: IKC => IK1
     897             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
     898             :         logical(LK)                                             :: descendingAll
     899             :     end function
     900             : #endif
     901             : 
     902             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     903             : 
     904             : #if LK5_ENABLED
     905             :     PURE module function isDescendingAllDefCom_D1_LK5(array) result(descendingAll)
     906             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     907             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_LK5
     908             : #endif
     909             :         use pm_kind, only: LKC => LK5
     910             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     911             :         logical(LK)                                             :: descendingAll
     912             :     end function
     913             : #endif
     914             : 
     915             : #if LK4_ENABLED
     916             :     PURE module function isDescendingAllDefCom_D1_LK4(array) result(descendingAll)
     917             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     918             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_LK4
     919             : #endif
     920             :         use pm_kind, only: LKC => LK4
     921             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     922             :         logical(LK)                                             :: descendingAll
     923             :     end function
     924             : #endif
     925             : 
     926             : #if LK3_ENABLED
     927             :     PURE module function isDescendingAllDefCom_D1_LK3(array) result(descendingAll)
     928             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     929             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_LK3
     930             : #endif
     931             :         use pm_kind, only: LKC => LK3
     932             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     933             :         logical(LK)                                             :: descendingAll
     934             :     end function
     935             : #endif
     936             : 
     937             : #if LK2_ENABLED
     938             :     PURE module function isDescendingAllDefCom_D1_LK2(array) result(descendingAll)
     939             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     940             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_LK2
     941             : #endif
     942             :         use pm_kind, only: LKC => LK2
     943             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     944             :         logical(LK)                                             :: descendingAll
     945             :     end function
     946             : #endif
     947             : 
     948             : #if LK1_ENABLED
     949             :     PURE module function isDescendingAllDefCom_D1_LK1(array) result(descendingAll)
     950             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     951             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_LK1
     952             : #endif
     953             :         use pm_kind, only: LKC => LK1
     954             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
     955             :         logical(LK)                                             :: descendingAll
     956             :     end function
     957             : #endif
     958             : 
     959             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     960             : 
     961             : #if RK5_ENABLED
     962             :     PURE module function isDescendingAllDefCom_D1_RK5(array) result(descendingAll)
     963             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     964             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_RK5
     965             : #endif
     966             :         use pm_kind, only: RKC => RK5
     967             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     968             :         logical(LK)                                             :: descendingAll
     969             :     end function
     970             : #endif
     971             : 
     972             : #if RK4_ENABLED
     973             :     PURE module function isDescendingAllDefCom_D1_RK4(array) result(descendingAll)
     974             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     975             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_RK4
     976             : #endif
     977             :         use pm_kind, only: RKC => RK4
     978             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     979             :         logical(LK)                                             :: descendingAll
     980             :     end function
     981             : #endif
     982             : 
     983             : #if RK3_ENABLED
     984             :     PURE module function isDescendingAllDefCom_D1_RK3(array) result(descendingAll)
     985             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     986             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_RK3
     987             : #endif
     988             :         use pm_kind, only: RKC => RK3
     989             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
     990             :         logical(LK)                                             :: descendingAll
     991             :     end function
     992             : #endif
     993             : 
     994             : #if RK2_ENABLED
     995             :     PURE module function isDescendingAllDefCom_D1_RK2(array) result(descendingAll)
     996             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
     997             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_RK2
     998             : #endif
     999             :         use pm_kind, only: RKC => RK2
    1000             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1001             :         logical(LK)                                             :: descendingAll
    1002             :     end function
    1003             : #endif
    1004             : 
    1005             : #if RK1_ENABLED
    1006             :     PURE module function isDescendingAllDefCom_D1_RK1(array) result(descendingAll)
    1007             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1008             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_RK1
    1009             : #endif
    1010             :         use pm_kind, only: RKC => RK1
    1011             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1012             :         logical(LK)                                             :: descendingAll
    1013             :     end function
    1014             : #endif
    1015             : 
    1016             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1017             : 
    1018             : #if CK5_ENABLED
    1019             :     PURE module function isDescendingAllDefCom_D1_CK5(array) result(descendingAll)
    1020             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1021             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_CK5
    1022             : #endif
    1023             :         use pm_kind, only: CKC => CK5
    1024             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1025             :         logical(LK)                                             :: descendingAll
    1026             :     end function
    1027             : #endif
    1028             : 
    1029             : #if CK4_ENABLED
    1030             :     PURE module function isDescendingAllDefCom_D1_CK4(array) result(descendingAll)
    1031             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1032             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_CK4
    1033             : #endif
    1034             :         use pm_kind, only: CKC => CK4
    1035             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1036             :         logical(LK)                                             :: descendingAll
    1037             :     end function
    1038             : #endif
    1039             : 
    1040             : #if CK3_ENABLED
    1041             :     PURE module function isDescendingAllDefCom_D1_CK3(array) result(descendingAll)
    1042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1043             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_CK3
    1044             : #endif
    1045             :         use pm_kind, only: CKC => CK3
    1046             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1047             :         logical(LK)                                             :: descendingAll
    1048             :     end function
    1049             : #endif
    1050             : 
    1051             : #if CK2_ENABLED
    1052             :     PURE module function isDescendingAllDefCom_D1_CK2(array) result(descendingAll)
    1053             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1054             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_CK2
    1055             : #endif
    1056             :         use pm_kind, only: CKC => CK2
    1057             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1058             :         logical(LK)                                             :: descendingAll
    1059             :     end function
    1060             : #endif
    1061             : 
    1062             : #if CK1_ENABLED
    1063             :     PURE module function isDescendingAllDefCom_D1_CK1(array) result(descendingAll)
    1064             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1065             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_CK1
    1066             : #endif
    1067             :         use pm_kind, only: CKC => CK1
    1068             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1069             :         logical(LK)                                             :: descendingAll
    1070             :     end function
    1071             : #endif
    1072             : 
    1073             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1074             : 
    1075             : #if SK5_ENABLED
    1076             :     PURE module function isDescendingAllDefCom_D1_PSSK5(array) result(descendingAll)
    1077             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1078             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_PSSK5
    1079             : #endif
    1080             :         use pm_kind, only: SKC => SK5
    1081             :         use pm_container, only: css_pdt
    1082             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1083             :         logical(LK)                                             :: descendingAll
    1084             :     end function
    1085             : #endif
    1086             : 
    1087             : #if SK4_ENABLED
    1088             :     PURE module function isDescendingAllDefCom_D1_PSSK4(array) result(descendingAll)
    1089             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1090             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_PSSK4
    1091             : #endif
    1092             :         use pm_kind, only: SKC => SK4
    1093             :         use pm_container, only: css_pdt
    1094             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1095             :         logical(LK)                                             :: descendingAll
    1096             :     end function
    1097             : #endif
    1098             : 
    1099             : #if SK3_ENABLED
    1100             :     PURE module function isDescendingAllDefCom_D1_PSSK3(array) result(descendingAll)
    1101             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1102             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_PSSK3
    1103             : #endif
    1104             :         use pm_kind, only: SKC => SK3
    1105             :         use pm_container, only: css_pdt
    1106             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1107             :         logical(LK)                                             :: descendingAll
    1108             :     end function
    1109             : #endif
    1110             : 
    1111             : #if SK2_ENABLED
    1112             :     PURE module function isDescendingAllDefCom_D1_PSSK2(array) result(descendingAll)
    1113             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1114             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_PSSK2
    1115             : #endif
    1116             :         use pm_kind, only: SKC => SK2
    1117             :         use pm_container, only: css_pdt
    1118             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1119             :         logical(LK)                                             :: descendingAll
    1120             :     end function
    1121             : #endif
    1122             : 
    1123             : #if SK1_ENABLED
    1124             :     PURE module function isDescendingAllDefCom_D1_PSSK1(array) result(descendingAll)
    1125             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1126             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_PSSK1
    1127             : #endif
    1128             :         use pm_kind, only: SKC => SK1
    1129             :         use pm_container, only: css_pdt
    1130             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1131             :         logical(LK)                                             :: descendingAll
    1132             :     end function
    1133             : #endif
    1134             : 
    1135             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1136             : 
    1137             :     PURE module function isDescendingAllDefCom_D1_BSSK(array) result(descendingAll)
    1138             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1139             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingAllDefCom_D1_BSSK
    1140             : #endif
    1141             :         use pm_kind, only: SKC => SK
    1142             :         use pm_container, only: css_type
    1143             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    1144             :         logical(LK)                                             :: descendingAll
    1145             :     end function
    1146             : 
    1147             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1148             : 
    1149             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1150             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1151             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1152             : 
    1153             :     end interface
    1154             : 
    1155             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1156             : 
    1157             :     !>  \brief
    1158             :     !>  Generate and return `.true.` if the input array is sorted in ascending order (with the possibility of elements being equal),
    1159             :     !>  otherwise, generate and return `.false.`.
    1160             :     !>
    1161             :     !>  \param[in]  array       :   The input `contiguous` array of rank `1` of either<br>
    1162             :     !>                              <ol>
    1163             :     !>                                  <li>    type [css_pdt](@ref pm_container::css_pdt) or,<br>
    1164             :     !>                                  <li>    type [css_type](@ref pm_container::css_type) or,<br>
    1165             :     !>                                  <li>    type `character` of kind \SKALL of arbitrary length type parameter or,<br>
    1166             :     !>                                  <li>    type `integer` of kind \IKALL or,<br>
    1167             :     !>                                  <li>    type `logical` of kind \LKALL or,<br>
    1168             :     !>                                  <li>    type `complex` of kind \CKALL or,<br>
    1169             :     !>                                  <li>    type `real` of kind \RKALL or,<br>
    1170             :     !>                              </ol>
    1171             :     !>                              or,
    1172             :     !>                              <ol>
    1173             :     !>                                  <li>    a *scalar* of type `character` of kind \SKALL of arbitrary length type parameter,<br>
    1174             :     !>                              </ol>
    1175             :     !>                              whose elements will be checked for an all descending order (with the possibility of elements being equal).
    1176             :     !>
    1177             :     !>  \return
    1178             :     !>  `ascending`             :   An output `logical` of default kind \LK that is `.true.` if all elements of the input array are
    1179             :     !>                              in descending order (with the possibility of elements being equal) or all equal. Otherwise, it is `.false.`.
    1180             :     !>
    1181             :     !>  \interface{isAscending}
    1182             :     !>  \code{.F90}
    1183             :     !>
    1184             :     !>      use pm_arraySort, only: isAscending
    1185             :     !>
    1186             :     !>      ascending = isAscending(array)
    1187             :     !>
    1188             :     !>  \endcode
    1189             :     !>
    1190             :     !>  \warning
    1191             :     !>  The output of this procedure is `.true.` when the input array has zero length.
    1192             :     !>
    1193             :     !>  \warnpure
    1194             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.
    1195             :     !>
    1196             :     !>  \see
    1197             :     !>  [isSorted](@ref pm_arraySort::isSorted)<br>
    1198             :     !>  [isDescending](@ref pm_arraySort::isDescending)<br>
    1199             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    1200             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    1201             :     !>
    1202             :     !>  \example{isAscending}
    1203             :     !>  \include{lineno} example/pm_arraySort/isAscending/main.F90
    1204             :     !>  \compilef{isAscending}
    1205             :     !>  \output{isAscending}
    1206             :     !>  \include{lineno} example/pm_arraySort/isAscending/main.out.F90
    1207             :     !>
    1208             :     !>  \test
    1209             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
    1210             :     !>
    1211             :     !>  \todo
    1212             :     !>  This interface can be extended to scalar containers of strings.
    1213             :     !>
    1214             :     !>  \finmain{isAscending}
    1215             :     !>
    1216             :     !>  \author
    1217             :     !>  \AmirShahmoradi, April 21, 2017, 3:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1218             : 
    1219             :     interface isAscending
    1220             : 
    1221             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1222             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1223             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1224             : 
    1225             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1226             : 
    1227             : #if SK5_ENABLED
    1228             :     PURE module function isAscendingDefCom_D0_SK5(array) result(ascending)
    1229             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1230             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D0_SK5
    1231             : #endif
    1232             :         use pm_kind, only: SKC => SK5
    1233             :         character(*,SKC)        , intent(in)                    :: array
    1234             :         logical(LK)                                             :: ascending
    1235             :     end function
    1236             : #endif
    1237             : 
    1238             : #if SK4_ENABLED
    1239             :     PURE module function isAscendingDefCom_D0_SK4(array) result(ascending)
    1240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1241             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D0_SK4
    1242             : #endif
    1243             :         use pm_kind, only: SKC => SK4
    1244             :         character(*,SKC)        , intent(in)                    :: array
    1245             :         logical(LK)                                             :: ascending
    1246             :     end function
    1247             : #endif
    1248             : 
    1249             : #if SK3_ENABLED
    1250             :     PURE module function isAscendingDefCom_D0_SK3(array) result(ascending)
    1251             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1252             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D0_SK3
    1253             : #endif
    1254             :         use pm_kind, only: SKC => SK3
    1255             :         character(*,SKC)        , intent(in)                    :: array
    1256             :         logical(LK)                                             :: ascending
    1257             :     end function
    1258             : #endif
    1259             : 
    1260             : #if SK2_ENABLED
    1261             :     PURE module function isAscendingDefCom_D0_SK2(array) result(ascending)
    1262             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1263             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D0_SK2
    1264             : #endif
    1265             :         use pm_kind, only: SKC => SK2
    1266             :         character(*,SKC)        , intent(in)                    :: array
    1267             :         logical(LK)                                             :: ascending
    1268             :     end function
    1269             : #endif
    1270             : 
    1271             : #if SK1_ENABLED
    1272             :     PURE module function isAscendingDefCom_D0_SK1(array) result(ascending)
    1273             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1274             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D0_SK1
    1275             : #endif
    1276             :         use pm_kind, only: SKC => SK1
    1277             :         character(*,SKC)        , intent(in)                    :: array
    1278             :         logical(LK)                                             :: ascending
    1279             :     end function
    1280             : #endif
    1281             : 
    1282             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1283             : 
    1284             : #if SK5_ENABLED
    1285             :     PURE module function isAscendingDefCom_D1_SK5(array) result(ascending)
    1286             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1287             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_SK5
    1288             : #endif
    1289             :         use pm_kind, only: SKC => SK5
    1290             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1291             :         logical(LK)                                             :: ascending
    1292             :     end function
    1293             : #endif
    1294             : 
    1295             : #if SK4_ENABLED
    1296             :     PURE module function isAscendingDefCom_D1_SK4(array) result(ascending)
    1297             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1298             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_SK4
    1299             : #endif
    1300             :         use pm_kind, only: SKC => SK4
    1301             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1302             :         logical(LK)                                             :: ascending
    1303             :     end function
    1304             : #endif
    1305             : 
    1306             : #if SK3_ENABLED
    1307             :     PURE module function isAscendingDefCom_D1_SK3(array) result(ascending)
    1308             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1309             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_SK3
    1310             : #endif
    1311             :         use pm_kind, only: SKC => SK3
    1312             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1313             :         logical(LK)                                             :: ascending
    1314             :     end function
    1315             : #endif
    1316             : 
    1317             : #if SK2_ENABLED
    1318             :     PURE module function isAscendingDefCom_D1_SK2(array) result(ascending)
    1319             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1320             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_SK2
    1321             : #endif
    1322             :         use pm_kind, only: SKC => SK2
    1323             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1324             :         logical(LK)                                             :: ascending
    1325             :     end function
    1326             : #endif
    1327             : 
    1328             : #if SK1_ENABLED
    1329             :     PURE module function isAscendingDefCom_D1_SK1(array) result(ascending)
    1330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1331             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_SK1
    1332             : #endif
    1333             :         use pm_kind, only: SKC => SK1
    1334             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1335             :         logical(LK)                                             :: ascending
    1336             :     end function
    1337             : #endif
    1338             : 
    1339             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1340             : 
    1341             : #if IK5_ENABLED
    1342             :     PURE module function isAscendingDefCom_D1_IK5(array) result(ascending)
    1343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1344             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_IK5
    1345             : #endif
    1346             :         use pm_kind, only: IKC => IK5
    1347             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1348             :         logical(LK)                                             :: ascending
    1349             :     end function
    1350             : #endif
    1351             : 
    1352             : #if IK4_ENABLED
    1353             :     PURE module function isAscendingDefCom_D1_IK4(array) result(ascending)
    1354             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1355             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_IK4
    1356             : #endif
    1357             :         use pm_kind, only: IKC => IK4
    1358             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1359             :         logical(LK)                                             :: ascending
    1360             :     end function
    1361             : #endif
    1362             : 
    1363             : #if IK3_ENABLED
    1364             :     PURE module function isAscendingDefCom_D1_IK3(array) result(ascending)
    1365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1366             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_IK3
    1367             : #endif
    1368             :         use pm_kind, only: IKC => IK3
    1369             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1370             :         logical(LK)                                             :: ascending
    1371             :     end function
    1372             : #endif
    1373             : 
    1374             : #if IK2_ENABLED
    1375             :     PURE module function isAscendingDefCom_D1_IK2(array) result(ascending)
    1376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1377             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_IK2
    1378             : #endif
    1379             :         use pm_kind, only: IKC => IK2
    1380             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1381             :         logical(LK)                                             :: ascending
    1382             :     end function
    1383             : #endif
    1384             : 
    1385             : #if IK1_ENABLED
    1386             :     PURE module function isAscendingDefCom_D1_IK1(array) result(ascending)
    1387             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1388             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_IK1
    1389             : #endif
    1390             :         use pm_kind, only: IKC => IK1
    1391             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1392             :         logical(LK)                                             :: ascending
    1393             :     end function
    1394             : #endif
    1395             : 
    1396             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1397             : 
    1398             : #if LK5_ENABLED
    1399             :     PURE module function isAscendingDefCom_D1_LK5(array) result(ascending)
    1400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1401             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_LK5
    1402             : #endif
    1403             :         use pm_kind, only: LKC => LK5
    1404             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1405             :         logical(LK)                                             :: ascending
    1406             :     end function
    1407             : #endif
    1408             : 
    1409             : #if LK4_ENABLED
    1410             :     PURE module function isAscendingDefCom_D1_LK4(array) result(ascending)
    1411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1412             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_LK4
    1413             : #endif
    1414             :         use pm_kind, only: LKC => LK4
    1415             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1416             :         logical(LK)                                             :: ascending
    1417             :     end function
    1418             : #endif
    1419             : 
    1420             : #if LK3_ENABLED
    1421             :     PURE module function isAscendingDefCom_D1_LK3(array) result(ascending)
    1422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1423             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_LK3
    1424             : #endif
    1425             :         use pm_kind, only: LKC => LK3
    1426             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1427             :         logical(LK)                                             :: ascending
    1428             :     end function
    1429             : #endif
    1430             : 
    1431             : #if LK2_ENABLED
    1432             :     PURE module function isAscendingDefCom_D1_LK2(array) result(ascending)
    1433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1434             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_LK2
    1435             : #endif
    1436             :         use pm_kind, only: LKC => LK2
    1437             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1438             :         logical(LK)                                             :: ascending
    1439             :     end function
    1440             : #endif
    1441             : 
    1442             : #if LK1_ENABLED
    1443             :     PURE module function isAscendingDefCom_D1_LK1(array) result(ascending)
    1444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1445             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_LK1
    1446             : #endif
    1447             :         use pm_kind, only: LKC => LK1
    1448             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1449             :         logical(LK)                                             :: ascending
    1450             :     end function
    1451             : #endif
    1452             : 
    1453             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1454             : 
    1455             : #if RK5_ENABLED
    1456             :     PURE module function isAscendingDefCom_D1_RK5(array) result(ascending)
    1457             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1458             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_RK5
    1459             : #endif
    1460             :         use pm_kind, only: RKC => RK5
    1461             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1462             :         logical(LK)                                             :: ascending
    1463             :     end function
    1464             : #endif
    1465             : 
    1466             : #if RK4_ENABLED
    1467             :     PURE module function isAscendingDefCom_D1_RK4(array) result(ascending)
    1468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1469             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_RK4
    1470             : #endif
    1471             :         use pm_kind, only: RKC => RK4
    1472             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1473             :         logical(LK)                                             :: ascending
    1474             :     end function
    1475             : #endif
    1476             : 
    1477             : #if RK3_ENABLED
    1478             :     PURE module function isAscendingDefCom_D1_RK3(array) result(ascending)
    1479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1480             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_RK3
    1481             : #endif
    1482             :         use pm_kind, only: RKC => RK3
    1483             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1484             :         logical(LK)                                             :: ascending
    1485             :     end function
    1486             : #endif
    1487             : 
    1488             : #if RK2_ENABLED
    1489             :     PURE module function isAscendingDefCom_D1_RK2(array) result(ascending)
    1490             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1491             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_RK2
    1492             : #endif
    1493             :         use pm_kind, only: RKC => RK2
    1494             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1495             :         logical(LK)                                             :: ascending
    1496             :     end function
    1497             : #endif
    1498             : 
    1499             : #if RK1_ENABLED
    1500             :     PURE module function isAscendingDefCom_D1_RK1(array) result(ascending)
    1501             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1502             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_RK1
    1503             : #endif
    1504             :         use pm_kind, only: RKC => RK1
    1505             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1506             :         logical(LK)                                             :: ascending
    1507             :     end function
    1508             : #endif
    1509             : 
    1510             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1511             : 
    1512             : #if CK5_ENABLED
    1513             :     PURE module function isAscendingDefCom_D1_CK5(array) result(ascending)
    1514             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1515             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_CK5
    1516             : #endif
    1517             :         use pm_kind, only: CKC => CK5
    1518             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1519             :         logical(LK)                                             :: ascending
    1520             :     end function
    1521             : #endif
    1522             : 
    1523             : #if CK4_ENABLED
    1524             :     PURE module function isAscendingDefCom_D1_CK4(array) result(ascending)
    1525             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1526             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_CK4
    1527             : #endif
    1528             :         use pm_kind, only: CKC => CK4
    1529             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1530             :         logical(LK)                                             :: ascending
    1531             :     end function
    1532             : #endif
    1533             : 
    1534             : #if CK3_ENABLED
    1535             :     PURE module function isAscendingDefCom_D1_CK3(array) result(ascending)
    1536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1537             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_CK3
    1538             : #endif
    1539             :         use pm_kind, only: CKC => CK3
    1540             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1541             :         logical(LK)                                             :: ascending
    1542             :     end function
    1543             : #endif
    1544             : 
    1545             : #if CK2_ENABLED
    1546             :     PURE module function isAscendingDefCom_D1_CK2(array) result(ascending)
    1547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1548             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_CK2
    1549             : #endif
    1550             :         use pm_kind, only: CKC => CK2
    1551             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1552             :         logical(LK)                                             :: ascending
    1553             :     end function
    1554             : #endif
    1555             : 
    1556             : #if CK1_ENABLED
    1557             :     PURE module function isAscendingDefCom_D1_CK1(array) result(ascending)
    1558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1559             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_CK1
    1560             : #endif
    1561             :         use pm_kind, only: CKC => CK1
    1562             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    1563             :         logical(LK)                                             :: ascending
    1564             :     end function
    1565             : #endif
    1566             : 
    1567             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1568             : 
    1569             : #if SK5_ENABLED
    1570             :     PURE module function isAscendingDefCom_D1_PSSK5(array) result(ascending)
    1571             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1572             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_PSSK5
    1573             : #endif
    1574             :         use pm_kind, only: SKC => SK5
    1575             :         use pm_container, only: css_pdt
    1576             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1577             :         logical(LK)                                             :: ascending
    1578             :     end function
    1579             : #endif
    1580             : 
    1581             : #if SK4_ENABLED
    1582             :     PURE module function isAscendingDefCom_D1_PSSK4(array) result(ascending)
    1583             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1584             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_PSSK4
    1585             : #endif
    1586             :         use pm_kind, only: SKC => SK4
    1587             :         use pm_container, only: css_pdt
    1588             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1589             :         logical(LK)                                             :: ascending
    1590             :     end function
    1591             : #endif
    1592             : 
    1593             : #if SK3_ENABLED
    1594             :     PURE module function isAscendingDefCom_D1_PSSK3(array) result(ascending)
    1595             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1596             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_PSSK3
    1597             : #endif
    1598             :         use pm_kind, only: SKC => SK3
    1599             :         use pm_container, only: css_pdt
    1600             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1601             :         logical(LK)                                             :: ascending
    1602             :     end function
    1603             : #endif
    1604             : 
    1605             : #if SK2_ENABLED
    1606             :     PURE module function isAscendingDefCom_D1_PSSK2(array) result(ascending)
    1607             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1608             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_PSSK2
    1609             : #endif
    1610             :         use pm_kind, only: SKC => SK2
    1611             :         use pm_container, only: css_pdt
    1612             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1613             :         logical(LK)                                             :: ascending
    1614             :     end function
    1615             : #endif
    1616             : 
    1617             : #if SK1_ENABLED
    1618             :     PURE module function isAscendingDefCom_D1_PSSK1(array) result(ascending)
    1619             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1620             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_PSSK1
    1621             : #endif
    1622             :         use pm_kind, only: SKC => SK1
    1623             :         use pm_container, only: css_pdt
    1624             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    1625             :         logical(LK)                                             :: ascending
    1626             :     end function
    1627             : #endif
    1628             : 
    1629             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1630             : 
    1631             :     PURE module function isAscendingDefCom_D1_BSSK(array) result(ascending)
    1632             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1633             :         !DEC$ ATTRIBUTES DLLEXPORT :: isAscendingDefCom_D1_BSSK
    1634             : #endif
    1635             :         use pm_kind, only: SKC => SK
    1636             :         use pm_container, only: css_type
    1637             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    1638             :         logical(LK)                                             :: ascending
    1639             :     end function
    1640             : 
    1641             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1642             : 
    1643             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1644             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1645             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1646             : 
    1647             :     end interface
    1648             : 
    1649             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1650             : 
    1651             :     !>  \brief
    1652             :     !>  Generate and return `.true.` if the input array is sorted in descending order (with the possibility of elements being equal),
    1653             :     !>  otherwise, generate and return `.false.`.
    1654             :     !>
    1655             :     !>  \param[in]  array       :   The input `contiguous` array of rank `1` of either<br>
    1656             :     !>                              <ol>
    1657             :     !>                                  <li>    type [css_pdt](@ref pm_container::css_pdt) or,<br>
    1658             :     !>                                  <li>    type [css_type](@ref pm_container::css_type) or,<br>
    1659             :     !>                                  <li>    type `character` of kind \SKALL of arbitrary length type parameter or,<br>
    1660             :     !>                                  <li>    type `integer` of kind \IKALL or,<br>
    1661             :     !>                                  <li>    type `logical` of kind \LKALL or,<br>
    1662             :     !>                                  <li>    type `complex` of kind \CKALL or,<br>
    1663             :     !>                                  <li>    type `real` of kind \RKALL or,<br>
    1664             :     !>                              </ol>
    1665             :     !>                              or,
    1666             :     !>                              <ol>
    1667             :     !>                                  <li>    a *scalar* of type `character` of kind \SKALL of arbitrary length type parameter,<br>
    1668             :     !>                              </ol>
    1669             :     !>                              whose elements will be checked for an all descending order<br>
    1670             :     !>                              (with the possibility of elements being equal).
    1671             :     !>
    1672             :     !>  \return
    1673             :     !>  `sorted`                :   An output `logical` of default kind \LK that is `.true.` if all elements of the input array are
    1674             :     !>                              in descending order (with the possibility of elements being equal) or all equal. Otherwise, it is `.false.`.
    1675             :     !>
    1676             :     !>  \interface{isDescending}
    1677             :     !>  \code{.F90}
    1678             :     !>
    1679             :     !>      use pm_arraySort, only: isDescending
    1680             :     !>
    1681             :     !>      descending = isDescending(array)
    1682             :     !>
    1683             :     !>  \endcode
    1684             :     !>
    1685             :     !>  \warning
    1686             :     !>  The output of this procedure is `.true.` when the input array has zero length.
    1687             :     !>
    1688             :     !>  \warnpure
    1689             :     !>
    1690             :     !>  \see
    1691             :     !>  [isSorted](@ref isSorted)<br>
    1692             :     !>  [isAscending](@ref pm_arraySort::isAscending)<br>
    1693             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    1694             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    1695             :     !>
    1696             :     !>  \example{isDescending}
    1697             :     !>  \include{lineno} example/pm_arraySort/isDescending/main.F90
    1698             :     !>  \compilef{isDescending}
    1699             :     !>  \output{isDescending}
    1700             :     !>  \include{lineno} example/pm_arraySort/isDescending/main.out.F90
    1701             :     !>
    1702             :     !>  \test
    1703             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
    1704             :     !>
    1705             :     !>  \finmain{isDescending}
    1706             :     !>
    1707             :     !>  \author
    1708             :     !>  \AmirShahmoradi, April 21, 2017, 3:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    1709             :     interface isDescending
    1710             : 
    1711             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1712             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1713             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1714             : 
    1715             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1716             : 
    1717             : #if SK5_ENABLED
    1718             :     PURE module function isDescendingDefCom_D0_SK5(array) result(descending)
    1719             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1720             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D0_SK5
    1721             : #endif
    1722             :         use pm_kind, only: SKC => SK5
    1723             :         character(*,SKC)        , intent(in)                    :: array
    1724             :         logical(LK)                                             :: descending
    1725             :     end function
    1726             : #endif
    1727             : 
    1728             : #if SK4_ENABLED
    1729             :     PURE module function isDescendingDefCom_D0_SK4(array) result(descending)
    1730             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1731             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D0_SK4
    1732             : #endif
    1733             :         use pm_kind, only: SKC => SK4
    1734             :         character(*,SKC)        , intent(in)                    :: array
    1735             :         logical(LK)                                             :: descending
    1736             :     end function
    1737             : #endif
    1738             : 
    1739             : #if SK3_ENABLED
    1740             :     PURE module function isDescendingDefCom_D0_SK3(array) result(descending)
    1741             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1742             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D0_SK3
    1743             : #endif
    1744             :         use pm_kind, only: SKC => SK3
    1745             :         character(*,SKC)        , intent(in)                    :: array
    1746             :         logical(LK)                                             :: descending
    1747             :     end function
    1748             : #endif
    1749             : 
    1750             : #if SK2_ENABLED
    1751             :     PURE module function isDescendingDefCom_D0_SK2(array) result(descending)
    1752             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1753             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D0_SK2
    1754             : #endif
    1755             :         use pm_kind, only: SKC => SK2
    1756             :         character(*,SKC)        , intent(in)                    :: array
    1757             :         logical(LK)                                             :: descending
    1758             :     end function
    1759             : #endif
    1760             : 
    1761             : #if SK1_ENABLED
    1762             :     PURE module function isDescendingDefCom_D0_SK1(array) result(descending)
    1763             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1764             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D0_SK1
    1765             : #endif
    1766             :         use pm_kind, only: SKC => SK1
    1767             :         character(*,SKC)        , intent(in)                    :: array
    1768             :         logical(LK)                                             :: descending
    1769             :     end function
    1770             : #endif
    1771             : 
    1772             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1773             : 
    1774             : #if SK5_ENABLED
    1775             :     PURE module function isDescendingDefCom_D1_SK5(array) result(descending)
    1776             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1777             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_SK5
    1778             : #endif
    1779             :         use pm_kind, only: SKC => SK5
    1780             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1781             :         logical(LK)                                             :: descending
    1782             :     end function
    1783             : #endif
    1784             : 
    1785             : #if SK4_ENABLED
    1786             :     PURE module function isDescendingDefCom_D1_SK4(array) result(descending)
    1787             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1788             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_SK4
    1789             : #endif
    1790             :         use pm_kind, only: SKC => SK4
    1791             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1792             :         logical(LK)                                             :: descending
    1793             :     end function
    1794             : #endif
    1795             : 
    1796             : #if SK3_ENABLED
    1797             :     PURE module function isDescendingDefCom_D1_SK3(array) result(descending)
    1798             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1799             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_SK3
    1800             : #endif
    1801             :         use pm_kind, only: SKC => SK3
    1802             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1803             :         logical(LK)                                             :: descending
    1804             :     end function
    1805             : #endif
    1806             : 
    1807             : #if SK2_ENABLED
    1808             :     PURE module function isDescendingDefCom_D1_SK2(array) result(descending)
    1809             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1810             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_SK2
    1811             : #endif
    1812             :         use pm_kind, only: SKC => SK2
    1813             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1814             :         logical(LK)                                             :: descending
    1815             :     end function
    1816             : #endif
    1817             : 
    1818             : #if SK1_ENABLED
    1819             :     PURE module function isDescendingDefCom_D1_SK1(array) result(descending)
    1820             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1821             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_SK1
    1822             : #endif
    1823             :         use pm_kind, only: SKC => SK1
    1824             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    1825             :         logical(LK)                                             :: descending
    1826             :     end function
    1827             : #endif
    1828             : 
    1829             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1830             : 
    1831             : #if IK5_ENABLED
    1832             :     PURE module function isDescendingDefCom_D1_IK5(array) result(descending)
    1833             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1834             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_IK5
    1835             : #endif
    1836             :         use pm_kind, only: IKC => IK5
    1837             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1838             :         logical(LK)                                             :: descending
    1839             :     end function
    1840             : #endif
    1841             : 
    1842             : #if IK4_ENABLED
    1843             :     PURE module function isDescendingDefCom_D1_IK4(array) result(descending)
    1844             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1845             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_IK4
    1846             : #endif
    1847             :         use pm_kind, only: IKC => IK4
    1848             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1849             :         logical(LK)                                             :: descending
    1850             :     end function
    1851             : #endif
    1852             : 
    1853             : #if IK3_ENABLED
    1854             :     PURE module function isDescendingDefCom_D1_IK3(array) result(descending)
    1855             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1856             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_IK3
    1857             : #endif
    1858             :         use pm_kind, only: IKC => IK3
    1859             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1860             :         logical(LK)                                             :: descending
    1861             :     end function
    1862             : #endif
    1863             : 
    1864             : #if IK2_ENABLED
    1865             :     PURE module function isDescendingDefCom_D1_IK2(array) result(descending)
    1866             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1867             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_IK2
    1868             : #endif
    1869             :         use pm_kind, only: IKC => IK2
    1870             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1871             :         logical(LK)                                             :: descending
    1872             :     end function
    1873             : #endif
    1874             : 
    1875             : #if IK1_ENABLED
    1876             :     PURE module function isDescendingDefCom_D1_IK1(array) result(descending)
    1877             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1878             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_IK1
    1879             : #endif
    1880             :         use pm_kind, only: IKC => IK1
    1881             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    1882             :         logical(LK)                                             :: descending
    1883             :     end function
    1884             : #endif
    1885             : 
    1886             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1887             : 
    1888             : #if LK5_ENABLED
    1889             :     PURE module function isDescendingDefCom_D1_LK5(array) result(descending)
    1890             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1891             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_LK5
    1892             : #endif
    1893             :         use pm_kind, only: LKC => LK5
    1894             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1895             :         logical(LK)                                             :: descending
    1896             :     end function
    1897             : #endif
    1898             : 
    1899             : #if LK4_ENABLED
    1900             :     PURE module function isDescendingDefCom_D1_LK4(array) result(descending)
    1901             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1902             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_LK4
    1903             : #endif
    1904             :         use pm_kind, only: LKC => LK4
    1905             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1906             :         logical(LK)                                             :: descending
    1907             :     end function
    1908             : #endif
    1909             : 
    1910             : #if LK3_ENABLED
    1911             :     PURE module function isDescendingDefCom_D1_LK3(array) result(descending)
    1912             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1913             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_LK3
    1914             : #endif
    1915             :         use pm_kind, only: LKC => LK3
    1916             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1917             :         logical(LK)                                             :: descending
    1918             :     end function
    1919             : #endif
    1920             : 
    1921             : #if LK2_ENABLED
    1922             :     PURE module function isDescendingDefCom_D1_LK2(array) result(descending)
    1923             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1924             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_LK2
    1925             : #endif
    1926             :         use pm_kind, only: LKC => LK2
    1927             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1928             :         logical(LK)                                             :: descending
    1929             :     end function
    1930             : #endif
    1931             : 
    1932             : #if LK1_ENABLED
    1933             :     PURE module function isDescendingDefCom_D1_LK1(array) result(descending)
    1934             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1935             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_LK1
    1936             : #endif
    1937             :         use pm_kind, only: LKC => LK1
    1938             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    1939             :         logical(LK)                                             :: descending
    1940             :     end function
    1941             : #endif
    1942             : 
    1943             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1944             : 
    1945             : #if RK5_ENABLED
    1946             :     PURE module function isDescendingDefCom_D1_RK5(array) result(descending)
    1947             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1948             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_RK5
    1949             : #endif
    1950             :         use pm_kind, only: RKC => RK5
    1951             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1952             :         logical(LK)                                             :: descending
    1953             :     end function
    1954             : #endif
    1955             : 
    1956             : #if RK4_ENABLED
    1957             :     PURE module function isDescendingDefCom_D1_RK4(array) result(descending)
    1958             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1959             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_RK4
    1960             : #endif
    1961             :         use pm_kind, only: RKC => RK4
    1962             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1963             :         logical(LK)                                             :: descending
    1964             :     end function
    1965             : #endif
    1966             : 
    1967             : #if RK3_ENABLED
    1968             :     PURE module function isDescendingDefCom_D1_RK3(array) result(descending)
    1969             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1970             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_RK3
    1971             : #endif
    1972             :         use pm_kind, only: RKC => RK3
    1973             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1974             :         logical(LK)                                             :: descending
    1975             :     end function
    1976             : #endif
    1977             : 
    1978             : #if RK2_ENABLED
    1979             :     PURE module function isDescendingDefCom_D1_RK2(array) result(descending)
    1980             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1981             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_RK2
    1982             : #endif
    1983             :         use pm_kind, only: RKC => RK2
    1984             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1985             :         logical(LK)                                             :: descending
    1986             :     end function
    1987             : #endif
    1988             : 
    1989             : #if RK1_ENABLED
    1990             :     PURE module function isDescendingDefCom_D1_RK1(array) result(descending)
    1991             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    1992             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_RK1
    1993             : #endif
    1994             :         use pm_kind, only: RKC => RK1
    1995             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    1996             :         logical(LK)                                             :: descending
    1997             :     end function
    1998             : #endif
    1999             : 
    2000             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2001             : 
    2002             : #if CK5_ENABLED
    2003             :     PURE module function isDescendingDefCom_D1_CK5(array) result(descending)
    2004             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2005             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_CK5
    2006             : #endif
    2007             :         use pm_kind, only: CKC => CK5
    2008             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2009             :         logical(LK)                                             :: descending
    2010             :     end function
    2011             : #endif
    2012             : 
    2013             : #if CK4_ENABLED
    2014             :     PURE module function isDescendingDefCom_D1_CK4(array) result(descending)
    2015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2016             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_CK4
    2017             : #endif
    2018             :         use pm_kind, only: CKC => CK4
    2019             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2020             :         logical(LK)                                             :: descending
    2021             :     end function
    2022             : #endif
    2023             : 
    2024             : #if CK3_ENABLED
    2025             :     PURE module function isDescendingDefCom_D1_CK3(array) result(descending)
    2026             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2027             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_CK3
    2028             : #endif
    2029             :         use pm_kind, only: CKC => CK3
    2030             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2031             :         logical(LK)                                             :: descending
    2032             :     end function
    2033             : #endif
    2034             : 
    2035             : #if CK2_ENABLED
    2036             :     PURE module function isDescendingDefCom_D1_CK2(array) result(descending)
    2037             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2038             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_CK2
    2039             : #endif
    2040             :         use pm_kind, only: CKC => CK2
    2041             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2042             :         logical(LK)                                             :: descending
    2043             :     end function
    2044             : #endif
    2045             : 
    2046             : #if CK1_ENABLED
    2047             :     PURE module function isDescendingDefCom_D1_CK1(array) result(descending)
    2048             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2049             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_CK1
    2050             : #endif
    2051             :         use pm_kind, only: CKC => CK1
    2052             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2053             :         logical(LK)                                             :: descending
    2054             :     end function
    2055             : #endif
    2056             : 
    2057             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2058             : 
    2059             : #if SK5_ENABLED
    2060             :     PURE module function isDescendingDefCom_D1_PSSK5(array) result(descending)
    2061             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2062             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_PSSK5
    2063             : #endif
    2064             :         use pm_kind, only: SKC => SK5
    2065             :         use pm_container, only: css_pdt
    2066             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2067             :         logical(LK)                                             :: descending
    2068             :     end function
    2069             : #endif
    2070             : 
    2071             : #if SK4_ENABLED
    2072             :     PURE module function isDescendingDefCom_D1_PSSK4(array) result(descending)
    2073             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2074             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_PSSK4
    2075             : #endif
    2076             :         use pm_kind, only: SKC => SK4
    2077             :         use pm_container, only: css_pdt
    2078             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2079             :         logical(LK)                                             :: descending
    2080             :     end function
    2081             : #endif
    2082             : 
    2083             : #if SK3_ENABLED
    2084             :     PURE module function isDescendingDefCom_D1_PSSK3(array) result(descending)
    2085             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2086             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_PSSK3
    2087             : #endif
    2088             :         use pm_kind, only: SKC => SK3
    2089             :         use pm_container, only: css_pdt
    2090             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2091             :         logical(LK)                                             :: descending
    2092             :     end function
    2093             : #endif
    2094             : 
    2095             : #if SK2_ENABLED
    2096             :     PURE module function isDescendingDefCom_D1_PSSK2(array) result(descending)
    2097             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2098             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_PSSK2
    2099             : #endif
    2100             :         use pm_kind, only: SKC => SK2
    2101             :         use pm_container, only: css_pdt
    2102             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2103             :         logical(LK)                                             :: descending
    2104             :     end function
    2105             : #endif
    2106             : 
    2107             : #if SK1_ENABLED
    2108             :     PURE module function isDescendingDefCom_D1_PSSK1(array) result(descending)
    2109             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2110             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_PSSK1
    2111             : #endif
    2112             :         use pm_kind, only: SKC => SK1
    2113             :         use pm_container, only: css_pdt
    2114             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2115             :         logical(LK)                                             :: descending
    2116             :     end function
    2117             : #endif
    2118             : 
    2119             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2120             : 
    2121             :     PURE module function isDescendingDefCom_D1_BSSK(array) result(descending)
    2122             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2123             :         !DEC$ ATTRIBUTES DLLEXPORT :: isDescendingDefCom_D1_BSSK
    2124             : #endif
    2125             :         use pm_kind, only: SKC => SK
    2126             :         use pm_container, only: css_type
    2127             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    2128             :         logical(LK)                                             :: descending
    2129             :     end function
    2130             : 
    2131             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2132             : 
    2133             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2134             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2135             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2136             : 
    2137             :     end interface
    2138             : 
    2139             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2140             : 
    2141             :     !>  \brief
    2142             :     !>  Return `.true.` if the input array is sorted, either ascending or descending, or all equal.
    2143             :     !>
    2144             :     !>  \param[in]  array       :   The input `contiguous` array of rank `1` of either<br>
    2145             :     !>                              <ol>
    2146             :     !>                                  <li>    type [css_pdt](@ref pm_container::css_pdt) or,<br>
    2147             :     !>                                  <li>    type [css_type](@ref pm_container::css_type) or,<br>
    2148             :     !>                                  <li>    type `character` of kind \SKALL of arbitrary length type parameter or,<br>
    2149             :     !>                                  <li>    type `integer` of kind \IKALL or,<br>
    2150             :     !>                                  <li>    type `logical` of kind \LKALL or,<br>
    2151             :     !>                                  <li>    type `complex` of kind \CKALL or,<br>
    2152             :     !>                                  <li>    type `real` of kind \RKALL or,<br>
    2153             :     !>                              </ol>
    2154             :     !>                              or,
    2155             :     !>                              <ol>
    2156             :     !>                                  <li>    a *scalar* of type `character` of kind \SKALL of arbitrary length type parameter,<br>
    2157             :     !>                              </ol>
    2158             :     !>                              whose elements will be checked to have an all ascending, or all descending order with the possibility of elements being equal.
    2159             :     !>  \param      isSorted    :   The `external` user-specified function that takes two input **scalar** arguments of the same type and kind as the input `array`.<br>
    2160             :     !>                              It returns a scalar `logical` of default kind \LK that is `.true.` if the first
    2161             :     !>                              input scalar argument is sorted with respect to the second input argument according to the user-defined condition
    2162             :     !>                              within `isSorted`, otherwise, it is `.false.`.<br>
    2163             :     !>                              If `array` is a scalar string (i.e., an assumed-length scalar `character`),
    2164             :     !>                              then both input arguments to `isSorted()` are scalar characters of length `1` of kind \SKALL.<br>
    2165             :     !>                              The following illustrates the generic interface of `isSorted()`,
    2166             :     !>                              \code{.F90}
    2167             :     !>                                  function isSorted(lhs, rhs) result(sorted)
    2168             :     !>                                      use pm_kind, only: LK
    2169             :     !>                                      TYPE(KIND)  , intent(in)    :: lhs, rhs
    2170             :     !>                                      logical(LK)                 :: sorted
    2171             :     !>                                  end function
    2172             :     !>                              \endcode
    2173             :     !>                              where `TYPE(KIND)` is the same as the type and kind of the input argument `array`, which can be one of the following.
    2174             :     !>                              \code{.F90}
    2175             :     !>                                  use pm_container, only: css_type, css_pdt
    2176             :     !>                                  character(*, SK), intent(in) :: lhs, rhs
    2177             :     !>                                  character(1, SK), intent(in) :: lhs, rhs
    2178             :     !>                                  type(css_type)  , intent(in) :: lhs, rhs
    2179             :     !>                                  type(css_pdt)   , intent(in) :: lhs, rhs
    2180             :     !>                                  integer(IK)     , intent(in) :: lhs, rhs
    2181             :     !>                                  logical(LK)     , intent(in) :: lhs, rhs
    2182             :     !>                                  complex(CK)     , intent(in) :: lhs, rhs
    2183             :     !>                                  real(RK)        , intent(in) :: lhs, rhs
    2184             :     !>                              \endcode
    2185             :     !>                              where the specified kind type parameters (`SK`, `IK`, `LK`, `CK`, `RK`) can refer to any of the supported kinds by the processor.<br>
    2186             :     !>                              This user-defined equivalence check is extremely useful where a user-defined sorting criterion other than simple ascending order
    2187             :     !>                              is needed, for example, when the case-sensitivity of an input string or array of strings is irrelevant or when sorting of
    2188             :     !>                              the absolute values matters excluding the signs of the numbers, or when descending order is desired.<br>
    2189             :     !>                              In such cases, user can define a custom sorting condition within the user-defined external function `isSorted` to achieve the goal.<br>
    2190             :     !>                              (**optional**, the default sorting condition is ascending order, that is `a < b`.)
    2191             :     !>
    2192             :     !>  \return
    2193             :     !>  `sorted`                :   An output `logical` of default kind \LK that is `.true.` if all elements of the input array are
    2194             :     !>                              in ascending order, in descending order, or all equal. Otherwise, it is `.false.`.
    2195             :     !>
    2196             :     !>  \interface{isSorted}
    2197             :     !>  \code{.F90}
    2198             :     !>
    2199             :     !>      use pm_arraySort, only: isSorted
    2200             :     !>
    2201             :     !>      sorted = isSorted(array)
    2202             :     !>      sorted = isSorted(array, isSorted)
    2203             :     !>
    2204             :     !>  \endcode
    2205             :     !>
    2206             :     !>  \warning
    2207             :     !>  The output of this procedure is `.true.` when the input array has zero length.
    2208             :     !>
    2209             :     !>  \warnpure
    2210             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.
    2211             :     !>
    2212             :     !>  \see
    2213             :     !>  [isAscending](@ref pm_arraySort::isAscending)<br>
    2214             :     !>  [isDescending](@ref pm_arraySort::isDescending)<br>
    2215             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    2216             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    2217             :     !>
    2218             :     !>  \example{isSorted}
    2219             :     !>  \include{lineno} example/pm_arraySort/isSorted/main.F90
    2220             :     !>  \compilef{isSorted}
    2221             :     !>  \output{isSorted}
    2222             :     !>  \include{lineno} example/pm_arraySort/isSorted/main.out.F90
    2223             :     !>
    2224             :     !>  \test
    2225             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
    2226             :     !>
    2227             :     !>  \finmain{isSorted}
    2228             :     !>
    2229             :     !>  \author
    2230             :     !>  \AmirShahmoradi, April 21, 2017, 3:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    2231             :     interface isSorted
    2232             : 
    2233             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2234             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2235             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2236             : 
    2237             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2238             : 
    2239             : #if SK5_ENABLED
    2240             :     PURE module function isSortedDefCom_D0_SK5(array) result(sorted)
    2241             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2242             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D0_SK5
    2243             : #endif
    2244             :         use pm_kind, only: SKC => SK5
    2245             :         character(*,SKC)        , intent(in)                    :: array
    2246             :         logical(LK)                                             :: sorted
    2247             :     end function
    2248             : #endif
    2249             : 
    2250             : #if SK4_ENABLED
    2251             :     PURE module function isSortedDefCom_D0_SK4(array) result(sorted)
    2252             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2253             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D0_SK4
    2254             : #endif
    2255             :         use pm_kind, only: SKC => SK4
    2256             :         character(*,SKC)        , intent(in)                    :: array
    2257             :         logical(LK)                                             :: sorted
    2258             :     end function
    2259             : #endif
    2260             : 
    2261             : #if SK3_ENABLED
    2262             :     PURE module function isSortedDefCom_D0_SK3(array) result(sorted)
    2263             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2264             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D0_SK3
    2265             : #endif
    2266             :         use pm_kind, only: SKC => SK3
    2267             :         character(*,SKC)        , intent(in)                    :: array
    2268             :         logical(LK)                                             :: sorted
    2269             :     end function
    2270             : #endif
    2271             : 
    2272             : #if SK2_ENABLED
    2273             :     PURE module function isSortedDefCom_D0_SK2(array) result(sorted)
    2274             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2275             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D0_SK2
    2276             : #endif
    2277             :         use pm_kind, only: SKC => SK2
    2278             :         character(*,SKC)        , intent(in)                    :: array
    2279             :         logical(LK)                                             :: sorted
    2280             :     end function
    2281             : #endif
    2282             : 
    2283             : #if SK1_ENABLED
    2284             :     PURE module function isSortedDefCom_D0_SK1(array) result(sorted)
    2285             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2286             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D0_SK1
    2287             : #endif
    2288             :         use pm_kind, only: SKC => SK1
    2289             :         character(*,SKC)        , intent(in)                    :: array
    2290             :         logical(LK)                                             :: sorted
    2291             :     end function
    2292             : #endif
    2293             : 
    2294             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2295             : 
    2296             : #if SK5_ENABLED
    2297             :     PURE module function isSortedDefCom_D1_SK5(array) result(sorted)
    2298             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2299             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_SK5
    2300             : #endif
    2301             :         use pm_kind, only: SKC => SK5
    2302             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2303             :         logical(LK)                                             :: sorted
    2304             :     end function
    2305             : #endif
    2306             : 
    2307             : #if SK4_ENABLED
    2308             :     PURE module function isSortedDefCom_D1_SK4(array) result(sorted)
    2309             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2310             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_SK4
    2311             : #endif
    2312             :         use pm_kind, only: SKC => SK4
    2313             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2314             :         logical(LK)                                             :: sorted
    2315             :     end function
    2316             : #endif
    2317             : 
    2318             : #if SK3_ENABLED
    2319             :     PURE module function isSortedDefCom_D1_SK3(array) result(sorted)
    2320             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2321             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_SK3
    2322             : #endif
    2323             :         use pm_kind, only: SKC => SK3
    2324             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2325             :         logical(LK)                                             :: sorted
    2326             :     end function
    2327             : #endif
    2328             : 
    2329             : #if SK2_ENABLED
    2330             :     PURE module function isSortedDefCom_D1_SK2(array) result(sorted)
    2331             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2332             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_SK2
    2333             : #endif
    2334             :         use pm_kind, only: SKC => SK2
    2335             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2336             :         logical(LK)                                             :: sorted
    2337             :     end function
    2338             : #endif
    2339             : 
    2340             : #if SK1_ENABLED
    2341             :     PURE module function isSortedDefCom_D1_SK1(array) result(sorted)
    2342             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2343             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_SK1
    2344             : #endif
    2345             :         use pm_kind, only: SKC => SK1
    2346             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2347             :         logical(LK)                                             :: sorted
    2348             :     end function
    2349             : #endif
    2350             : 
    2351             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2352             : 
    2353             : #if IK5_ENABLED
    2354             :     PURE module function isSortedDefCom_D1_IK5(array) result(sorted)
    2355             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2356             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_IK5
    2357             : #endif
    2358             :         use pm_kind, only: IKC => IK5
    2359             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2360             :         logical(LK)                                             :: sorted
    2361             :     end function
    2362             : #endif
    2363             : 
    2364             : #if IK4_ENABLED
    2365             :     PURE module function isSortedDefCom_D1_IK4(array) result(sorted)
    2366             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2367             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_IK4
    2368             : #endif
    2369             :         use pm_kind, only: IKC => IK4
    2370             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2371             :         logical(LK)                                             :: sorted
    2372             :     end function
    2373             : #endif
    2374             : 
    2375             : #if IK3_ENABLED
    2376             :     PURE module function isSortedDefCom_D1_IK3(array) result(sorted)
    2377             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2378             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_IK3
    2379             : #endif
    2380             :         use pm_kind, only: IKC => IK3
    2381             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2382             :         logical(LK)                                             :: sorted
    2383             :     end function
    2384             : #endif
    2385             : 
    2386             : #if IK2_ENABLED
    2387             :     PURE module function isSortedDefCom_D1_IK2(array) result(sorted)
    2388             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2389             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_IK2
    2390             : #endif
    2391             :         use pm_kind, only: IKC => IK2
    2392             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2393             :         logical(LK)                                             :: sorted
    2394             :     end function
    2395             : #endif
    2396             : 
    2397             : #if IK1_ENABLED
    2398             :     PURE module function isSortedDefCom_D1_IK1(array) result(sorted)
    2399             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2400             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_IK1
    2401             : #endif
    2402             :         use pm_kind, only: IKC => IK1
    2403             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2404             :         logical(LK)                                             :: sorted
    2405             :     end function
    2406             : #endif
    2407             : 
    2408             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2409             : 
    2410             : #if LK5_ENABLED
    2411             :     PURE module function isSortedDefCom_D1_LK5(array) result(sorted)
    2412             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2413             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_LK5
    2414             : #endif
    2415             :         use pm_kind, only: LKC => LK5
    2416             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2417             :         logical(LK)                                             :: sorted
    2418             :     end function
    2419             : #endif
    2420             : 
    2421             : #if LK4_ENABLED
    2422             :     PURE module function isSortedDefCom_D1_LK4(array) result(sorted)
    2423             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2424             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_LK4
    2425             : #endif
    2426             :         use pm_kind, only: LKC => LK4
    2427             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2428             :         logical(LK)                                             :: sorted
    2429             :     end function
    2430             : #endif
    2431             : 
    2432             : #if LK3_ENABLED
    2433             :     PURE module function isSortedDefCom_D1_LK3(array) result(sorted)
    2434             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2435             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_LK3
    2436             : #endif
    2437             :         use pm_kind, only: LKC => LK3
    2438             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2439             :         logical(LK)                                             :: sorted
    2440             :     end function
    2441             : #endif
    2442             : 
    2443             : #if LK2_ENABLED
    2444             :     PURE module function isSortedDefCom_D1_LK2(array) result(sorted)
    2445             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2446             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_LK2
    2447             : #endif
    2448             :         use pm_kind, only: LKC => LK2
    2449             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2450             :         logical(LK)                                             :: sorted
    2451             :     end function
    2452             : #endif
    2453             : 
    2454             : #if LK1_ENABLED
    2455             :     PURE module function isSortedDefCom_D1_LK1(array) result(sorted)
    2456             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2457             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_LK1
    2458             : #endif
    2459             :         use pm_kind, only: LKC => LK1
    2460             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2461             :         logical(LK)                                             :: sorted
    2462             :     end function
    2463             : #endif
    2464             : 
    2465             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2466             : 
    2467             : #if RK5_ENABLED
    2468             :     PURE module function isSortedDefCom_D1_RK5(array) result(sorted)
    2469             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2470             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_RK5
    2471             : #endif
    2472             :         use pm_kind, only: RKC => RK5
    2473             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2474             :         logical(LK)                                             :: sorted
    2475             :     end function
    2476             : #endif
    2477             : 
    2478             : #if RK4_ENABLED
    2479             :     PURE module function isSortedDefCom_D1_RK4(array) result(sorted)
    2480             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2481             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_RK4
    2482             : #endif
    2483             :         use pm_kind, only: RKC => RK4
    2484             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2485             :         logical(LK)                                             :: sorted
    2486             :     end function
    2487             : #endif
    2488             : 
    2489             : #if RK3_ENABLED
    2490             :     PURE module function isSortedDefCom_D1_RK3(array) result(sorted)
    2491             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2492             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_RK3
    2493             : #endif
    2494             :         use pm_kind, only: RKC => RK3
    2495             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2496             :         logical(LK)                                             :: sorted
    2497             :     end function
    2498             : #endif
    2499             : 
    2500             : #if RK2_ENABLED
    2501             :     PURE module function isSortedDefCom_D1_RK2(array) result(sorted)
    2502             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2503             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_RK2
    2504             : #endif
    2505             :         use pm_kind, only: RKC => RK2
    2506             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2507             :         logical(LK)                                             :: sorted
    2508             :     end function
    2509             : #endif
    2510             : 
    2511             : #if RK1_ENABLED
    2512             :     PURE module function isSortedDefCom_D1_RK1(array) result(sorted)
    2513             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2514             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_RK1
    2515             : #endif
    2516             :         use pm_kind, only: RKC => RK1
    2517             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2518             :         logical(LK)                                             :: sorted
    2519             :     end function
    2520             : #endif
    2521             : 
    2522             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2523             : 
    2524             : #if CK5_ENABLED
    2525             :     PURE module function isSortedDefCom_D1_CK5(array) result(sorted)
    2526             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2527             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_CK5
    2528             : #endif
    2529             :         use pm_kind, only: CKC => CK5
    2530             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2531             :         logical(LK)                                             :: sorted
    2532             :     end function
    2533             : #endif
    2534             : 
    2535             : #if CK4_ENABLED
    2536             :     PURE module function isSortedDefCom_D1_CK4(array) result(sorted)
    2537             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2538             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_CK4
    2539             : #endif
    2540             :         use pm_kind, only: CKC => CK4
    2541             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2542             :         logical(LK)                                             :: sorted
    2543             :     end function
    2544             : #endif
    2545             : 
    2546             : #if CK3_ENABLED
    2547             :     PURE module function isSortedDefCom_D1_CK3(array) result(sorted)
    2548             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2549             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_CK3
    2550             : #endif
    2551             :         use pm_kind, only: CKC => CK3
    2552             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2553             :         logical(LK)                                             :: sorted
    2554             :     end function
    2555             : #endif
    2556             : 
    2557             : #if CK2_ENABLED
    2558             :     PURE module function isSortedDefCom_D1_CK2(array) result(sorted)
    2559             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2560             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_CK2
    2561             : #endif
    2562             :         use pm_kind, only: CKC => CK2
    2563             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2564             :         logical(LK)                                             :: sorted
    2565             :     end function
    2566             : #endif
    2567             : 
    2568             : #if CK1_ENABLED
    2569             :     PURE module function isSortedDefCom_D1_CK1(array) result(sorted)
    2570             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2571             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_CK1
    2572             : #endif
    2573             :         use pm_kind, only: CKC => CK1
    2574             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2575             :         logical(LK)                                             :: sorted
    2576             :     end function
    2577             : #endif
    2578             : 
    2579             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2580             : 
    2581             : #if SK5_ENABLED
    2582             :     PURE module function isSortedDefCom_D1_PSSK5(array) result(sorted)
    2583             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2584             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_PSSK5
    2585             : #endif
    2586             :         use pm_kind, only: SKC => SK5
    2587             :         use pm_container, only: css_pdt
    2588             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2589             :         logical(LK)                                             :: sorted
    2590             :     end function
    2591             : #endif
    2592             : 
    2593             : #if SK4_ENABLED
    2594             :     PURE module function isSortedDefCom_D1_PSSK4(array) result(sorted)
    2595             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2596             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_PSSK4
    2597             : #endif
    2598             :         use pm_kind, only: SKC => SK4
    2599             :         use pm_container, only: css_pdt
    2600             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2601             :         logical(LK)                                             :: sorted
    2602             :     end function
    2603             : #endif
    2604             : 
    2605             : #if SK3_ENABLED
    2606             :     PURE module function isSortedDefCom_D1_PSSK3(array) result(sorted)
    2607             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2608             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_PSSK3
    2609             : #endif
    2610             :         use pm_kind, only: SKC => SK3
    2611             :         use pm_container, only: css_pdt
    2612             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2613             :         logical(LK)                                             :: sorted
    2614             :     end function
    2615             : #endif
    2616             : 
    2617             : #if SK2_ENABLED
    2618             :     PURE module function isSortedDefCom_D1_PSSK2(array) result(sorted)
    2619             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2620             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_PSSK2
    2621             : #endif
    2622             :         use pm_kind, only: SKC => SK2
    2623             :         use pm_container, only: css_pdt
    2624             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2625             :         logical(LK)                                             :: sorted
    2626             :     end function
    2627             : #endif
    2628             : 
    2629             : #if SK1_ENABLED
    2630             :     PURE module function isSortedDefCom_D1_PSSK1(array) result(sorted)
    2631             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2632             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_PSSK1
    2633             : #endif
    2634             :         use pm_kind, only: SKC => SK1
    2635             :         use pm_container, only: css_pdt
    2636             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    2637             :         logical(LK)                                             :: sorted
    2638             :     end function
    2639             : #endif
    2640             : 
    2641             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2642             : 
    2643             :     PURE module function isSortedDefCom_D1_BSSK(array) result(sorted)
    2644             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2645             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedDefCom_D1_BSSK
    2646             : #endif
    2647             :         use pm_kind, only: SKC => SK
    2648             :         use pm_container, only: css_type
    2649             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    2650             :         logical(LK)                                             :: sorted
    2651             :     end function
    2652             : 
    2653             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2654             : 
    2655             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2657             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2658             : 
    2659             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2660             : 
    2661             : #if SK5_ENABLED
    2662             :     module function isSortedCusCom_D0_SK5(array, isSorted) result(sorted)
    2663             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2664             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D0_SK5
    2665             : #endif
    2666             :         use pm_kind, only: SKC => SK5
    2667             :         character(*,SKC)        , intent(in)                    :: array
    2668             :         procedure(logical(LK))                                  :: isSorted
    2669             :         logical(LK)                                             :: sorted
    2670             :     end function
    2671             : #endif
    2672             : 
    2673             : #if SK4_ENABLED
    2674             :     module function isSortedCusCom_D0_SK4(array, isSorted) result(sorted)
    2675             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2676             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D0_SK4
    2677             : #endif
    2678             :         use pm_kind, only: SKC => SK4
    2679             :         character(*,SKC)        , intent(in)                    :: array
    2680             :         procedure(logical(LK))                                  :: isSorted
    2681             :         logical(LK)                                             :: sorted
    2682             :     end function
    2683             : #endif
    2684             : 
    2685             : #if SK3_ENABLED
    2686             :     module function isSortedCusCom_D0_SK3(array, isSorted) result(sorted)
    2687             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2688             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D0_SK3
    2689             : #endif
    2690             :         use pm_kind, only: SKC => SK3
    2691             :         character(*,SKC)        , intent(in)                    :: array
    2692             :         procedure(logical(LK))                                  :: isSorted
    2693             :         logical(LK)                                             :: sorted
    2694             :     end function
    2695             : #endif
    2696             : 
    2697             : #if SK2_ENABLED
    2698             :     module function isSortedCusCom_D0_SK2(array, isSorted) result(sorted)
    2699             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2700             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D0_SK2
    2701             : #endif
    2702             :         use pm_kind, only: SKC => SK2
    2703             :         character(*,SKC)        , intent(in)                    :: array
    2704             :         procedure(logical(LK))                                  :: isSorted
    2705             :         logical(LK)                                             :: sorted
    2706             :     end function
    2707             : #endif
    2708             : 
    2709             : #if SK1_ENABLED
    2710             :     module function isSortedCusCom_D0_SK1(array, isSorted) result(sorted)
    2711             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2712             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D0_SK1
    2713             : #endif
    2714             :         use pm_kind, only: SKC => SK1
    2715             :         character(*,SKC)        , intent(in)                    :: array
    2716             :         procedure(logical(LK))                                  :: isSorted
    2717             :         logical(LK)                                             :: sorted
    2718             :     end function
    2719             : #endif
    2720             : 
    2721             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2722             : 
    2723             : #if SK5_ENABLED
    2724             :     module function isSortedCusCom_D1_SK5(array, isSorted) result(sorted)
    2725             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2726             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_SK5
    2727             : #endif
    2728             :         use pm_kind, only: SKC => SK5
    2729             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2730             :         procedure(logical(LK))                                  :: isSorted
    2731             :         logical(LK)                                             :: sorted
    2732             :     end function
    2733             : #endif
    2734             : 
    2735             : #if SK4_ENABLED
    2736             :     module function isSortedCusCom_D1_SK4(array, isSorted) result(sorted)
    2737             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2738             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_SK4
    2739             : #endif
    2740             :         use pm_kind, only: SKC => SK4
    2741             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2742             :         procedure(logical(LK))                                  :: isSorted
    2743             :         logical(LK)                                             :: sorted
    2744             :     end function
    2745             : #endif
    2746             : 
    2747             : #if SK3_ENABLED
    2748             :     module function isSortedCusCom_D1_SK3(array, isSorted) result(sorted)
    2749             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2750             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_SK3
    2751             : #endif
    2752             :         use pm_kind, only: SKC => SK3
    2753             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2754             :         procedure(logical(LK))                                  :: isSorted
    2755             :         logical(LK)                                             :: sorted
    2756             :     end function
    2757             : #endif
    2758             : 
    2759             : #if SK2_ENABLED
    2760             :     module function isSortedCusCom_D1_SK2(array, isSorted) result(sorted)
    2761             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2762             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_SK2
    2763             : #endif
    2764             :         use pm_kind, only: SKC => SK2
    2765             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2766             :         procedure(logical(LK))                                  :: isSorted
    2767             :         logical(LK)                                             :: sorted
    2768             :     end function
    2769             : #endif
    2770             : 
    2771             : #if SK1_ENABLED
    2772             :     module function isSortedCusCom_D1_SK1(array, isSorted) result(sorted)
    2773             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2774             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_SK1
    2775             : #endif
    2776             :         use pm_kind, only: SKC => SK1
    2777             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    2778             :         procedure(logical(LK))                                  :: isSorted
    2779             :         logical(LK)                                             :: sorted
    2780             :     end function
    2781             : #endif
    2782             : 
    2783             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2784             : 
    2785             : #if IK5_ENABLED
    2786             :     module function isSortedCusCom_D1_IK5(array, isSorted) result(sorted)
    2787             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2788             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_IK5
    2789             : #endif
    2790             :         use pm_kind, only: IKC => IK5
    2791             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2792             :         procedure(logical(LK))                                  :: isSorted
    2793             :         logical(LK)                                             :: sorted
    2794             :     end function
    2795             : #endif
    2796             : 
    2797             : #if IK4_ENABLED
    2798             :     module function isSortedCusCom_D1_IK4(array, isSorted) result(sorted)
    2799             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2800             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_IK4
    2801             : #endif
    2802             :         use pm_kind, only: IKC => IK4
    2803             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2804             :         procedure(logical(LK))                                  :: isSorted
    2805             :         logical(LK)                                             :: sorted
    2806             :     end function
    2807             : #endif
    2808             : 
    2809             : #if IK3_ENABLED
    2810             :     module function isSortedCusCom_D1_IK3(array, isSorted) result(sorted)
    2811             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2812             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_IK3
    2813             : #endif
    2814             :         use pm_kind, only: IKC => IK3
    2815             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2816             :         procedure(logical(LK))                                  :: isSorted
    2817             :         logical(LK)                                             :: sorted
    2818             :     end function
    2819             : #endif
    2820             : 
    2821             : #if IK2_ENABLED
    2822             :     module function isSortedCusCom_D1_IK2(array, isSorted) result(sorted)
    2823             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2824             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_IK2
    2825             : #endif
    2826             :         use pm_kind, only: IKC => IK2
    2827             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2828             :         procedure(logical(LK))                                  :: isSorted
    2829             :         logical(LK)                                             :: sorted
    2830             :     end function
    2831             : #endif
    2832             : 
    2833             : #if IK1_ENABLED
    2834             :     module function isSortedCusCom_D1_IK1(array, isSorted) result(sorted)
    2835             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2836             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_IK1
    2837             : #endif
    2838             :         use pm_kind, only: IKC => IK1
    2839             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    2840             :         procedure(logical(LK))                                  :: isSorted
    2841             :         logical(LK)                                             :: sorted
    2842             :     end function
    2843             : #endif
    2844             : 
    2845             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2846             : 
    2847             : #if LK5_ENABLED
    2848             :     module function isSortedCusCom_D1_LK5(array, isSorted) result(sorted)
    2849             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2850             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_LK5
    2851             : #endif
    2852             :         use pm_kind, only: LKC => LK5
    2853             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2854             :         procedure(logical(LK))                                  :: isSorted
    2855             :         logical(LK)                                             :: sorted
    2856             :     end function
    2857             : #endif
    2858             : 
    2859             : #if LK4_ENABLED
    2860             :     module function isSortedCusCom_D1_LK4(array, isSorted) result(sorted)
    2861             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2862             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_LK4
    2863             : #endif
    2864             :         use pm_kind, only: LKC => LK4
    2865             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2866             :         procedure(logical(LK))                                  :: isSorted
    2867             :         logical(LK)                                             :: sorted
    2868             :     end function
    2869             : #endif
    2870             : 
    2871             : #if LK3_ENABLED
    2872             :     module function isSortedCusCom_D1_LK3(array, isSorted) result(sorted)
    2873             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2874             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_LK3
    2875             : #endif
    2876             :         use pm_kind, only: LKC => LK3
    2877             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2878             :         procedure(logical(LK))                                  :: isSorted
    2879             :         logical(LK)                                             :: sorted
    2880             :     end function
    2881             : #endif
    2882             : 
    2883             : #if LK2_ENABLED
    2884             :     module function isSortedCusCom_D1_LK2(array, isSorted) result(sorted)
    2885             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2886             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_LK2
    2887             : #endif
    2888             :         use pm_kind, only: LKC => LK2
    2889             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2890             :         procedure(logical(LK))                                  :: isSorted
    2891             :         logical(LK)                                             :: sorted
    2892             :     end function
    2893             : #endif
    2894             : 
    2895             : #if LK1_ENABLED
    2896             :     module function isSortedCusCom_D1_LK1(array, isSorted) result(sorted)
    2897             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2898             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_LK1
    2899             : #endif
    2900             :         use pm_kind, only: LKC => LK1
    2901             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    2902             :         procedure(logical(LK))                                  :: isSorted
    2903             :         logical(LK)                                             :: sorted
    2904             :     end function
    2905             : #endif
    2906             : 
    2907             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2908             : 
    2909             : #if RK5_ENABLED
    2910             :     module function isSortedCusCom_D1_RK5(array, isSorted) result(sorted)
    2911             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2912             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_RK5
    2913             : #endif
    2914             :         use pm_kind, only: RKC => RK5
    2915             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2916             :         procedure(logical(LK))                                  :: isSorted
    2917             :         logical(LK)                                             :: sorted
    2918             :     end function
    2919             : #endif
    2920             : 
    2921             : #if RK4_ENABLED
    2922             :     module function isSortedCusCom_D1_RK4(array, isSorted) result(sorted)
    2923             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2924             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_RK4
    2925             : #endif
    2926             :         use pm_kind, only: RKC => RK4
    2927             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2928             :         procedure(logical(LK))                                  :: isSorted
    2929             :         logical(LK)                                             :: sorted
    2930             :     end function
    2931             : #endif
    2932             : 
    2933             : #if RK3_ENABLED
    2934             :     module function isSortedCusCom_D1_RK3(array, isSorted) result(sorted)
    2935             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2936             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_RK3
    2937             : #endif
    2938             :         use pm_kind, only: RKC => RK3
    2939             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2940             :         procedure(logical(LK))                                  :: isSorted
    2941             :         logical(LK)                                             :: sorted
    2942             :     end function
    2943             : #endif
    2944             : 
    2945             : #if RK2_ENABLED
    2946             :     module function isSortedCusCom_D1_RK2(array, isSorted) result(sorted)
    2947             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2948             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_RK2
    2949             : #endif
    2950             :         use pm_kind, only: RKC => RK2
    2951             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2952             :         procedure(logical(LK))                                  :: isSorted
    2953             :         logical(LK)                                             :: sorted
    2954             :     end function
    2955             : #endif
    2956             : 
    2957             : #if RK1_ENABLED
    2958             :     module function isSortedCusCom_D1_RK1(array, isSorted) result(sorted)
    2959             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2960             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_RK1
    2961             : #endif
    2962             :         use pm_kind, only: RKC => RK1
    2963             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    2964             :         procedure(logical(LK))                                  :: isSorted
    2965             :         logical(LK)                                             :: sorted
    2966             :     end function
    2967             : #endif
    2968             : 
    2969             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2970             : 
    2971             : #if CK5_ENABLED
    2972             :     module function isSortedCusCom_D1_CK5(array, isSorted) result(sorted)
    2973             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2974             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_CK5
    2975             : #endif
    2976             :         use pm_kind, only: CKC => CK5
    2977             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2978             :         procedure(logical(LK))                                  :: isSorted
    2979             :         logical(LK)                                             :: sorted
    2980             :     end function
    2981             : #endif
    2982             : 
    2983             : #if CK4_ENABLED
    2984             :     module function isSortedCusCom_D1_CK4(array, isSorted) result(sorted)
    2985             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2986             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_CK4
    2987             : #endif
    2988             :         use pm_kind, only: CKC => CK4
    2989             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    2990             :         procedure(logical(LK))                                  :: isSorted
    2991             :         logical(LK)                                             :: sorted
    2992             :     end function
    2993             : #endif
    2994             : 
    2995             : #if CK3_ENABLED
    2996             :     module function isSortedCusCom_D1_CK3(array, isSorted) result(sorted)
    2997             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    2998             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_CK3
    2999             : #endif
    3000             :         use pm_kind, only: CKC => CK3
    3001             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    3002             :         procedure(logical(LK))                                  :: isSorted
    3003             :         logical(LK)                                             :: sorted
    3004             :     end function
    3005             : #endif
    3006             : 
    3007             : #if CK2_ENABLED
    3008             :     module function isSortedCusCom_D1_CK2(array, isSorted) result(sorted)
    3009             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3010             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_CK2
    3011             : #endif
    3012             :         use pm_kind, only: CKC => CK2
    3013             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    3014             :         procedure(logical(LK))                                  :: isSorted
    3015             :         logical(LK)                                             :: sorted
    3016             :     end function
    3017             : #endif
    3018             : 
    3019             : #if CK1_ENABLED
    3020             :     module function isSortedCusCom_D1_CK1(array, isSorted) result(sorted)
    3021             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3022             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_CK1
    3023             : #endif
    3024             :         use pm_kind, only: CKC => CK1
    3025             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    3026             :         procedure(logical(LK))                                  :: isSorted
    3027             :         logical(LK)                                             :: sorted
    3028             :     end function
    3029             : #endif
    3030             : 
    3031             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3032             : 
    3033             : #if SK5_ENABLED
    3034             :     module function isSortedCusCom_D1_PSSK5(array, isSorted) result(sorted)
    3035             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3036             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_PSSK5
    3037             : #endif
    3038             :         use pm_kind, only: SKC => SK5
    3039             :         use pm_container, only: css_pdt
    3040             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    3041             :         procedure(logical(LK))                                  :: isSorted
    3042             :         logical(LK)                                             :: sorted
    3043             :     end function
    3044             : #endif
    3045             : 
    3046             : #if SK4_ENABLED
    3047             :     module function isSortedCusCom_D1_PSSK4(array, isSorted) result(sorted)
    3048             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3049             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_PSSK4
    3050             : #endif
    3051             :         use pm_kind, only: SKC => SK4
    3052             :         use pm_container, only: css_pdt
    3053             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    3054             :         procedure(logical(LK))                                  :: isSorted
    3055             :         logical(LK)                                             :: sorted
    3056             :     end function
    3057             : #endif
    3058             : 
    3059             : #if SK3_ENABLED
    3060             :     module function isSortedCusCom_D1_PSSK3(array, isSorted) result(sorted)
    3061             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3062             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_PSSK3
    3063             : #endif
    3064             :         use pm_kind, only: SKC => SK3
    3065             :         use pm_container, only: css_pdt
    3066             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    3067             :         procedure(logical(LK))                                  :: isSorted
    3068             :         logical(LK)                                             :: sorted
    3069             :     end function
    3070             : #endif
    3071             : 
    3072             : #if SK2_ENABLED
    3073             :     module function isSortedCusCom_D1_PSSK2(array, isSorted) result(sorted)
    3074             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3075             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_PSSK2
    3076             : #endif
    3077             :         use pm_kind, only: SKC => SK2
    3078             :         use pm_container, only: css_pdt
    3079             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    3080             :         procedure(logical(LK))                                  :: isSorted
    3081             :         logical(LK)                                             :: sorted
    3082             :     end function
    3083             : #endif
    3084             : 
    3085             : #if SK1_ENABLED
    3086             :     module function isSortedCusCom_D1_PSSK1(array, isSorted) result(sorted)
    3087             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3088             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_PSSK1
    3089             : #endif
    3090             :         use pm_kind, only: SKC => SK1
    3091             :         use pm_container, only: css_pdt
    3092             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    3093             :         procedure(logical(LK))                                  :: isSorted
    3094             :         logical(LK)                                             :: sorted
    3095             :     end function
    3096             : #endif
    3097             : 
    3098             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3099             : 
    3100             :     module function isSortedCusCom_D1_BSSK(array, isSorted) result(sorted)
    3101             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3102             :         !DEC$ ATTRIBUTES DLLEXPORT :: isSortedCusCom_D1_BSSK
    3103             : #endif
    3104             :         use pm_kind, only: SKC => SK
    3105             :         use pm_container, only: css_type
    3106             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    3107             :         procedure(logical(LK))                                  :: isSorted
    3108             :         logical(LK)                                             :: sorted
    3109             :     end function
    3110             : 
    3111             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3112             : 
    3113             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3114             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3115             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3116             : 
    3117             :     end interface
    3118             : 
    3119             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3120             : 
    3121             :     !>  \brief
    3122             :     !>  Generate and return the sorted elements of the input scalar string or `contiguous` vector in ascending order, or
    3123             :     !>  the **sorted indices** of the input scalar string or `contiguous` `array` of rank `1` in **ascending order**
    3124             :     !>  or in the user-specified order.
    3125             :     !>
    3126             :     !>  \details
    3127             :     !>  This generic interface either sorts the contents of an array or its indices in ascending order or via the
    3128             :     !>  user-specified custom input procedure `isSorted()`.<br>
    3129             :     !>
    3130             :     !>  The resulting output array or its `sorting` will be in ascending order (or in the requested order as specified by `isSorted()`.<br>
    3131             :     !>
    3132             :     !>  \note
    3133             :     !>  This generic interface is merely a convenient functional wrapper for the
    3134             :     !>  lower-level subroutine interface [setSorted](@ref pm_arraySort::setSorted).<br>
    3135             :     !>
    3136             :     !>  \param[in]      array       :   The `contiguous` array of rank `1` of either<br>
    3137             :     !>                                  <ol>
    3138             :     !>                                      <li>    type [css_pdt](@ref pm_container::css_pdt) (string container) or,<br>
    3139             :     !>                                      <li>    type [css_type](@ref pm_container::css_type) (string container of default kind) or,<br>
    3140             :     !>                                      <li>    type `character` of kind \SKALL of arbitrary length type parameter or,
    3141             :     !>                                      <li>    type `integer` of kind \IKALL or,<br>
    3142             :     !>                                      <li>    type `logical` of kind \LKALL or,<br>
    3143             :     !>                                      <li>    type `complex` of kind \CKALL or,<br>
    3144             :     !>                                      <li>    type `real` of kind \RKALL,<br>
    3145             :     !>                                  </ol>
    3146             :     !>                                  or,
    3147             :     !>                                  <ol>
    3148             :     !>                                      <li>    a **scalar** of type `character` of kind \SKALL of arbitrary length type parameter.<br>
    3149             :     !>                                  </ol>
    3150             :     !>  \param          isSorted    :   The `external` user-specified function that takes two input **scalar** arguments of the same type and kind as the input `array`.<br>
    3151             :     !>                                  It returns a scalar `logical` of default kind \LK that is `.true.` if the first
    3152             :     !>                                  input scalar argument is sorted with respect to the second input argument according to the user-defined condition
    3153             :     !>                                  within `isSorted`, otherwise, it is `.false.`.<br>
    3154             :     !>                                  If `array` is a scalar string (i.e., an assumed-length scalar `character`),
    3155             :     !>                                  then both input arguments to `isSorted()` are scalar characters of length `1` of kind \SKALL.<br>
    3156             :     !>                                  The following illustrates the generic interface of `isSorted()`,
    3157             :     !>                                  \code{.F90}
    3158             :     !>                                      function isSorted(lhs, rhs) result(sorted)
    3159             :     !>                                          use pm_kind, only: LK
    3160             :     !>                                          TYPE(KIND)  , intent(in)    :: lhs, rhs
    3161             :     !>                                          logical(LK)                 :: sorted
    3162             :     !>                                      end function
    3163             :     !>                                  \endcode
    3164             :     !>                                  where `TYPE(KIND)` is the same as the type and kind of the input argument `array`, which can be one of the following.
    3165             :     !>                                  \code{.F90}
    3166             :     !>                                      use pm_container, only: css_type, css_pdt
    3167             :     !>                                      character(*, SK), intent(in) :: lhs, rhs
    3168             :     !>                                      character(1, SK), intent(in) :: lhs, rhs
    3169             :     !>                                      type(css_type)  , intent(in) :: lhs, rhs
    3170             :     !>                                      type(css_pdt)   , intent(in) :: lhs, rhs
    3171             :     !>                                      integer(IK)     , intent(in) :: lhs, rhs
    3172             :     !>                                      logical(LK)     , intent(in) :: lhs, rhs
    3173             :     !>                                      complex(CK)     , intent(in) :: lhs, rhs
    3174             :     !>                                      real(RK)        , intent(in) :: lhs, rhs
    3175             :     !>                                  \endcode
    3176             :     !>                                  where the specified kind type parameters (`SK`, `IK`, `LK`, `CK`, `RK`) can refer to any of the supported kinds by the processor.<br>
    3177             :     !>                                  This user-defined equivalence check is extremely useful where a user-defined sorting criterion other than simple ascending order
    3178             :     !>                                  is needed, for example, when the case-sensitivity of an input string or array of strings is irrelevant or when sorting of
    3179             :     !>                                  the absolute values matters excluding the signs of the numbers, or when descending order is desired.<br>
    3180             :     !>                                  In such cases, user can define a custom sorting condition within the user-defined external function `isSorted` to achieve the goal.<br>
    3181             :     !>                                  (**optional**, the default sorting condition is ascending order, that is `a < b`.)
    3182             :     !>  \param          method      :   The input scalar constant that can be any of the following:<br>
    3183             :     !>                                  <ol>
    3184             :     !>                                      <li>    The constant [isort](@ref pm_arraySort::isort) or equivalently, an object of type [isort_type](@ref pm_arraySort::isort_type),
    3185             :     !>                                              implying that the **sorted indices** of the input array must be returned (instead of the sorted elements of array).<br>
    3186             :     !>                                      <li>    The constant [qsorti](@ref pm_arraySort::qsorti) or equivalently, an object of type [qsorti_type](@ref pm_arraySort::qsorti_type),
    3187             :     !>                                              implying that the **iterative** version of the **QuickSort** sorting algorithm should be used.<br>
    3188             :     !>                                              This method sorts the input array by a mixture of Quicksort and Selection sorting methods.<br>
    3189             :     !>                                              When the size the array to be sorted reaches `30` or less, the algorithm switches from Quicksort to Selection sorting.<br>
    3190             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$, and the worst-case order of \f$N^2\f$.<br>
    3191             :     !>                                              The worst case performance occurs for completely sorted input arrays.<br>
    3192             :     !>                                      <li>    The constant [qsortr](@ref pm_arraySort::qsortr) or equivalently, an object of type [qsortr_type](@ref pm_arraySort::qsortr_type),
    3193             :     !>                                              implying that the **recursive** version of the **QuickSort** sorting algorithm should be used.<br>
    3194             :     !>                                      <li>    The constant [qsortrdp](@ref pm_arraySort::qsortrdp) or equivalently, an object of type [qsortrdp_type](@ref pm_arraySort::qsortrdp_type),
    3195             :     !>                                              implying that the **recursive** version of the **Dual-Pivot QuickSort** sorting algorithm should be used.<br>
    3196             :     !>                                              The Dual-Pivot Quicksort algorithm can be slightly faster than the default Quicksort algorithms above.<br>
    3197             :     !>                                              However, [performance benchmarks](@ref pm_arraySort) indicate that the efficiency gain is marginal and insignificant.<br>
    3198             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$, and the worst-case order of \f$N^2\f$.
    3199             :     !>                                              The worst case performance occurs for completely sorted input arrays.<br>
    3200             :     !>                                      <li>    The constant [bubble](@ref pm_arraySort::bubble) or equivalently, an object of type [bubble_type](@ref pm_arraySort::bubble_type),
    3201             :     !>                                              implying that the **Bubble** sorting algorithm should be used.<br>
    3202             :     !>                                              This algorithm is of order \f$N^2\f$.<br>
    3203             :     !>                                      <li>    The constant [heapi](@ref pm_arraySort::heapi) or equivalently, an object of type [heapi_type](@ref pm_arraySort::heapi_type),
    3204             :     !>                                              implying that the **iterative** version of the **Heap** sorting algorithm should be used.<br>
    3205             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    3206             :     !>                                      <li>    The constant [heapr](@ref pm_arraySort::heapr) or equivalently, an object of type [heapr_type](@ref pm_arraySort::heapr_type),
    3207             :     !>                                              implying that the **recursive** version of the **Heap** sorting algorithm should be used.<br>
    3208             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    3209             :     !>                                      <li>    The constant [insertionl](@ref pm_arraySort::insertionl) or equivalently, an object of type [insertionl_type](@ref pm_arraySort::insertionl_type),
    3210             :     !>                                              implying that the **linear-search** version of the **insertion** sorting algorithm should be used.<br>
    3211             :     !>                                              The complexity of this algorithm is typically of order \f$N^2\f$.<br>
    3212             :     !>                                      <li>    The constant [insertionb](@ref pm_arraySort::insertionb) or equivalently, an object of type [insertionb_type](@ref pm_arraySort::insertionb_type),
    3213             :     !>                                              implying that the **binary-search** version of the **insertion** sorting algorithm should be used.<br>
    3214             :     !>                                              The complexity of this algorithm is typically of order \f$N^2\f$.<br>
    3215             :     !>                                      <li>    The constant [merger](@ref pm_arraySort::merger) or equivalently, an object of type [merger_type](@ref pm_arraySort::merger_type),
    3216             :     !>                                              implying that the **recursive** version of the **Merge** sorting algorithm should be used.<br>
    3217             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    3218             :     !>                                      <li>    The constant [selection](@ref pm_arraySort::selection) or equivalently, an object of type [selection_type](@ref pm_arraySort::selection_type),
    3219             :     !>                                              implying that the **Selection** sorting algorithm should be used.<br>
    3220             :     !>                                              This algorithm is of order \f$N^2\f$.<br>
    3221             :     !>                                      <li>    The constant [shell](@ref pm_arraySort::shell) or equivalently, an object of type [shell_type](@ref pm_arraySort::shell_type),
    3222             :     !>                                              implying that the **Shell** sorting algorithm should be used.<br>
    3223             :     !>                                              This algorithm is of order \f$N\log(N)\f$.<br>
    3224             :     !>                                  </ol>
    3225             :     !>                                  The presence of this argument is merely for compile-time resolution of the procedures of this generic interface.<br>
    3226             :     !>                                  (**optional**. default = [qsorti](@ref pm_arraySort::qsorti). It can be present only if the input argument `sorting` is missing.)
    3227             :     !>
    3228             :     !>  \return
    3229             :     !>  `sorting`                   :   The output object whose type and kind depends on the specified input `method`:<br>
    3230             :     !>                                  <ol>
    3231             :     !>                                      <li>    If `method` is set to [isort](@ref pm_arraySort::isort) or
    3232             :     !>                                              an object of type set to [isort_type](@ref pm_arraySort::isort_type),
    3233             :     !>                                              then the output `sorting` is of type `integer` of default kind \IK of rank `1`
    3234             :     !>                                              of the same size as the number of elements in the input `array` containing the
    3235             :     !>                                              **sorted indices** of the elements of the input array`.<br>
    3236             :     !>                                              **Read `sorting(i)` as the index of the element of `array` that contains the `i`th smallest (or ranked) value in the `array`.**<br>
    3237             :     !>                                              This kind of sorting of indices is also widely known as **ordinal ranking**.<br>
    3238             :     !>                                              In ordinal ranking, all items receive distinct ordinal numbers, including items that compare equal.<br>
    3239             :     !>                                              The assignment of distinct ordinal numbers to items that compare equal can be done at random, or arbitrarily.<br>
    3240             :     !>                                              But it is generally preferable to use a system that is arbitrary but consistent,
    3241             :     !>                                              as this gives stable results if the ranking is done multiple times.<br>
    3242             :     !>                                              In computer data processing, ordinal ranking is also referred to as **row numbering**.<br>
    3243             :     !>                                      <li>    If `method` is missing or set to any other value than the above,
    3244             :     !>                                              then the output `sorting` is of the same type, kind, rank, and shape as
    3245             :     !>                                              the input `array`, containing the **sorted elements** of the input array.<br>
    3246             :     !>                                  </ol>
    3247             :     !>
    3248             :     !>  \interface{getSorted}
    3249             :     !>  \code{.F90}
    3250             :     !>
    3251             :     !>      use pm_arraySort, only: getSorted
    3252             :     !>
    3253             :     !>      ! Sorting the indices of an array.
    3254             :     !>
    3255             :     !>      sorting(1:len(array)) = getSorted(array, isort, isSorted = isSorted) ! scalar characer `array`.
    3256             :     !>      sorting(1:size(array)) = getSorted(array(:), isort, isSorted = isSorted) ! all other intrinsic data types.
    3257             :     !>
    3258             :     !>      ! Sorting the contents of an array.
    3259             :     !>
    3260             :     !>      sorting(1:len(array)) = getSorted(array, method = method, isSorted = isSorted) ! scalar characer `array`.
    3261             :     !>      sorting(1:size(array)) = getSorted(array(:), method = method, isSorted = isSorted) ! all other intrinsic data types.
    3262             :     !>
    3263             :     !>  \endcode
    3264             :     !>
    3265             :     !>  \warnpure
    3266             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.<br>
    3267             :     !>
    3268             :     !>  \devnote
    3269             :     !>  The use of the Fortran intrinsic `minloc` in the sorting routines appears to lead a slightly better performance than the manual search.<br>
    3270             :     !>
    3271             :     !>  \note
    3272             :     !>  To rank the input array in descending order using the output `sorting` indices,
    3273             :     !>  simply call the output `sorting` indices from the end to the beginning or,
    3274             :     !>  rewrite the array with `array = array(sorting(ubound(array, dim = 1) : lbound(array, dim = 1) : -1) )`.<br>
    3275             :     !>
    3276             :     !>  \note
    3277             :     !>  To sort the input array in descending order, simply call the output array elements from the end to the beginning or,
    3278             :     !>  rewrite the array with `array = array(ubound(array, dim = 1) : lbound(array, dim = 1) : -1)`.<br>
    3279             :     !>  Alternatively, supply an external comparison function `isSorted()` with the appropriate comparison.<br>
    3280             :     !>
    3281             :     !>  \note
    3282             :     !>  A rooter array can be sorted along with a leader array with the help of [getSorted](@ref pm_arraySort::getSorted).<br>
    3283             :     !>
    3284             :     !>  \see
    3285             :     !>  [getLoc](@ref pm_arrayFind::getLoc)<br>
    3286             :     !>  [setLoc](@ref pm_arrayFind::setLoc)<br>
    3287             :     !>  [getBin](@ref pm_arraySearch::getBin)<br>
    3288             :     !>  [getSorted](@ref pm_arraySort::getSorted)<br>
    3289             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    3290             :     !>  [getRankDense](@ref pm_arrayRank::getRankDense)<br>
    3291             :     !>  [setRankDense](@ref pm_arrayRank::setRankDense)<br>
    3292             :     !>  [getRankOrdinal](@ref pm_arrayRank::getRankOrdinal)<br>
    3293             :     !>  [setRankOrdinal](@ref pm_arrayRank::setRankOrdinal)<br>
    3294             :     !>  [getRankModified](@ref pm_arrayRank::getRankModified)<br>
    3295             :     !>  [setRankModified](@ref pm_arrayRank::setRankModified)<br>
    3296             :     !>  [getRankStandard](@ref pm_arrayRank::getRankStandard)<br>
    3297             :     !>  [setRankStandard](@ref pm_arrayRank::setRankStandard)<br>
    3298             :     !>  [getRankFractional](@ref pm_arrayRank::getRankFractional)<br>
    3299             :     !>  [setRankFractional](@ref pm_arrayRank::setRankFractional)<br>
    3300             :     !>  [getSelected](@ref pm_arraySelect::getSelected)<br>
    3301             :     !>  [setSelected](@ref pm_arraySelect::setSelected)<br>
    3302             :     !>
    3303             :     !>  \example{getSorted}
    3304             :     !>  \include{lineno} example/pm_arraySort/getSorted/main.F90
    3305             :     !>  \compilef{getSorted}
    3306             :     !>  \output{getSorted}
    3307             :     !>  \include{lineno} example/pm_arraySort/getSorted/main.out.F90
    3308             :     !>
    3309             :     !>  \test
    3310             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
    3311             :     !>
    3312             :     !>  \finmain{getSorted}
    3313             :     !>
    3314             :     !>  \author
    3315             :     !>  \AmirShahmoradi, April 21, 2017, 1:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    3316             : 
    3317             :     ! getSortedIndCusComDef
    3318             : 
    3319             :     interface getSorted
    3320             : 
    3321             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3322             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3323             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3324             : 
    3325             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3326             : 
    3327             : #if SK5_ENABLED
    3328             :     module function getSortedIndCusComDef_D0_SK5(array, isSorted, method) result(sorting)
    3329             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3330             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D0_SK5
    3331             : #endif
    3332             :         use pm_kind, only: SKC => SK5
    3333             :         character(*,SKC)            , intent(in)                    :: array
    3334             :         procedure(logical(LK))                                      :: isSorted
    3335             :         integer(IK)                                                 :: sorting(len(array, IK))
    3336             :         type(isort_type)            , intent(in)                    :: method
    3337             :     end function
    3338             : #endif
    3339             : 
    3340             : #if SK4_ENABLED
    3341             :     module function getSortedIndCusComDef_D0_SK4(array, isSorted, method) result(sorting)
    3342             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3343             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D0_SK4
    3344             : #endif
    3345             :         use pm_kind, only: SKC => SK4
    3346             :         character(*,SKC)            , intent(in)                    :: array
    3347             :         procedure(logical(LK))                                      :: isSorted
    3348             :         integer(IK)                                                 :: sorting(len(array, IK))
    3349             :         type(isort_type)            , intent(in)                    :: method
    3350             :     end function
    3351             : #endif
    3352             : 
    3353             : #if SK3_ENABLED
    3354             :     module function getSortedIndCusComDef_D0_SK3(array, isSorted, method) result(sorting)
    3355             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3356             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D0_SK3
    3357             : #endif
    3358             :         use pm_kind, only: SKC => SK3
    3359             :         character(*,SKC)            , intent(in)                    :: array
    3360             :         procedure(logical(LK))                                      :: isSorted
    3361             :         integer(IK)                                                 :: sorting(len(array, IK))
    3362             :         type(isort_type)            , intent(in)                    :: method
    3363             :     end function
    3364             : #endif
    3365             : 
    3366             : #if SK2_ENABLED
    3367             :     module function getSortedIndCusComDef_D0_SK2(array, isSorted, method) result(sorting)
    3368             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3369             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D0_SK2
    3370             : #endif
    3371             :         use pm_kind, only: SKC => SK2
    3372             :         character(*,SKC)            , intent(in)                    :: array
    3373             :         procedure(logical(LK))                                      :: isSorted
    3374             :         integer(IK)                                                 :: sorting(len(array, IK))
    3375             :         type(isort_type)            , intent(in)                    :: method
    3376             :     end function
    3377             : #endif
    3378             : 
    3379             : #if SK1_ENABLED
    3380             :     module function getSortedIndCusComDef_D0_SK1(array, isSorted, method) result(sorting)
    3381             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3382             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D0_SK1
    3383             : #endif
    3384             :         use pm_kind, only: SKC => SK1
    3385             :         character(*,SKC)            , intent(in)                    :: array
    3386             :         procedure(logical(LK))                                      :: isSorted
    3387             :         integer(IK)                                                 :: sorting(len(array, IK))
    3388             :         type(isort_type)            , intent(in)                    :: method
    3389             :     end function
    3390             : #endif
    3391             : 
    3392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3393             : 
    3394             : #if SK5_ENABLED
    3395             :     module function getSortedIndCusComDef_D1_SK5(array, isSorted, method) result(sorting)
    3396             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3397             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_SK5
    3398             : #endif
    3399             :         use pm_kind, only: SKC => SK5
    3400             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    3401             :         procedure(logical(LK))                                      :: isSorted
    3402             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3403             :         type(isort_type)            , intent(in)                    :: method
    3404             :     end function
    3405             : #endif
    3406             : 
    3407             : #if SK4_ENABLED
    3408             :     module function getSortedIndCusComDef_D1_SK4(array, isSorted, method) result(sorting)
    3409             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3410             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_SK4
    3411             : #endif
    3412             :         use pm_kind, only: SKC => SK4
    3413             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    3414             :         procedure(logical(LK))                                      :: isSorted
    3415             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3416             :         type(isort_type)            , intent(in)                    :: method
    3417             :     end function
    3418             : #endif
    3419             : 
    3420             : #if SK3_ENABLED
    3421             :     module function getSortedIndCusComDef_D1_SK3(array, isSorted, method) result(sorting)
    3422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3423             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_SK3
    3424             : #endif
    3425             :         use pm_kind, only: SKC => SK3
    3426             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    3427             :         procedure(logical(LK))                                      :: isSorted
    3428             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3429             :         type(isort_type)            , intent(in)                    :: method
    3430             :     end function
    3431             : #endif
    3432             : 
    3433             : #if SK2_ENABLED
    3434             :     module function getSortedIndCusComDef_D1_SK2(array, isSorted, method) result(sorting)
    3435             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3436             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_SK2
    3437             : #endif
    3438             :         use pm_kind, only: SKC => SK2
    3439             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    3440             :         procedure(logical(LK))                                      :: isSorted
    3441             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3442             :         type(isort_type)            , intent(in)                    :: method
    3443             :     end function
    3444             : #endif
    3445             : 
    3446             : #if SK1_ENABLED
    3447             :     module function getSortedIndCusComDef_D1_SK1(array, isSorted, method) result(sorting)
    3448             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3449             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_SK1
    3450             : #endif
    3451             :         use pm_kind, only: SKC => SK1
    3452             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    3453             :         procedure(logical(LK))                                      :: isSorted
    3454             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3455             :         type(isort_type)            , intent(in)                    :: method
    3456             :     end function
    3457             : #endif
    3458             : 
    3459             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3460             : 
    3461             : #if IK5_ENABLED
    3462             :     module function getSortedIndCusComDef_D1_IK5(array, isSorted, method) result(sorting)
    3463             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3464             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_IK5
    3465             : #endif
    3466             :         use pm_kind, only: IKC => IK5
    3467             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    3468             :         procedure(logical(LK))                                      :: isSorted
    3469             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3470             :         type(isort_type)            , intent(in)                    :: method
    3471             :     end function
    3472             : #endif
    3473             : 
    3474             : #if IK4_ENABLED
    3475             :     module function getSortedIndCusComDef_D1_IK4(array, isSorted, method) result(sorting)
    3476             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3477             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_IK4
    3478             : #endif
    3479             :         use pm_kind, only: IKC => IK4
    3480             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    3481             :         procedure(logical(LK))                                      :: isSorted
    3482             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3483             :         type(isort_type)            , intent(in)                    :: method
    3484             :     end function
    3485             : #endif
    3486             : 
    3487             : #if IK3_ENABLED
    3488             :     module function getSortedIndCusComDef_D1_IK3(array, isSorted, method) result(sorting)
    3489             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3490             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_IK3
    3491             : #endif
    3492             :         use pm_kind, only: IKC => IK3
    3493             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    3494             :         procedure(logical(LK))                                      :: isSorted
    3495             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3496             :         type(isort_type)            , intent(in)                    :: method
    3497             :     end function
    3498             : #endif
    3499             : 
    3500             : #if IK2_ENABLED
    3501             :     module function getSortedIndCusComDef_D1_IK2(array, isSorted, method) result(sorting)
    3502             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3503             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_IK2
    3504             : #endif
    3505             :         use pm_kind, only: IKC => IK2
    3506             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    3507             :         procedure(logical(LK))                                      :: isSorted
    3508             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3509             :         type(isort_type)            , intent(in)                    :: method
    3510             :     end function
    3511             : #endif
    3512             : 
    3513             : #if IK1_ENABLED
    3514             :     module function getSortedIndCusComDef_D1_IK1(array, isSorted, method) result(sorting)
    3515             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3516             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_IK1
    3517             : #endif
    3518             :         use pm_kind, only: IKC => IK1
    3519             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    3520             :         procedure(logical(LK))                                      :: isSorted
    3521             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3522             :         type(isort_type)            , intent(in)                    :: method
    3523             :     end function
    3524             : #endif
    3525             : 
    3526             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3527             : 
    3528             : #if LK5_ENABLED
    3529             :     module function getSortedIndCusComDef_D1_LK5(array, isSorted, method) result(sorting)
    3530             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3531             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_LK5
    3532             : #endif
    3533             :         use pm_kind, only: LKC => LK5
    3534             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    3535             :         procedure(logical(LK))                                      :: isSorted
    3536             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3537             :         type(isort_type)            , intent(in)                    :: method
    3538             :     end function
    3539             : #endif
    3540             : 
    3541             : #if LK4_ENABLED
    3542             :     module function getSortedIndCusComDef_D1_LK4(array, isSorted, method) result(sorting)
    3543             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3544             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_LK4
    3545             : #endif
    3546             :         use pm_kind, only: LKC => LK4
    3547             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    3548             :         procedure(logical(LK))                                      :: isSorted
    3549             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3550             :         type(isort_type)            , intent(in)                    :: method
    3551             :     end function
    3552             : #endif
    3553             : 
    3554             : #if LK3_ENABLED
    3555             :     module function getSortedIndCusComDef_D1_LK3(array, isSorted, method) result(sorting)
    3556             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3557             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_LK3
    3558             : #endif
    3559             :         use pm_kind, only: LKC => LK3
    3560             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    3561             :         procedure(logical(LK))                                      :: isSorted
    3562             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3563             :         type(isort_type)            , intent(in)                    :: method
    3564             :     end function
    3565             : #endif
    3566             : 
    3567             : #if LK2_ENABLED
    3568             :     module function getSortedIndCusComDef_D1_LK2(array, isSorted, method) result(sorting)
    3569             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3570             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_LK2
    3571             : #endif
    3572             :         use pm_kind, only: LKC => LK2
    3573             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    3574             :         procedure(logical(LK))                                      :: isSorted
    3575             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3576             :         type(isort_type)            , intent(in)                    :: method
    3577             :     end function
    3578             : #endif
    3579             : 
    3580             : #if LK1_ENABLED
    3581             :     module function getSortedIndCusComDef_D1_LK1(array, isSorted, method) result(sorting)
    3582             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3583             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_LK1
    3584             : #endif
    3585             :         use pm_kind, only: LKC => LK1
    3586             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    3587             :         procedure(logical(LK))                                      :: isSorted
    3588             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3589             :         type(isort_type)            , intent(in)                    :: method
    3590             :     end function
    3591             : #endif
    3592             : 
    3593             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3594             : 
    3595             : #if CK5_ENABLED
    3596             :     module function getSortedIndCusComDef_D1_CK5(array, isSorted, method) result(sorting)
    3597             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3598             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_CK5
    3599             : #endif
    3600             :         use pm_kind, only: CKC => CK5
    3601             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    3602             :         procedure(logical(LK))                                      :: isSorted
    3603             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3604             :         type(isort_type)            , intent(in)                    :: method
    3605             :     end function
    3606             : #endif
    3607             : 
    3608             : #if CK4_ENABLED
    3609             :     module function getSortedIndCusComDef_D1_CK4(array, isSorted, method) result(sorting)
    3610             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3611             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_CK4
    3612             : #endif
    3613             :         use pm_kind, only: CKC => CK4
    3614             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    3615             :         procedure(logical(LK))                                      :: isSorted
    3616             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3617             :         type(isort_type)            , intent(in)                    :: method
    3618             :     end function
    3619             : #endif
    3620             : 
    3621             : #if CK3_ENABLED
    3622             :     module function getSortedIndCusComDef_D1_CK3(array, isSorted, method) result(sorting)
    3623             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3624             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_CK3
    3625             : #endif
    3626             :         use pm_kind, only: CKC => CK3
    3627             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    3628             :         procedure(logical(LK))                                      :: isSorted
    3629             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3630             :         type(isort_type)            , intent(in)                    :: method
    3631             :     end function
    3632             : #endif
    3633             : 
    3634             : #if CK2_ENABLED
    3635             :     module function getSortedIndCusComDef_D1_CK2(array, isSorted, method) result(sorting)
    3636             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3637             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_CK2
    3638             : #endif
    3639             :         use pm_kind, only: CKC => CK2
    3640             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    3641             :         procedure(logical(LK))                                      :: isSorted
    3642             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3643             :         type(isort_type)            , intent(in)                    :: method
    3644             :     end function
    3645             : #endif
    3646             : 
    3647             : #if CK1_ENABLED
    3648             :     module function getSortedIndCusComDef_D1_CK1(array, isSorted, method) result(sorting)
    3649             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3650             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_CK1
    3651             : #endif
    3652             :         use pm_kind, only: CKC => CK1
    3653             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    3654             :         procedure(logical(LK))                                      :: isSorted
    3655             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3656             :         type(isort_type)            , intent(in)                    :: method
    3657             :     end function
    3658             : #endif
    3659             : 
    3660             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3661             : 
    3662             : #if RK5_ENABLED
    3663             :     module function getSortedIndCusComDef_D1_RK5(array, isSorted, method) result(sorting)
    3664             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3665             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_RK5
    3666             : #endif
    3667             :         use pm_kind, only: RKC => RK5
    3668             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    3669             :         procedure(logical(LK))                                      :: isSorted
    3670             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3671             :         type(isort_type)            , intent(in)                    :: method
    3672             :     end function
    3673             : #endif
    3674             : 
    3675             : #if RK4_ENABLED
    3676             :     module function getSortedIndCusComDef_D1_RK4(array, isSorted, method) result(sorting)
    3677             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3678             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_RK4
    3679             : #endif
    3680             :         use pm_kind, only: RKC => RK4
    3681             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    3682             :         procedure(logical(LK))                                      :: isSorted
    3683             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3684             :         type(isort_type)            , intent(in)                    :: method
    3685             :     end function
    3686             : #endif
    3687             : 
    3688             : #if RK3_ENABLED
    3689             :     module function getSortedIndCusComDef_D1_RK3(array, isSorted, method) result(sorting)
    3690             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3691             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_RK3
    3692             : #endif
    3693             :         use pm_kind, only: RKC => RK3
    3694             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    3695             :         procedure(logical(LK))                                      :: isSorted
    3696             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3697             :         type(isort_type)            , intent(in)                    :: method
    3698             :     end function
    3699             : #endif
    3700             : 
    3701             : #if RK2_ENABLED
    3702             :     module function getSortedIndCusComDef_D1_RK2(array, isSorted, method) result(sorting)
    3703             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3704             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_RK2
    3705             : #endif
    3706             :         use pm_kind, only: RKC => RK2
    3707             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    3708             :         procedure(logical(LK))                                      :: isSorted
    3709             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3710             :         type(isort_type)            , intent(in)                    :: method
    3711             :     end function
    3712             : #endif
    3713             : 
    3714             : #if RK1_ENABLED
    3715             :     module function getSortedIndCusComDef_D1_RK1(array, isSorted, method) result(sorting)
    3716             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3717             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_RK1
    3718             : #endif
    3719             :         use pm_kind, only: RKC => RK1
    3720             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    3721             :         procedure(logical(LK))                                      :: isSorted
    3722             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3723             :         type(isort_type)            , intent(in)                    :: method
    3724             :     end function
    3725             : #endif
    3726             : 
    3727             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3728             : 
    3729             : #if SK5_ENABLED
    3730             :     module function getSortedIndCusComDef_D1_PSSK5(array, isSorted, method) result(sorting)
    3731             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3732             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_PSSK5
    3733             : #endif
    3734             :         use pm_kind, only: SKC => SK5
    3735             :         use pm_container, only: css_pdt
    3736             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    3737             :         procedure(logical(LK))                                      :: isSorted
    3738             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3739             :         type(isort_type)            , intent(in)                    :: method
    3740             :     end function
    3741             : #endif
    3742             : 
    3743             : #if SK4_ENABLED
    3744             :     module function getSortedIndCusComDef_D1_PSSK4(array, isSorted, method) result(sorting)
    3745             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3746             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_PSSK4
    3747             : #endif
    3748             :         use pm_kind, only: SKC => SK4
    3749             :         use pm_container, only: css_pdt
    3750             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    3751             :         procedure(logical(LK))                                      :: isSorted
    3752             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3753             :         type(isort_type)            , intent(in)                    :: method
    3754             :     end function
    3755             : #endif
    3756             : 
    3757             : #if SK3_ENABLED
    3758             :     module function getSortedIndCusComDef_D1_PSSK3(array, isSorted, method) result(sorting)
    3759             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3760             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_PSSK3
    3761             : #endif
    3762             :         use pm_kind, only: SKC => SK3
    3763             :         use pm_container, only: css_pdt
    3764             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    3765             :         procedure(logical(LK))                                      :: isSorted
    3766             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3767             :         type(isort_type)            , intent(in)                    :: method
    3768             :     end function
    3769             : #endif
    3770             : 
    3771             : #if SK2_ENABLED
    3772             :     module function getSortedIndCusComDef_D1_PSSK2(array, isSorted, method) result(sorting)
    3773             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3774             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_PSSK2
    3775             : #endif
    3776             :         use pm_kind, only: SKC => SK2
    3777             :         use pm_container, only: css_pdt
    3778             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    3779             :         procedure(logical(LK))                                      :: isSorted
    3780             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3781             :         type(isort_type)            , intent(in)                    :: method
    3782             :     end function
    3783             : #endif
    3784             : 
    3785             : #if SK1_ENABLED
    3786             :     module function getSortedIndCusComDef_D1_PSSK1(array, isSorted, method) result(sorting)
    3787             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3788             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_PSSK1
    3789             : #endif
    3790             :         use pm_kind, only: SKC => SK1
    3791             :         use pm_container, only: css_pdt
    3792             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    3793             :         procedure(logical(LK))                                      :: isSorted
    3794             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3795             :         type(isort_type)            , intent(in)                    :: method
    3796             :     end function
    3797             : #endif
    3798             : 
    3799             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3800             : 
    3801             :     module function getSortedIndCusComDef_D1_BSSK(array, isSorted, method) result(sorting)
    3802             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3803             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndCusComDef_D1_BSSK
    3804             : #endif
    3805             :         use pm_kind, only: SKC => SK
    3806             :         use pm_container, only: css_type
    3807             :         type(css_type)              , intent(in)    , contiguous    :: array(:)
    3808             :         procedure(logical(LK))                                      :: isSorted
    3809             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    3810             :         type(isort_type)            , intent(in)                    :: method
    3811             :     end function
    3812             : 
    3813             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3814             : 
    3815             :     end interface
    3816             : 
    3817             :     ! getSortedArrCusComDef
    3818             : 
    3819             :     interface getSorted
    3820             : 
    3821             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3822             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3823             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3824             : 
    3825             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3826             : 
    3827             : #if SK5_ENABLED
    3828             :     module function getSortedArrCusComDef_D0_SK5(array, isSorted, method) result(sorting)
    3829             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3830             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D0_SK5
    3831             : #endif
    3832             :         use pm_kind, only: SKC => SK5
    3833             :         character(*,SKC)        , intent(in)                    :: array
    3834             :         character(len(array, IK),SKC)                           :: sorting
    3835             :         procedure(logical(LK))                                  :: isSorted
    3836             :         class(sort_type)        , intent(in)    , optional      :: method
    3837             :     end function
    3838             : #endif
    3839             : 
    3840             : #if SK4_ENABLED
    3841             :     module function getSortedArrCusComDef_D0_SK4(array, isSorted, method) result(sorting)
    3842             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3843             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D0_SK4
    3844             : #endif
    3845             :         use pm_kind, only: SKC => SK4
    3846             :         character(*,SKC)        , intent(in)                    :: array
    3847             :         character(len(array, IK),SKC)                           :: sorting
    3848             :         procedure(logical(LK))                                  :: isSorted
    3849             :         class(sort_type)        , intent(in)    , optional      :: method
    3850             :     end function
    3851             : #endif
    3852             : 
    3853             : #if SK3_ENABLED
    3854             :     module function getSortedArrCusComDef_D0_SK3(array, isSorted, method) result(sorting)
    3855             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3856             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D0_SK3
    3857             : #endif
    3858             :         use pm_kind, only: SKC => SK3
    3859             :         character(*,SKC)        , intent(in)                    :: array
    3860             :         character(len(array, IK),SKC)                           :: sorting
    3861             :         procedure(logical(LK))                                  :: isSorted
    3862             :         class(sort_type)        , intent(in)    , optional      :: method
    3863             :     end function
    3864             : #endif
    3865             : 
    3866             : #if SK2_ENABLED
    3867             :     module function getSortedArrCusComDef_D0_SK2(array, isSorted, method) result(sorting)
    3868             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3869             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D0_SK2
    3870             : #endif
    3871             :         use pm_kind, only: SKC => SK2
    3872             :         character(*,SKC)        , intent(in)                    :: array
    3873             :         character(len(array, IK),SKC)                           :: sorting
    3874             :         procedure(logical(LK))                                  :: isSorted
    3875             :         class(sort_type)        , intent(in)    , optional      :: method
    3876             :     end function
    3877             : #endif
    3878             : 
    3879             : #if SK1_ENABLED
    3880             :     module function getSortedArrCusComDef_D0_SK1(array, isSorted, method) result(sorting)
    3881             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3882             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D0_SK1
    3883             : #endif
    3884             :         use pm_kind, only: SKC => SK1
    3885             :         character(*,SKC)        , intent(in)                    :: array
    3886             :         character(len(array, IK),SKC)                           :: sorting
    3887             :         procedure(logical(LK))                                  :: isSorted
    3888             :         class(sort_type)        , intent(in)    , optional      :: method
    3889             :     end function
    3890             : #endif
    3891             : 
    3892             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3893             : 
    3894             : #if SK5_ENABLED
    3895             :     module function getSortedArrCusComDef_D1_SK5(array, isSorted, method) result(sorting)
    3896             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3897             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_SK5
    3898             : #endif
    3899             :         use pm_kind, only: SKC => SK5
    3900             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    3901             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    3902             :         procedure(logical(LK))                                  :: isSorted
    3903             :         class(sort_type)        , intent(in)    , optional      :: method
    3904             :     end function
    3905             : #endif
    3906             : 
    3907             : #if SK4_ENABLED
    3908             :     module function getSortedArrCusComDef_D1_SK4(array, isSorted, method) result(sorting)
    3909             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3910             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_SK4
    3911             : #endif
    3912             :         use pm_kind, only: SKC => SK4
    3913             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    3914             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    3915             :         procedure(logical(LK))                                  :: isSorted
    3916             :         class(sort_type)        , intent(in)    , optional      :: method
    3917             :     end function
    3918             : #endif
    3919             : 
    3920             : #if SK3_ENABLED
    3921             :     module function getSortedArrCusComDef_D1_SK3(array, isSorted, method) result(sorting)
    3922             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3923             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_SK3
    3924             : #endif
    3925             :         use pm_kind, only: SKC => SK3
    3926             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    3927             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    3928             :         procedure(logical(LK))                                  :: isSorted
    3929             :         class(sort_type)        , intent(in)    , optional      :: method
    3930             :     end function
    3931             : #endif
    3932             : 
    3933             : #if SK2_ENABLED
    3934             :     module function getSortedArrCusComDef_D1_SK2(array, isSorted, method) result(sorting)
    3935             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3936             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_SK2
    3937             : #endif
    3938             :         use pm_kind, only: SKC => SK2
    3939             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    3940             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    3941             :         procedure(logical(LK))                                  :: isSorted
    3942             :         class(sort_type)        , intent(in)    , optional      :: method
    3943             :     end function
    3944             : #endif
    3945             : 
    3946             : #if SK1_ENABLED
    3947             :     module function getSortedArrCusComDef_D1_SK1(array, isSorted, method) result(sorting)
    3948             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3949             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_SK1
    3950             : #endif
    3951             :         use pm_kind, only: SKC => SK1
    3952             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    3953             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    3954             :         procedure(logical(LK))                                  :: isSorted
    3955             :         class(sort_type)        , intent(in)    , optional      :: method
    3956             :     end function
    3957             : #endif
    3958             : 
    3959             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3960             : 
    3961             : #if IK5_ENABLED
    3962             :     module function getSortedArrCusComDef_D1_IK5(array, isSorted, method) result(sorting)
    3963             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3964             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_IK5
    3965             : #endif
    3966             :         use pm_kind, only: IKC => IK5
    3967             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    3968             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    3969             :         procedure(logical(LK))                                  :: isSorted
    3970             :         class(sort_type)        , intent(in)    , optional      :: method
    3971             :     end function
    3972             : #endif
    3973             : 
    3974             : #if IK4_ENABLED
    3975             :     module function getSortedArrCusComDef_D1_IK4(array, isSorted, method) result(sorting)
    3976             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3977             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_IK4
    3978             : #endif
    3979             :         use pm_kind, only: IKC => IK4
    3980             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    3981             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    3982             :         procedure(logical(LK))                                  :: isSorted
    3983             :         class(sort_type)        , intent(in)    , optional      :: method
    3984             :     end function
    3985             : #endif
    3986             : 
    3987             : #if IK3_ENABLED
    3988             :     module function getSortedArrCusComDef_D1_IK3(array, isSorted, method) result(sorting)
    3989             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    3990             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_IK3
    3991             : #endif
    3992             :         use pm_kind, only: IKC => IK3
    3993             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    3994             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    3995             :         procedure(logical(LK))                                  :: isSorted
    3996             :         class(sort_type)        , intent(in)    , optional      :: method
    3997             :     end function
    3998             : #endif
    3999             : 
    4000             : #if IK2_ENABLED
    4001             :     module function getSortedArrCusComDef_D1_IK2(array, isSorted, method) result(sorting)
    4002             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4003             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_IK2
    4004             : #endif
    4005             :         use pm_kind, only: IKC => IK2
    4006             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4007             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4008             :         procedure(logical(LK))                                  :: isSorted
    4009             :         class(sort_type)        , intent(in)    , optional      :: method
    4010             :     end function
    4011             : #endif
    4012             : 
    4013             : #if IK1_ENABLED
    4014             :     module function getSortedArrCusComDef_D1_IK1(array, isSorted, method) result(sorting)
    4015             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4016             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_IK1
    4017             : #endif
    4018             :         use pm_kind, only: IKC => IK1
    4019             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4020             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4021             :         procedure(logical(LK))                                  :: isSorted
    4022             :         class(sort_type)        , intent(in)    , optional      :: method
    4023             :     end function
    4024             : #endif
    4025             : 
    4026             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4027             : 
    4028             : #if LK5_ENABLED
    4029             :     module function getSortedArrCusComDef_D1_LK5(array, isSorted, method) result(sorting)
    4030             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4031             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_LK5
    4032             : #endif
    4033             :         use pm_kind, only: LKC => LK5
    4034             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4035             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4036             :         procedure(logical(LK))                                  :: isSorted
    4037             :         class(sort_type)        , intent(in)    , optional      :: method
    4038             :     end function
    4039             : #endif
    4040             : 
    4041             : #if LK4_ENABLED
    4042             :     module function getSortedArrCusComDef_D1_LK4(array, isSorted, method) result(sorting)
    4043             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4044             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_LK4
    4045             : #endif
    4046             :         use pm_kind, only: LKC => LK4
    4047             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4048             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4049             :         procedure(logical(LK))                                  :: isSorted
    4050             :         class(sort_type)        , intent(in)    , optional      :: method
    4051             :     end function
    4052             : #endif
    4053             : 
    4054             : #if LK3_ENABLED
    4055             :     module function getSortedArrCusComDef_D1_LK3(array, isSorted, method) result(sorting)
    4056             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4057             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_LK3
    4058             : #endif
    4059             :         use pm_kind, only: LKC => LK3
    4060             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4061             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4062             :         procedure(logical(LK))                                  :: isSorted
    4063             :         class(sort_type)        , intent(in)    , optional      :: method
    4064             :     end function
    4065             : #endif
    4066             : 
    4067             : #if LK2_ENABLED
    4068             :     module function getSortedArrCusComDef_D1_LK2(array, isSorted, method) result(sorting)
    4069             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4070             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_LK2
    4071             : #endif
    4072             :         use pm_kind, only: LKC => LK2
    4073             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4074             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4075             :         procedure(logical(LK))                                  :: isSorted
    4076             :         class(sort_type)        , intent(in)    , optional      :: method
    4077             :     end function
    4078             : #endif
    4079             : 
    4080             : #if LK1_ENABLED
    4081             :     module function getSortedArrCusComDef_D1_LK1(array, isSorted, method) result(sorting)
    4082             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4083             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_LK1
    4084             : #endif
    4085             :         use pm_kind, only: LKC => LK1
    4086             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4087             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4088             :         procedure(logical(LK))                                  :: isSorted
    4089             :         class(sort_type)        , intent(in)    , optional      :: method
    4090             :     end function
    4091             : #endif
    4092             : 
    4093             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4094             : 
    4095             : #if CK5_ENABLED
    4096             :     module function getSortedArrCusComDef_D1_CK5(array, isSorted, method) result(sorting)
    4097             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4098             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_CK5
    4099             : #endif
    4100             :         use pm_kind, only: CKC => CK5
    4101             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    4102             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    4103             :         procedure(logical(LK))                                  :: isSorted
    4104             :         class(sort_type)        , intent(in)    , optional      :: method
    4105             :     end function
    4106             : #endif
    4107             : 
    4108             : #if CK4_ENABLED
    4109             :     module function getSortedArrCusComDef_D1_CK4(array, isSorted, method) result(sorting)
    4110             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4111             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_CK4
    4112             : #endif
    4113             :         use pm_kind, only: CKC => CK4
    4114             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    4115             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    4116             :         procedure(logical(LK))                                  :: isSorted
    4117             :         class(sort_type)        , intent(in)    , optional      :: method
    4118             :     end function
    4119             : #endif
    4120             : 
    4121             : #if CK3_ENABLED
    4122             :     module function getSortedArrCusComDef_D1_CK3(array, isSorted, method) result(sorting)
    4123             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4124             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_CK3
    4125             : #endif
    4126             :         use pm_kind, only: CKC => CK3
    4127             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    4128             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    4129             :         procedure(logical(LK))                                  :: isSorted
    4130             :         class(sort_type)        , intent(in)    , optional      :: method
    4131             :     end function
    4132             : #endif
    4133             : 
    4134             : #if CK2_ENABLED
    4135             :     module function getSortedArrCusComDef_D1_CK2(array, isSorted, method) result(sorting)
    4136             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4137             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_CK2
    4138             : #endif
    4139             :         use pm_kind, only: CKC => CK2
    4140             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    4141             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    4142             :         procedure(logical(LK))                                  :: isSorted
    4143             :         class(sort_type)        , intent(in)    , optional      :: method
    4144             :     end function
    4145             : #endif
    4146             : 
    4147             : #if CK1_ENABLED
    4148             :     module function getSortedArrCusComDef_D1_CK1(array, isSorted, method) result(sorting)
    4149             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4150             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_CK1
    4151             : #endif
    4152             :         use pm_kind, only: CKC => CK1
    4153             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    4154             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    4155             :         procedure(logical(LK))                                  :: isSorted
    4156             :         class(sort_type)        , intent(in)    , optional      :: method
    4157             :     end function
    4158             : #endif
    4159             : 
    4160             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4161             : 
    4162             : #if RK5_ENABLED
    4163             :     module function getSortedArrCusComDef_D1_RK5(array, isSorted, method) result(sorting)
    4164             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4165             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_RK5
    4166             : #endif
    4167             :         use pm_kind, only: RKC => RK5
    4168             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    4169             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    4170             :         procedure(logical(LK))                                  :: isSorted
    4171             :         class(sort_type)        , intent(in)    , optional      :: method
    4172             :     end function
    4173             : #endif
    4174             : 
    4175             : #if RK4_ENABLED
    4176             :     module function getSortedArrCusComDef_D1_RK4(array, isSorted, method) result(sorting)
    4177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4178             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_RK4
    4179             : #endif
    4180             :         use pm_kind, only: RKC => RK4
    4181             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    4182             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    4183             :         procedure(logical(LK))                                  :: isSorted
    4184             :         class(sort_type)        , intent(in)    , optional      :: method
    4185             :     end function
    4186             : #endif
    4187             : 
    4188             : #if RK3_ENABLED
    4189             :     module function getSortedArrCusComDef_D1_RK3(array, isSorted, method) result(sorting)
    4190             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4191             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_RK3
    4192             : #endif
    4193             :         use pm_kind, only: RKC => RK3
    4194             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    4195             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    4196             :         procedure(logical(LK))                                  :: isSorted
    4197             :         class(sort_type)        , intent(in)    , optional      :: method
    4198             :     end function
    4199             : #endif
    4200             : 
    4201             : #if RK2_ENABLED
    4202             :     module function getSortedArrCusComDef_D1_RK2(array, isSorted, method) result(sorting)
    4203             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4204             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_RK2
    4205             : #endif
    4206             :         use pm_kind, only: RKC => RK2
    4207             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    4208             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    4209             :         procedure(logical(LK))                                  :: isSorted
    4210             :         class(sort_type)        , intent(in)    , optional      :: method
    4211             :     end function
    4212             : #endif
    4213             : 
    4214             : #if RK1_ENABLED
    4215             :     module function getSortedArrCusComDef_D1_RK1(array, isSorted, method) result(sorting)
    4216             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4217             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_RK1
    4218             : #endif
    4219             :         use pm_kind, only: RKC => RK1
    4220             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    4221             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    4222             :         procedure(logical(LK))                                  :: isSorted
    4223             :         class(sort_type)        , intent(in)    , optional      :: method
    4224             :     end function
    4225             : #endif
    4226             : 
    4227             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4228             : 
    4229             : #if SK5_ENABLED
    4230             :     module function getSortedArrCusComDef_D1_PSSK5(array, isSorted, method) result(sorting)
    4231             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4232             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_PSSK5
    4233             : #endif
    4234             :         use pm_kind, only: SKC => SK5
    4235             :         use pm_container, only: css_pdt
    4236             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    4237             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    4238             :         procedure(logical(LK))                                  :: isSorted
    4239             :         class(sort_type)        , intent(in)    , optional      :: method
    4240             :     end function
    4241             : #endif
    4242             : 
    4243             : #if SK4_ENABLED
    4244             :     module function getSortedArrCusComDef_D1_PSSK4(array, isSorted, method) result(sorting)
    4245             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4246             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_PSSK4
    4247             : #endif
    4248             :         use pm_kind, only: SKC => SK4
    4249             :         use pm_container, only: css_pdt
    4250             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    4251             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    4252             :         procedure(logical(LK))                                  :: isSorted
    4253             :         class(sort_type)        , intent(in)    , optional      :: method
    4254             :     end function
    4255             : #endif
    4256             : 
    4257             : #if SK3_ENABLED
    4258             :     module function getSortedArrCusComDef_D1_PSSK3(array, isSorted, method) result(sorting)
    4259             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4260             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_PSSK3
    4261             : #endif
    4262             :         use pm_kind, only: SKC => SK3
    4263             :         use pm_container, only: css_pdt
    4264             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    4265             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    4266             :         procedure(logical(LK))                                  :: isSorted
    4267             :         class(sort_type)        , intent(in)    , optional      :: method
    4268             :     end function
    4269             : #endif
    4270             : 
    4271             : #if SK2_ENABLED
    4272             :     module function getSortedArrCusComDef_D1_PSSK2(array, isSorted, method) result(sorting)
    4273             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4274             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_PSSK2
    4275             : #endif
    4276             :         use pm_kind, only: SKC => SK2
    4277             :         use pm_container, only: css_pdt
    4278             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    4279             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    4280             :         procedure(logical(LK))                                  :: isSorted
    4281             :         class(sort_type)        , intent(in)    , optional      :: method
    4282             :     end function
    4283             : #endif
    4284             : 
    4285             : #if SK1_ENABLED
    4286             :     module function getSortedArrCusComDef_D1_PSSK1(array, isSorted, method) result(sorting)
    4287             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4288             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_PSSK1
    4289             : #endif
    4290             :         use pm_kind, only: SKC => SK1
    4291             :         use pm_container, only: css_pdt
    4292             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    4293             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    4294             :         procedure(logical(LK))                                  :: isSorted
    4295             :         class(sort_type)        , intent(in)    , optional      :: method
    4296             :     end function
    4297             : #endif
    4298             : 
    4299             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4300             : 
    4301             :     module function getSortedArrCusComDef_D1_BSSK(array, isSorted, method) result(sorting)
    4302             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4303             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrCusComDef_D1_BSSK
    4304             : #endif
    4305             :         use pm_kind, only: SKC => SK
    4306             :         use pm_container, only: css_type
    4307             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    4308             :         type(css_type)                                          :: sorting(size(array, 1, IK))
    4309             :         procedure(logical(LK))                                  :: isSorted
    4310             :         class(sort_type)        , intent(in)    , optional      :: method
    4311             :     end function
    4312             : 
    4313             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4314             : 
    4315             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4316             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4317             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4318             : 
    4319             :     end interface
    4320             : 
    4321             :     ! getSortedIndDefComDef
    4322             : 
    4323             :     interface getSorted
    4324             : 
    4325             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4326             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4327             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4328             : 
    4329             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4330             : 
    4331             : #if SK5_ENABLED
    4332             :     module function getSortedIndDefComDef_D0_SK5(array, method) result(sorting)
    4333             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4334             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D0_SK5
    4335             : #endif
    4336             :         use pm_kind, only: SKC => SK5
    4337             :         character(*,SKC)            , intent(in)                    :: array
    4338             :         integer(IK)                                                 :: sorting(len(array, IK))
    4339             :         type(isort_type)            , intent(in)                    :: method
    4340             :     end function
    4341             : #endif
    4342             : 
    4343             : #if SK4_ENABLED
    4344             :     module function getSortedIndDefComDef_D0_SK4(array, method) result(sorting)
    4345             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4346             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D0_SK4
    4347             : #endif
    4348             :         use pm_kind, only: SKC => SK4
    4349             :         character(*,SKC)            , intent(in)                    :: array
    4350             :         integer(IK)                                                 :: sorting(len(array, IK))
    4351             :         type(isort_type)            , intent(in)                    :: method
    4352             :     end function
    4353             : #endif
    4354             : 
    4355             : #if SK3_ENABLED
    4356             :     module function getSortedIndDefComDef_D0_SK3(array, method) result(sorting)
    4357             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4358             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D0_SK3
    4359             : #endif
    4360             :         use pm_kind, only: SKC => SK3
    4361             :         character(*,SKC)            , intent(in)                    :: array
    4362             :         integer(IK)                                                 :: sorting(len(array, IK))
    4363             :         type(isort_type)            , intent(in)                    :: method
    4364             :     end function
    4365             : #endif
    4366             : 
    4367             : #if SK2_ENABLED
    4368             :     module function getSortedIndDefComDef_D0_SK2(array, method) result(sorting)
    4369             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4370             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D0_SK2
    4371             : #endif
    4372             :         use pm_kind, only: SKC => SK2
    4373             :         character(*,SKC)            , intent(in)                    :: array
    4374             :         integer(IK)                                                 :: sorting(len(array, IK))
    4375             :         type(isort_type)            , intent(in)                    :: method
    4376             :     end function
    4377             : #endif
    4378             : 
    4379             : #if SK1_ENABLED
    4380             :     module function getSortedIndDefComDef_D0_SK1(array, method) result(sorting)
    4381             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4382             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D0_SK1
    4383             : #endif
    4384             :         use pm_kind, only: SKC => SK1
    4385             :         character(*,SKC)            , intent(in)                    :: array
    4386             :         integer(IK)                                                 :: sorting(len(array, IK))
    4387             :         type(isort_type)            , intent(in)                    :: method
    4388             :     end function
    4389             : #endif
    4390             : 
    4391             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4392             : 
    4393             : #if SK5_ENABLED
    4394             :     module function getSortedIndDefComDef_D1_SK5(array, method) result(sorting)
    4395             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4396             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_SK5
    4397             : #endif
    4398             :         use pm_kind, only: SKC => SK5
    4399             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    4400             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4401             :         type(isort_type)            , intent(in)                    :: method
    4402             :     end function
    4403             : #endif
    4404             : 
    4405             : #if SK4_ENABLED
    4406             :     module function getSortedIndDefComDef_D1_SK4(array, method) result(sorting)
    4407             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4408             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_SK4
    4409             : #endif
    4410             :         use pm_kind, only: SKC => SK4
    4411             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    4412             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4413             :         type(isort_type)            , intent(in)                    :: method
    4414             :     end function
    4415             : #endif
    4416             : 
    4417             : #if SK3_ENABLED
    4418             :     module function getSortedIndDefComDef_D1_SK3(array, method) result(sorting)
    4419             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4420             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_SK3
    4421             : #endif
    4422             :         use pm_kind, only: SKC => SK3
    4423             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    4424             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4425             :         type(isort_type)            , intent(in)                    :: method
    4426             :     end function
    4427             : #endif
    4428             : 
    4429             : #if SK2_ENABLED
    4430             :     module function getSortedIndDefComDef_D1_SK2(array, method) result(sorting)
    4431             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4432             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_SK2
    4433             : #endif
    4434             :         use pm_kind, only: SKC => SK2
    4435             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    4436             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4437             :         type(isort_type)            , intent(in)                    :: method
    4438             :     end function
    4439             : #endif
    4440             : 
    4441             : #if SK1_ENABLED
    4442             :     module function getSortedIndDefComDef_D1_SK1(array, method) result(sorting)
    4443             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4444             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_SK1
    4445             : #endif
    4446             :         use pm_kind, only: SKC => SK1
    4447             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    4448             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4449             :         type(isort_type)            , intent(in)                    :: method
    4450             :     end function
    4451             : #endif
    4452             : 
    4453             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4454             : 
    4455             : #if IK5_ENABLED
    4456             :     module function getSortedIndDefComDef_D1_IK5(array, method) result(sorting)
    4457             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4458             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_IK5
    4459             : #endif
    4460             :         use pm_kind, only: IKC => IK5
    4461             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    4462             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4463             :         type(isort_type)            , intent(in)                    :: method
    4464             :     end function
    4465             : #endif
    4466             : 
    4467             : #if IK4_ENABLED
    4468             :     module function getSortedIndDefComDef_D1_IK4(array, method) result(sorting)
    4469             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4470             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_IK4
    4471             : #endif
    4472             :         use pm_kind, only: IKC => IK4
    4473             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    4474             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4475             :         type(isort_type)            , intent(in)                    :: method
    4476             :     end function
    4477             : #endif
    4478             : 
    4479             : #if IK3_ENABLED
    4480             :     module function getSortedIndDefComDef_D1_IK3(array, method) result(sorting)
    4481             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4482             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_IK3
    4483             : #endif
    4484             :         use pm_kind, only: IKC => IK3
    4485             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    4486             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4487             :         type(isort_type)            , intent(in)                    :: method
    4488             :     end function
    4489             : #endif
    4490             : 
    4491             : #if IK2_ENABLED
    4492             :     module function getSortedIndDefComDef_D1_IK2(array, method) result(sorting)
    4493             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4494             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_IK2
    4495             : #endif
    4496             :         use pm_kind, only: IKC => IK2
    4497             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    4498             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4499             :         type(isort_type)            , intent(in)                    :: method
    4500             :     end function
    4501             : #endif
    4502             : 
    4503             : #if IK1_ENABLED
    4504             :     module function getSortedIndDefComDef_D1_IK1(array, method) result(sorting)
    4505             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4506             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_IK1
    4507             : #endif
    4508             :         use pm_kind, only: IKC => IK1
    4509             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    4510             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4511             :         type(isort_type)            , intent(in)                    :: method
    4512             :     end function
    4513             : #endif
    4514             : 
    4515             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4516             : 
    4517             : #if LK5_ENABLED
    4518             :     module function getSortedIndDefComDef_D1_LK5(array, method) result(sorting)
    4519             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4520             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_LK5
    4521             : #endif
    4522             :         use pm_kind, only: LKC => LK5
    4523             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    4524             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4525             :         type(isort_type)            , intent(in)                    :: method
    4526             :     end function
    4527             : #endif
    4528             : 
    4529             : #if LK4_ENABLED
    4530             :     module function getSortedIndDefComDef_D1_LK4(array, method) result(sorting)
    4531             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4532             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_LK4
    4533             : #endif
    4534             :         use pm_kind, only: LKC => LK4
    4535             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    4536             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4537             :         type(isort_type)            , intent(in)                    :: method
    4538             :     end function
    4539             : #endif
    4540             : 
    4541             : #if LK3_ENABLED
    4542             :     module function getSortedIndDefComDef_D1_LK3(array, method) result(sorting)
    4543             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4544             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_LK3
    4545             : #endif
    4546             :         use pm_kind, only: LKC => LK3
    4547             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    4548             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4549             :         type(isort_type)            , intent(in)                    :: method
    4550             :     end function
    4551             : #endif
    4552             : 
    4553             : #if LK2_ENABLED
    4554             :     module function getSortedIndDefComDef_D1_LK2(array, method) result(sorting)
    4555             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4556             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_LK2
    4557             : #endif
    4558             :         use pm_kind, only: LKC => LK2
    4559             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    4560             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4561             :         type(isort_type)            , intent(in)                    :: method
    4562             :     end function
    4563             : #endif
    4564             : 
    4565             : #if LK1_ENABLED
    4566             :     module function getSortedIndDefComDef_D1_LK1(array, method) result(sorting)
    4567             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4568             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_LK1
    4569             : #endif
    4570             :         use pm_kind, only: LKC => LK1
    4571             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    4572             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4573             :         type(isort_type)            , intent(in)                    :: method
    4574             :     end function
    4575             : #endif
    4576             : 
    4577             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4578             : 
    4579             : #if CK5_ENABLED
    4580             :     module function getSortedIndDefComDef_D1_CK5(array, method) result(sorting)
    4581             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4582             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_CK5
    4583             : #endif
    4584             :         use pm_kind, only: CKC => CK5
    4585             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    4586             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4587             :         type(isort_type)            , intent(in)                    :: method
    4588             :     end function
    4589             : #endif
    4590             : 
    4591             : #if CK4_ENABLED
    4592             :     module function getSortedIndDefComDef_D1_CK4(array, method) result(sorting)
    4593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4594             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_CK4
    4595             : #endif
    4596             :         use pm_kind, only: CKC => CK4
    4597             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    4598             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4599             :         type(isort_type)            , intent(in)                    :: method
    4600             :     end function
    4601             : #endif
    4602             : 
    4603             : #if CK3_ENABLED
    4604             :     module function getSortedIndDefComDef_D1_CK3(array, method) result(sorting)
    4605             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4606             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_CK3
    4607             : #endif
    4608             :         use pm_kind, only: CKC => CK3
    4609             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    4610             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4611             :         type(isort_type)            , intent(in)                    :: method
    4612             :     end function
    4613             : #endif
    4614             : 
    4615             : #if CK2_ENABLED
    4616             :     module function getSortedIndDefComDef_D1_CK2(array, method) result(sorting)
    4617             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4618             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_CK2
    4619             : #endif
    4620             :         use pm_kind, only: CKC => CK2
    4621             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    4622             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4623             :         type(isort_type)            , intent(in)                    :: method
    4624             :     end function
    4625             : #endif
    4626             : 
    4627             : #if CK1_ENABLED
    4628             :     module function getSortedIndDefComDef_D1_CK1(array, method) result(sorting)
    4629             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4630             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_CK1
    4631             : #endif
    4632             :         use pm_kind, only: CKC => CK1
    4633             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    4634             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4635             :         type(isort_type)            , intent(in)                    :: method
    4636             :     end function
    4637             : #endif
    4638             : 
    4639             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4640             : 
    4641             : #if RK5_ENABLED
    4642             :     module function getSortedIndDefComDef_D1_RK5(array, method) result(sorting)
    4643             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4644             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_RK5
    4645             : #endif
    4646             :         use pm_kind, only: RKC => RK5
    4647             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    4648             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4649             :         type(isort_type)            , intent(in)                    :: method
    4650             :     end function
    4651             : #endif
    4652             : 
    4653             : #if RK4_ENABLED
    4654             :     module function getSortedIndDefComDef_D1_RK4(array, method) result(sorting)
    4655             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4656             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_RK4
    4657             : #endif
    4658             :         use pm_kind, only: RKC => RK4
    4659             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    4660             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4661             :         type(isort_type)            , intent(in)                    :: method
    4662             :     end function
    4663             : #endif
    4664             : 
    4665             : #if RK3_ENABLED
    4666             :     module function getSortedIndDefComDef_D1_RK3(array, method) result(sorting)
    4667             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4668             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_RK3
    4669             : #endif
    4670             :         use pm_kind, only: RKC => RK3
    4671             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    4672             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4673             :         type(isort_type)            , intent(in)                    :: method
    4674             :     end function
    4675             : #endif
    4676             : 
    4677             : #if RK2_ENABLED
    4678             :     module function getSortedIndDefComDef_D1_RK2(array, method) result(sorting)
    4679             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4680             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_RK2
    4681             : #endif
    4682             :         use pm_kind, only: RKC => RK2
    4683             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    4684             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4685             :         type(isort_type)            , intent(in)                    :: method
    4686             :     end function
    4687             : #endif
    4688             : 
    4689             : #if RK1_ENABLED
    4690             :     module function getSortedIndDefComDef_D1_RK1(array, method) result(sorting)
    4691             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4692             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_RK1
    4693             : #endif
    4694             :         use pm_kind, only: RKC => RK1
    4695             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    4696             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4697             :         type(isort_type)            , intent(in)                    :: method
    4698             :     end function
    4699             : #endif
    4700             : 
    4701             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4702             : 
    4703             : #if SK5_ENABLED
    4704             :     module function getSortedIndDefComDef_D1_PSSK5(array, method) result(sorting)
    4705             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4706             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_PSSK5
    4707             : #endif
    4708             :         use pm_kind, only: SKC => SK5
    4709             :         use pm_container, only: css_pdt
    4710             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    4711             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4712             :         type(isort_type)            , intent(in)                    :: method
    4713             :     end function
    4714             : #endif
    4715             : 
    4716             : #if SK4_ENABLED
    4717             :     module function getSortedIndDefComDef_D1_PSSK4(array, method) result(sorting)
    4718             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4719             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_PSSK4
    4720             : #endif
    4721             :         use pm_kind, only: SKC => SK4
    4722             :         use pm_container, only: css_pdt
    4723             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    4724             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4725             :         type(isort_type)            , intent(in)                    :: method
    4726             :     end function
    4727             : #endif
    4728             : 
    4729             : #if SK3_ENABLED
    4730             :     module function getSortedIndDefComDef_D1_PSSK3(array, method) result(sorting)
    4731             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4732             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_PSSK3
    4733             : #endif
    4734             :         use pm_kind, only: SKC => SK3
    4735             :         use pm_container, only: css_pdt
    4736             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    4737             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4738             :         type(isort_type)            , intent(in)                    :: method
    4739             :     end function
    4740             : #endif
    4741             : 
    4742             : #if SK2_ENABLED
    4743             :     module function getSortedIndDefComDef_D1_PSSK2(array, method) result(sorting)
    4744             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4745             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_PSSK2
    4746             : #endif
    4747             :         use pm_kind, only: SKC => SK2
    4748             :         use pm_container, only: css_pdt
    4749             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    4750             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4751             :         type(isort_type)            , intent(in)                    :: method
    4752             :     end function
    4753             : #endif
    4754             : 
    4755             : #if SK1_ENABLED
    4756             :     module function getSortedIndDefComDef_D1_PSSK1(array, method) result(sorting)
    4757             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4758             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_PSSK1
    4759             : #endif
    4760             :         use pm_kind, only: SKC => SK1
    4761             :         use pm_container, only: css_pdt
    4762             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    4763             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4764             :         type(isort_type)            , intent(in)                    :: method
    4765             :     end function
    4766             : #endif
    4767             : 
    4768             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4769             : 
    4770             :     module function getSortedIndDefComDef_D1_BSSK(array, method) result(sorting)
    4771             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4772             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedIndDefComDef_D1_BSSK
    4773             : #endif
    4774             :         use pm_kind, only: SKC => SK
    4775             :         use pm_container, only: css_type
    4776             :         type(css_type)              , intent(in)    , contiguous    :: array(:)
    4777             :         integer(IK)                                                 :: sorting(size(array, 1, IK))
    4778             :         type(isort_type)            , intent(in)                    :: method
    4779             :     end function
    4780             : 
    4781             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4782             : 
    4783             :     end interface
    4784             : 
    4785             :     ! getSortedArrDefComDef
    4786             : 
    4787             :     interface getSorted
    4788             : 
    4789             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4790             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4791             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4792             : 
    4793             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4794             : 
    4795             : #if SK5_ENABLED
    4796             :     module function getSortedArrDefComDef_D0_SK5(array, method) result(sorting)
    4797             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4798             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D0_SK5
    4799             : #endif
    4800             :         use pm_kind, only: SKC => SK5
    4801             :         character(*,SKC)        , intent(in)                    :: array
    4802             :         character(len(array, IK),SKC)                           :: sorting
    4803             :         class(sort_type)        , intent(in)    , optional      :: method
    4804             :     end function
    4805             : #endif
    4806             : 
    4807             : #if SK4_ENABLED
    4808             :     module function getSortedArrDefComDef_D0_SK4(array, method) result(sorting)
    4809             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4810             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D0_SK4
    4811             : #endif
    4812             :         use pm_kind, only: SKC => SK4
    4813             :         character(*,SKC)        , intent(in)                    :: array
    4814             :         character(len(array, IK),SKC)                           :: sorting
    4815             :         class(sort_type)        , intent(in)    , optional      :: method
    4816             :     end function
    4817             : #endif
    4818             : 
    4819             : #if SK3_ENABLED
    4820             :     module function getSortedArrDefComDef_D0_SK3(array, method) result(sorting)
    4821             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4822             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D0_SK3
    4823             : #endif
    4824             :         use pm_kind, only: SKC => SK3
    4825             :         character(*,SKC)        , intent(in)                    :: array
    4826             :         character(len(array, IK),SKC)                           :: sorting
    4827             :         class(sort_type)        , intent(in)    , optional      :: method
    4828             :     end function
    4829             : #endif
    4830             : 
    4831             : #if SK2_ENABLED
    4832             :     module function getSortedArrDefComDef_D0_SK2(array, method) result(sorting)
    4833             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4834             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D0_SK2
    4835             : #endif
    4836             :         use pm_kind, only: SKC => SK2
    4837             :         character(*,SKC)        , intent(in)                    :: array
    4838             :         character(len(array, IK),SKC)                           :: sorting
    4839             :         class(sort_type)        , intent(in)    , optional      :: method
    4840             :     end function
    4841             : #endif
    4842             : 
    4843             : #if SK1_ENABLED
    4844             :     module function getSortedArrDefComDef_D0_SK1(array, method) result(sorting)
    4845             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4846             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D0_SK1
    4847             : #endif
    4848             :         use pm_kind, only: SKC => SK1
    4849             :         character(*,SKC)        , intent(in)                    :: array
    4850             :         character(len(array, IK),SKC)                           :: sorting
    4851             :         class(sort_type)        , intent(in)    , optional      :: method
    4852             :     end function
    4853             : #endif
    4854             : 
    4855             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4856             : 
    4857             : #if SK5_ENABLED
    4858             :     module function getSortedArrDefComDef_D1_SK5(array, method) result(sorting)
    4859             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4860             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_SK5
    4861             : #endif
    4862             :         use pm_kind, only: SKC => SK5
    4863             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    4864             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    4865             :         class(sort_type)        , intent(in)    , optional      :: method
    4866             :     end function
    4867             : #endif
    4868             : 
    4869             : #if SK4_ENABLED
    4870             :     module function getSortedArrDefComDef_D1_SK4(array, method) result(sorting)
    4871             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4872             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_SK4
    4873             : #endif
    4874             :         use pm_kind, only: SKC => SK4
    4875             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    4876             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    4877             :         class(sort_type)        , intent(in)    , optional      :: method
    4878             :     end function
    4879             : #endif
    4880             : 
    4881             : #if SK3_ENABLED
    4882             :     module function getSortedArrDefComDef_D1_SK3(array, method) result(sorting)
    4883             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4884             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_SK3
    4885             : #endif
    4886             :         use pm_kind, only: SKC => SK3
    4887             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    4888             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    4889             :         class(sort_type)        , intent(in)    , optional      :: method
    4890             :     end function
    4891             : #endif
    4892             : 
    4893             : #if SK2_ENABLED
    4894             :     module function getSortedArrDefComDef_D1_SK2(array, method) result(sorting)
    4895             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4896             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_SK2
    4897             : #endif
    4898             :         use pm_kind, only: SKC => SK2
    4899             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    4900             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    4901             :         class(sort_type)        , intent(in)    , optional      :: method
    4902             :     end function
    4903             : #endif
    4904             : 
    4905             : #if SK1_ENABLED
    4906             :     module function getSortedArrDefComDef_D1_SK1(array, method) result(sorting)
    4907             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4908             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_SK1
    4909             : #endif
    4910             :         use pm_kind, only: SKC => SK1
    4911             :         character(*,SKC)        , intent(in)    , contiguous    :: array(:)
    4912             :         character(len(array, IK),SKC)                           :: sorting(size(array, 1, IK))
    4913             :         class(sort_type)        , intent(in)    , optional      :: method
    4914             :     end function
    4915             : #endif
    4916             : 
    4917             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4918             : 
    4919             : #if IK5_ENABLED
    4920             :     module function getSortedArrDefComDef_D1_IK5(array, method) result(sorting)
    4921             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4922             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_IK5
    4923             : #endif
    4924             :         use pm_kind, only: IKC => IK5
    4925             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4926             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4927             :         class(sort_type)        , intent(in)    , optional      :: method
    4928             :     end function
    4929             : #endif
    4930             : 
    4931             : #if IK4_ENABLED
    4932             :     module function getSortedArrDefComDef_D1_IK4(array, method) result(sorting)
    4933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4934             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_IK4
    4935             : #endif
    4936             :         use pm_kind, only: IKC => IK4
    4937             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4938             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4939             :         class(sort_type)        , intent(in)    , optional      :: method
    4940             :     end function
    4941             : #endif
    4942             : 
    4943             : #if IK3_ENABLED
    4944             :     module function getSortedArrDefComDef_D1_IK3(array, method) result(sorting)
    4945             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4946             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_IK3
    4947             : #endif
    4948             :         use pm_kind, only: IKC => IK3
    4949             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4950             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4951             :         class(sort_type)        , intent(in)    , optional      :: method
    4952             :     end function
    4953             : #endif
    4954             : 
    4955             : #if IK2_ENABLED
    4956             :     module function getSortedArrDefComDef_D1_IK2(array, method) result(sorting)
    4957             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4958             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_IK2
    4959             : #endif
    4960             :         use pm_kind, only: IKC => IK2
    4961             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4962             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4963             :         class(sort_type)        , intent(in)    , optional      :: method
    4964             :     end function
    4965             : #endif
    4966             : 
    4967             : #if IK1_ENABLED
    4968             :     module function getSortedArrDefComDef_D1_IK1(array, method) result(sorting)
    4969             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4970             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_IK1
    4971             : #endif
    4972             :         use pm_kind, only: IKC => IK1
    4973             :         integer(IKC)            , intent(in)    , contiguous    :: array(:)
    4974             :         integer(IKC)                                            :: sorting(size(array, 1, IK))
    4975             :         class(sort_type)        , intent(in)    , optional      :: method
    4976             :     end function
    4977             : #endif
    4978             : 
    4979             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    4980             : 
    4981             : #if LK5_ENABLED
    4982             :     module function getSortedArrDefComDef_D1_LK5(array, method) result(sorting)
    4983             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4984             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_LK5
    4985             : #endif
    4986             :         use pm_kind, only: LKC => LK5
    4987             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    4988             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    4989             :         class(sort_type)        , intent(in)    , optional      :: method
    4990             :     end function
    4991             : #endif
    4992             : 
    4993             : #if LK4_ENABLED
    4994             :     module function getSortedArrDefComDef_D1_LK4(array, method) result(sorting)
    4995             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    4996             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_LK4
    4997             : #endif
    4998             :         use pm_kind, only: LKC => LK4
    4999             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    5000             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    5001             :         class(sort_type)        , intent(in)    , optional      :: method
    5002             :     end function
    5003             : #endif
    5004             : 
    5005             : #if LK3_ENABLED
    5006             :     module function getSortedArrDefComDef_D1_LK3(array, method) result(sorting)
    5007             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5008             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_LK3
    5009             : #endif
    5010             :         use pm_kind, only: LKC => LK3
    5011             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    5012             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    5013             :         class(sort_type)        , intent(in)    , optional      :: method
    5014             :     end function
    5015             : #endif
    5016             : 
    5017             : #if LK2_ENABLED
    5018             :     module function getSortedArrDefComDef_D1_LK2(array, method) result(sorting)
    5019             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5020             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_LK2
    5021             : #endif
    5022             :         use pm_kind, only: LKC => LK2
    5023             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    5024             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    5025             :         class(sort_type)        , intent(in)    , optional      :: method
    5026             :     end function
    5027             : #endif
    5028             : 
    5029             : #if LK1_ENABLED
    5030             :     module function getSortedArrDefComDef_D1_LK1(array, method) result(sorting)
    5031             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5032             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_LK1
    5033             : #endif
    5034             :         use pm_kind, only: LKC => LK1
    5035             :         logical(LKC)            , intent(in)    , contiguous    :: array(:)
    5036             :         logical(LKC)                                            :: sorting(size(array, 1, IK))
    5037             :         class(sort_type)        , intent(in)    , optional      :: method
    5038             :     end function
    5039             : #endif
    5040             : 
    5041             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5042             : 
    5043             : #if CK5_ENABLED
    5044             :     module function getSortedArrDefComDef_D1_CK5(array, method) result(sorting)
    5045             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5046             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_CK5
    5047             : #endif
    5048             :         use pm_kind, only: CKC => CK5
    5049             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    5050             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    5051             :         class(sort_type)        , intent(in)    , optional      :: method
    5052             :     end function
    5053             : #endif
    5054             : 
    5055             : #if CK4_ENABLED
    5056             :     module function getSortedArrDefComDef_D1_CK4(array, method) result(sorting)
    5057             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5058             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_CK4
    5059             : #endif
    5060             :         use pm_kind, only: CKC => CK4
    5061             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    5062             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    5063             :         class(sort_type)        , intent(in)    , optional      :: method
    5064             :     end function
    5065             : #endif
    5066             : 
    5067             : #if CK3_ENABLED
    5068             :     module function getSortedArrDefComDef_D1_CK3(array, method) result(sorting)
    5069             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5070             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_CK3
    5071             : #endif
    5072             :         use pm_kind, only: CKC => CK3
    5073             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    5074             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    5075             :         class(sort_type)        , intent(in)    , optional      :: method
    5076             :     end function
    5077             : #endif
    5078             : 
    5079             : #if CK2_ENABLED
    5080             :     module function getSortedArrDefComDef_D1_CK2(array, method) result(sorting)
    5081             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5082             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_CK2
    5083             : #endif
    5084             :         use pm_kind, only: CKC => CK2
    5085             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    5086             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    5087             :         class(sort_type)        , intent(in)    , optional      :: method
    5088             :     end function
    5089             : #endif
    5090             : 
    5091             : #if CK1_ENABLED
    5092             :     module function getSortedArrDefComDef_D1_CK1(array, method) result(sorting)
    5093             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5094             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_CK1
    5095             : #endif
    5096             :         use pm_kind, only: CKC => CK1
    5097             :         complex(CKC)            , intent(in)    , contiguous    :: array(:)
    5098             :         complex(CKC)                                            :: sorting(size(array, 1, IK))
    5099             :         class(sort_type)        , intent(in)    , optional      :: method
    5100             :     end function
    5101             : #endif
    5102             : 
    5103             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5104             : 
    5105             : #if RK5_ENABLED
    5106             :     module function getSortedArrDefComDef_D1_RK5(array, method) result(sorting)
    5107             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5108             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_RK5
    5109             : #endif
    5110             :         use pm_kind, only: RKC => RK5
    5111             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    5112             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    5113             :         class(sort_type)        , intent(in)    , optional      :: method
    5114             :     end function
    5115             : #endif
    5116             : 
    5117             : #if RK4_ENABLED
    5118             :     module function getSortedArrDefComDef_D1_RK4(array, method) result(sorting)
    5119             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5120             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_RK4
    5121             : #endif
    5122             :         use pm_kind, only: RKC => RK4
    5123             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    5124             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    5125             :         class(sort_type)        , intent(in)    , optional      :: method
    5126             :     end function
    5127             : #endif
    5128             : 
    5129             : #if RK3_ENABLED
    5130             :     module function getSortedArrDefComDef_D1_RK3(array, method) result(sorting)
    5131             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5132             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_RK3
    5133             : #endif
    5134             :         use pm_kind, only: RKC => RK3
    5135             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    5136             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    5137             :         class(sort_type)        , intent(in)    , optional      :: method
    5138             :     end function
    5139             : #endif
    5140             : 
    5141             : #if RK2_ENABLED
    5142             :     module function getSortedArrDefComDef_D1_RK2(array, method) result(sorting)
    5143             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5144             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_RK2
    5145             : #endif
    5146             :         use pm_kind, only: RKC => RK2
    5147             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    5148             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    5149             :         class(sort_type)        , intent(in)    , optional      :: method
    5150             :     end function
    5151             : #endif
    5152             : 
    5153             : #if RK1_ENABLED
    5154             :     module function getSortedArrDefComDef_D1_RK1(array, method) result(sorting)
    5155             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5156             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_RK1
    5157             : #endif
    5158             :         use pm_kind, only: RKC => RK1
    5159             :         real(RKC)               , intent(in)    , contiguous    :: array(:)
    5160             :         real(RKC)                                               :: sorting(size(array, 1, IK))
    5161             :         class(sort_type)        , intent(in)    , optional      :: method
    5162             :     end function
    5163             : #endif
    5164             : 
    5165             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5166             : 
    5167             : #if SK5_ENABLED
    5168             :     module function getSortedArrDefComDef_D1_PSSK5(array, method) result(sorting)
    5169             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5170             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_PSSK5
    5171             : #endif
    5172             :         use pm_kind, only: SKC => SK5
    5173             :         use pm_container, only: css_pdt
    5174             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    5175             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    5176             :         class(sort_type)        , intent(in)    , optional      :: method
    5177             :     end function
    5178             : #endif
    5179             : 
    5180             : #if SK4_ENABLED
    5181             :     module function getSortedArrDefComDef_D1_PSSK4(array, method) result(sorting)
    5182             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5183             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_PSSK4
    5184             : #endif
    5185             :         use pm_kind, only: SKC => SK4
    5186             :         use pm_container, only: css_pdt
    5187             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    5188             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    5189             :         class(sort_type)        , intent(in)    , optional      :: method
    5190             :     end function
    5191             : #endif
    5192             : 
    5193             : #if SK3_ENABLED
    5194             :     module function getSortedArrDefComDef_D1_PSSK3(array, method) result(sorting)
    5195             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5196             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_PSSK3
    5197             : #endif
    5198             :         use pm_kind, only: SKC => SK3
    5199             :         use pm_container, only: css_pdt
    5200             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    5201             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    5202             :         class(sort_type)        , intent(in)    , optional      :: method
    5203             :     end function
    5204             : #endif
    5205             : 
    5206             : #if SK2_ENABLED
    5207             :     module function getSortedArrDefComDef_D1_PSSK2(array, method) result(sorting)
    5208             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5209             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_PSSK2
    5210             : #endif
    5211             :         use pm_kind, only: SKC => SK2
    5212             :         use pm_container, only: css_pdt
    5213             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    5214             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    5215             :         class(sort_type)        , intent(in)    , optional      :: method
    5216             :     end function
    5217             : #endif
    5218             : 
    5219             : #if SK1_ENABLED
    5220             :     module function getSortedArrDefComDef_D1_PSSK1(array, method) result(sorting)
    5221             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5222             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_PSSK1
    5223             : #endif
    5224             :         use pm_kind, only: SKC => SK1
    5225             :         use pm_container, only: css_pdt
    5226             :         type(css_pdt(SKC))      , intent(in)    , contiguous    :: array(:)
    5227             :         type(css_pdt(SKC))                                      :: sorting(size(array, 1, IK))
    5228             :         class(sort_type)        , intent(in)    , optional      :: method
    5229             :     end function
    5230             : #endif
    5231             : 
    5232             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5233             : 
    5234             :     module function getSortedArrDefComDef_D1_BSSK(array, method) result(sorting)
    5235             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5236             :         !DEC$ ATTRIBUTES DLLEXPORT :: getSortedArrDefComDef_D1_BSSK
    5237             : #endif
    5238             :         use pm_kind, only: SKC => SK
    5239             :         use pm_container, only: css_type
    5240             :         type(css_type)          , intent(in)    , contiguous    :: array(:)
    5241             :         type(css_type)                                          :: sorting(size(array, 1, IK))
    5242             :         class(sort_type)        , intent(in)    , optional      :: method
    5243             :     end function
    5244             : 
    5245             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5246             : 
    5247             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5248             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5249             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5250             : 
    5251             :     end interface
    5252             : 
    5253             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5254             : 
    5255             :     !>  \brief
    5256             :     !>  Sort the input scalar string or `contiguous` vector in ascending order, or
    5257             :     !>  return the **sorted indices** of the input scalar string or `contiguous` `array` of rank `1` in **ascending order**
    5258             :     !>  or in the user-specified order.
    5259             :     !>
    5260             :     !>  \details
    5261             :     !>  This generic interface either sorts the contents of an array or its indices in ascending order or via the
    5262             :     !>  user-specified custom input procedure `isSorted()`.<br>
    5263             :     !>
    5264             :     !>  The resulting output array or its `index` will be in ascending order (or in the requested order as specified by `isSorted()`.<br>
    5265             :     !>  There are currently twelve sorting algorithms implemented in this generic interface.<br>
    5266             :     !>  Only the default sorting method can be used for sorting the indices of an array.<br>
    5267             :     !>  However, all sorting methods can be used to sort the elements of the array.<br>
    5268             :     !>  The default algorithm is generally the fastest sorting method.<br>
    5269             :     !>
    5270             :     !>  \param[inout]   array       :   The `contiguous` array of rank `1` of either<br>
    5271             :     !>                                  <ol>
    5272             :     !>                                      <li>    type [css_pdt](@ref pm_container::css_pdt) (string container) or,<br>
    5273             :     !>                                      <li>    type [css_type](@ref pm_container::css_type) (string container of default kind) or,<br>
    5274             :     !>                                      <li>    type `character` of kind \SKALL of arbitrary length type parameter or,
    5275             :     !>                                      <li>    type `integer` of kind \IKALL or,<br>
    5276             :     !>                                      <li>    type `logical` of kind \LKALL or,<br>
    5277             :     !>                                      <li>    type `complex` of kind \CKALL or,<br>
    5278             :     !>                                      <li>    type `real` of kind \RKALL,<br>
    5279             :     !>                                  </ol>
    5280             :     !>                                  or,
    5281             :     !>                                  <ol>
    5282             :     !>                                      <li>    a **scalar** of type `character` of kind \SKALL of arbitrary length type parameter.<br>
    5283             :     !>                                  </ol>
    5284             :     !>                                  On output,
    5285             :     !>                                  <ol>
    5286             :     !>                                      <li>    If the input argument `index` is present, then `array` has `intent(in)` and its contents remain intact upon return.<br>
    5287             :     !>                                      <li>    If the input argument `index` is missing, then `array` has `intent(inout)` and its contents will be in ascending order upon return.<br>
    5288             :     !>                                  </ol>
    5289             :     !>  \param[out]     index       :   The output `contiguous` array of rank `1` of type `integer` of kind \IKALL of the same length as the input argument `array`
    5290             :     !>                                  containing the rank (i.e., sorted indices) of `array` such that `array(index(:))` is sorted in ascending order on return.<br>
    5291             :     !>                                  The size of `index` must match that of `array` (or its length type parameter if `array` is a scalar string).<br>
    5292             :     !>                                  **Read `index(i)` as the index of the element of `array` that contains the `i`th smallest (or ranked) value in the `array`.**<br>
    5293             :     !>                                  This kind of ranking of values is widely known as **ordinal ranking**.<br>
    5294             :     !>                                  In ordinal ranking, all items receive distinct ordinal numbers, including items that compare equal.<br>
    5295             :     !>                                  The assignment of distinct ordinal numbers to items that compare equal can be done at random, or arbitrarily.<br>
    5296             :     !>                                  But it is generally preferable to use a system that is arbitrary but consistent,
    5297             :     !>                                  as this gives stable results if the ranking is done multiple times.<br>
    5298             :     !>                                  In computer data processing, ordinal ranking is also referred to as **row numbering**.<br>
    5299             :     !>                                  (**optional**. If missing, the contents of the input `array` will be sorted in ascending order and returned instead.
    5300             :     !>                                  It can be present only if the input argument `method` is missing.)
    5301             :     !>  \param          isSorted    :   The `external` user-specified function that takes two input **scalar** arguments of the same type and kind as the input `array`.<br>
    5302             :     !>                                  It returns a scalar `logical` of default kind \LK that is `.true.` if the first
    5303             :     !>                                  input scalar argument is sorted with respect to the second input argument according to the user-defined condition
    5304             :     !>                                  within `isSorted`, otherwise, it is `.false.`.<br>
    5305             :     !>                                  If `array` is a scalar string (i.e., an assumed-length scalar `character`),
    5306             :     !>                                  then both input arguments to `isSorted()` are scalar characters of length `1` of kind \SKALL.<br>
    5307             :     !>                                  The following illustrates the generic interface of `isSorted()`,
    5308             :     !>                                  \code{.F90}
    5309             :     !>                                      function isSorted(lhs, rhs) result(sorted)
    5310             :     !>                                          use pm_kind, only: LK
    5311             :     !>                                          TYPE(KIND)  , intent(in)    :: lhs, rhs
    5312             :     !>                                          logical(LK)                 :: sorted
    5313             :     !>                                      end function
    5314             :     !>                                  \endcode
    5315             :     !>                                  where `TYPE(KIND)` is the same as the type and kind of the input argument `array`, which can be one of the following.
    5316             :     !>                                  \code{.F90}
    5317             :     !>                                      use pm_container, only: css_type, css_pdt
    5318             :     !>                                      character(*, SK), intent(in) :: lhs, rhs
    5319             :     !>                                      character(1, SK), intent(in) :: lhs, rhs
    5320             :     !>                                      type(css_type)  , intent(in) :: lhs, rhs
    5321             :     !>                                      type(css_pdt)   , intent(in) :: lhs, rhs
    5322             :     !>                                      integer(IK)     , intent(in) :: lhs, rhs
    5323             :     !>                                      logical(LK)     , intent(in) :: lhs, rhs
    5324             :     !>                                      complex(CK)     , intent(in) :: lhs, rhs
    5325             :     !>                                      real(RK)        , intent(in) :: lhs, rhs
    5326             :     !>                                  \endcode
    5327             :     !>                                  where the specified kind type parameters (`SK`, `IK`, `LK`, `CK`, `RK`) can refer to any of the supported kinds by the processor.<br>
    5328             :     !>                                  This user-defined equivalence check is extremely useful where a user-defined sorting criterion other than simple ascending order
    5329             :     !>                                  is needed, for example, when the case-sensitivity of an input string or array of strings is irrelevant or when sorting of
    5330             :     !>                                  the absolute values matters excluding the signs of the numbers, or when descending order is desired.<br>
    5331             :     !>                                  In such cases, user can define a custom sorting condition within the user-defined external function `isSorted` to achieve the goal.<br>
    5332             :     !>                                  (**optional**, the default sorting condition is ascending order, that is `a < b`.)
    5333             :     !>  \param          method      :   The input scalar constant that can be any of the following:<br>
    5334             :     !>                                  <ol>
    5335             :     !>                                      <li>    The constant [qsorti](@ref pm_arraySort::qsorti) or equivalently, an object of type [qsorti_type](@ref pm_arraySort::qsorti_type),
    5336             :     !>                                              implying that the **iterative** version of the **QuickSort** sorting algorithm should be used.<br>
    5337             :     !>                                              This method sorts the input array by a mixture of Quicksort and Selection sorting methods.<br>
    5338             :     !>                                              When the size the array to be sorted reaches `30` or less, the algorithm switches from Quicksort to Selection sorting.<br>
    5339             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$, and the worst-case order of \f$N^2\f$.<br>
    5340             :     !>                                              The worst case performance occurs for completely sorted input arrays.<br>
    5341             :     !>                                      <li>    The constant [qsortr](@ref pm_arraySort::qsortr) or equivalently, an object of type [qsortr_type](@ref pm_arraySort::qsortr_type),
    5342             :     !>                                              implying that the **recursive** version of the **QuickSort** sorting algorithm should be used.<br>
    5343             :     !>                                      <li>    The constant [qsortrdp](@ref pm_arraySort::qsortrdp) or equivalently, an object of type [qsortrdp_type](@ref pm_arraySort::qsortrdp_type),
    5344             :     !>                                              implying that the **recursive** version of the **Dual-Pivot QuickSort** sorting algorithm should be used.<br>
    5345             :     !>                                              The Dual-Pivot Quicksort algorithm can be slightly faster than the default Quicksort algorithms above.<br>
    5346             :     !>                                              However, [performance benchmarks](@ref pm_arraySort) indicate that the efficiency gain is marginal and insignificant.<br>
    5347             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$, and the worst-case order of \f$N^2\f$.
    5348             :     !>                                              The worst case performance occurs for completely sorted input arrays.<br>
    5349             :     !>                                      <li>    The constant [bubble](@ref pm_arraySort::bubble) or equivalently, an object of type [bubble_type](@ref pm_arraySort::bubble_type),
    5350             :     !>                                              implying that the **Bubble** sorting algorithm should be used.<br>
    5351             :     !>                                              This algorithm is of order \f$N^2\f$.<br>
    5352             :     !>                                      <li>    The constant [heapi](@ref pm_arraySort::heapi) or equivalently, an object of type [heapi_type](@ref pm_arraySort::heapi_type),
    5353             :     !>                                              implying that the **iterative** version of the **Heap** sorting algorithm should be used.<br>
    5354             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    5355             :     !>                                      <li>    The constant [heapr](@ref pm_arraySort::heapr) or equivalently, an object of type [heapr_type](@ref pm_arraySort::heapr_type),
    5356             :     !>                                              implying that the **recursive** version of the **Heap** sorting algorithm should be used.<br>
    5357             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    5358             :     !>                                      <li>    The constant [insertionl](@ref pm_arraySort::insertionl) or equivalently, an object of type [insertionl_type](@ref pm_arraySort::insertionl_type),
    5359             :     !>                                              implying that the **linear-search** version of the **insertion** sorting algorithm should be used.<br>
    5360             :     !>                                              The complexity of this algorithm is typically of order \f$N^2\f$.<br>
    5361             :     !>                                      <li>    The constant [insertionb](@ref pm_arraySort::insertionb) or equivalently, an object of type [insertionb_type](@ref pm_arraySort::insertionb_type),
    5362             :     !>                                              implying that the **binary-search** version of the **insertion** sorting algorithm should be used.<br>
    5363             :     !>                                              The complexity of this algorithm is typically of order \f$N^2\f$.<br>
    5364             :     !>                                      <li>    The constant [merger](@ref pm_arraySort::merger) or equivalently, an object of type [merger_type](@ref pm_arraySort::merger_type),
    5365             :     !>                                              implying that the **recursive** version of the **Merge** sorting algorithm should be used.<br>
    5366             :     !>                                              This algorithm is typically of order \f$ N \log_2 N\f$.<br>
    5367             :     !>                                      <li>    The constant [selection](@ref pm_arraySort::selection) or equivalently, an object of type [selection_type](@ref pm_arraySort::selection_type),
    5368             :     !>                                              implying that the **Selection** sorting algorithm should be used.<br>
    5369             :     !>                                              This algorithm is of order \f$N^2\f$.<br>
    5370             :     !>                                      <li>    The constant [shell](@ref pm_arraySort::shell) or equivalently, an object of type [shell_type](@ref pm_arraySort::shell_type),
    5371             :     !>                                              implying that the **Shell** sorting algorithm should be used.<br>
    5372             :     !>                                              This algorithm is of order \f$N\log(N)\f$.<br>
    5373             :     !>                                  </ol>
    5374             :     !>                                  The presence of this argument is merely for compile-time resolution of the procedures of this generic interface.<br>
    5375             :     !>                                  (**optional**. default = [qsorti](@ref pm_arraySort::qsorti). It can be present only if the input argument `index` is missing.)
    5376             :     !>
    5377             :     !>  \interface{setSorted}
    5378             :     !>  \code{.F90}
    5379             :     !>
    5380             :     !>      use pm_arraySort, only: setSorted
    5381             :     !>
    5382             :     !>      ! Sorting the indices of an array.
    5383             :     !>
    5384             :     !>      call setSorted(array, index(:))
    5385             :     !>      call setSorted(array, index(:), isSorted)
    5386             :     !>
    5387             :     !>      ! Sorting the contents of an array.
    5388             :     !>
    5389             :     !>      call setSorted(array)
    5390             :     !>      call setSorted(array, method)
    5391             :     !>      call setSorted(array, isSorted)
    5392             :     !>      call setSorted(array, isSorted, method)
    5393             :     !>
    5394             :     !>  \endcode
    5395             :     !>
    5396             :     !>  \warning
    5397             :     !>  The sizes of the input `array` and `index` must be equal.<br>
    5398             :     !>  \vericon
    5399             :     !>
    5400             :     !>  \pure
    5401             :     !>  The procedures under this generic interface are always `impure` when the input argument `isSorted()` is present.<br>
    5402             :     !>
    5403             :     !>  \recursive
    5404             :     !>  The procedures are explicitly `recursive` <b>only if</b> the input argument `method`is set to any of the `recursive` sorting algorithms.<br>
    5405             :     !>
    5406             :     !>  \devnote
    5407             :     !>  The use of the Fortran intrinsic `minloc` in the sorting routines appears to lead a slightly better performance than the manual search.<br>
    5408             :     !>
    5409             :     !>  \note
    5410             :     !>  To rank the input array in descending order, simply call the output `index` elements from the end to the beginning or,
    5411             :     !>  rewrite the array with `array = array( index(ubound(array, dim = 1) : lbound(array, dim = 1) : -1) )`.<br>
    5412             :     !>
    5413             :     !>  \note
    5414             :     !>  To sort the input array in descending order, simply call the output array elements from the end to the beginning or,
    5415             :     !>  rewrite the array with `array = array(ubound(array, dim = 1) : lbound(array, dim = 1) : -1)`.<br>
    5416             :     !>  Alternatively, supply an external comparison function `isSorted()` with the appropriate comparison.<br>
    5417             :     !>
    5418             :     !>  \note
    5419             :     !>  A rooter array can be sorted along with a leader array with the help of [setSorted](@ref pm_arraySort::setSorted).<br>
    5420             :     !>
    5421             :     !>  \see
    5422             :     !>  [getLoc](@ref pm_arrayFind::getLoc)<br>
    5423             :     !>  [setLoc](@ref pm_arrayFind::setLoc)<br>
    5424             :     !>  [getBin](@ref pm_arraySearch::getBin)<br>
    5425             :     !>  [getSorted](@ref pm_arraySort::getSorted)<br>
    5426             :     !>  [setSorted](@ref pm_arraySort::setSorted)<br>
    5427             :     !>  [isAscending](@ref pm_arraySort::isAscending)<br>
    5428             :     !>  [isDescending](@ref pm_arraySort::isDescending)<br>
    5429             :     !>  [isAscendingAll](@ref pm_arraySort::isAscendingAll)<br>
    5430             :     !>  [isDescendingAll](@ref pm_arraySort::isDescendingAll)<br>
    5431             :     !>  [isSorted](@ref pm_arraySort::isSorted)<br>
    5432             :     !>  [getRankDense](@ref pm_arrayRank::getRankDense)<br>
    5433             :     !>  [setRankDense](@ref pm_arrayRank::setRankDense)<br>
    5434             :     !>  [getRankOrdinal](@ref pm_arrayRank::getRankOrdinal)<br>
    5435             :     !>  [setRankOrdinal](@ref pm_arrayRank::setRankOrdinal)<br>
    5436             :     !>  [getRankModified](@ref pm_arrayRank::getRankModified)<br>
    5437             :     !>  [setRankModified](@ref pm_arrayRank::setRankModified)<br>
    5438             :     !>  [getRankStandard](@ref pm_arrayRank::getRankStandard)<br>
    5439             :     !>  [setRankStandard](@ref pm_arrayRank::setRankStandard)<br>
    5440             :     !>  [getRankFractional](@ref pm_arrayRank::getRankFractional)<br>
    5441             :     !>  [setRankFractional](@ref pm_arrayRank::setRankFractional)<br>
    5442             :     !>  [getSelected](@ref pm_arraySelect::getSelected)<br>
    5443             :     !>  [setSelected](@ref pm_arraySelect::setSelected)<br>
    5444             :     !>
    5445             :     !>  \example{setSorted}
    5446             :     !>  \include{lineno} example/pm_arraySort/setSorted/main.F90
    5447             :     !>  \compilef{setSorted}
    5448             :     !>  \output{setSorted}
    5449             :     !>  \include{lineno} example/pm_arraySort/setSorted/main.out.F90
    5450             :     !>
    5451             :     !>  \test
    5452             :     !>  [test_pm_arraySort](@ref test_pm_arraySort)
    5453             :     !>
    5454             :     !>  \bug
    5455             :     !>  \status \unresolved
    5456             :     !>  \source \ifort{2021.5}
    5457             :     !>  \desc
    5458             :     !>  See [pm_arraySplit](@ref pm_arraySplit) for the description of a relevant bug in PDT
    5459             :     !>  name aliasing when compiled with \ifort{2021.5} that also applies to this module.
    5460             :     !>  \remedy
    5461             :     !>  See [pm_arraySplit](@ref pm_arraySplit) for the remedy.<br>
    5462             :     !>
    5463             :     !>  \bug
    5464             :     !>  \status \unresolved
    5465             :     !>  \source \gfortran{10.3}
    5466             :     !>  \desc
    5467             :     !>  The \gfortran{10.3} cannot not compile the allocation of PDT string container object `temp` within the implementation of the corresponding procedures.<br>
    5468             :     !>  \code{.sh}
    5469             :     !>
    5470             :     !>       99 |         deallocate(Temp)
    5471             :     !>          |                        ^
    5472             :     !>      internal compiler error: in gimplify_var_or_parm_decl, at gimplify.c:2834
    5473             :     !>      Please submit a full bug report...
    5474             :     !>
    5475             :     !>  \endcode
    5476             :     !>  \remedy
    5477             :     !>  For now, all allocatable `Temp` objects are converted to automatic arrays.
    5478             :     !>
    5479             :     !>  \todo
    5480             :     !>  \pmed
    5481             :     !>  \plow The current bypass for the PDT name aliasing bug should be reverted back to PDT name aliasing once the ifort bug is resolved.
    5482             :     !>
    5483             :     !>  \finmain{setSorted}
    5484             :     !>
    5485             :     !>  \author
    5486             :     !>  \AmirShahmoradi, April 21, 2017, 1:54 AM, Institute for Computational Engineering and Sciences (ICES), The University of Texas at Austin
    5487             : 
    5488             :     ! setSortedIndDefComDef
    5489             : 
    5490             :     interface setSorted
    5491             : 
    5492             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5493             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5494             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5495             : 
    5496             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5497             : 
    5498             : #if SK5_ENABLED
    5499             :     PURE module subroutine setSortedIndDefComDef_D0_SK5(array, index)
    5500             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5501             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D0_SK5
    5502             : #endif
    5503             :         use pm_kind, only: SKC => SK5
    5504             :         character(*,SKC)            , intent(in)                    :: array
    5505             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5506             :     end subroutine
    5507             : #endif
    5508             : 
    5509             : #if SK4_ENABLED
    5510             :     PURE module subroutine setSortedIndDefComDef_D0_SK4(array, index)
    5511             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5512             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D0_SK4
    5513             : #endif
    5514             :         use pm_kind, only: SKC => SK4
    5515             :         character(*,SKC)            , intent(in)                    :: array
    5516             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5517             :     end subroutine
    5518             : #endif
    5519             : 
    5520             : #if SK3_ENABLED
    5521             :     PURE module subroutine setSortedIndDefComDef_D0_SK3(array, index)
    5522             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5523             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D0_SK3
    5524             : #endif
    5525             :         use pm_kind, only: SKC => SK3
    5526             :         character(*,SKC)            , intent(in)                    :: array
    5527             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5528             :     end subroutine
    5529             : #endif
    5530             : 
    5531             : #if SK2_ENABLED
    5532             :     PURE module subroutine setSortedIndDefComDef_D0_SK2(array, index)
    5533             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5534             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D0_SK2
    5535             : #endif
    5536             :         use pm_kind, only: SKC => SK2
    5537             :         character(*,SKC)            , intent(in)                    :: array
    5538             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5539             :     end subroutine
    5540             : #endif
    5541             : 
    5542             : #if SK1_ENABLED
    5543             :     PURE module subroutine setSortedIndDefComDef_D0_SK1(array, index)
    5544             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5545             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D0_SK1
    5546             : #endif
    5547             :         use pm_kind, only: SKC => SK1
    5548             :         character(*,SKC)            , intent(in)                    :: array
    5549             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5550             :     end subroutine
    5551             : #endif
    5552             : 
    5553             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5554             : 
    5555             : #if SK5_ENABLED
    5556             :     PURE module subroutine setSortedIndDefComDef_D1_SK5(array, index)
    5557             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5558             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_SK5
    5559             : #endif
    5560             :         use pm_kind, only: SKC => SK5
    5561             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5562             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5563             :     end subroutine
    5564             : #endif
    5565             : 
    5566             : #if SK4_ENABLED
    5567             :     PURE module subroutine setSortedIndDefComDef_D1_SK4(array, index)
    5568             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5569             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_SK4
    5570             : #endif
    5571             :         use pm_kind, only: SKC => SK4
    5572             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5573             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5574             :     end subroutine
    5575             : #endif
    5576             : 
    5577             : #if SK3_ENABLED
    5578             :     PURE module subroutine setSortedIndDefComDef_D1_SK3(array, index)
    5579             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5580             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_SK3
    5581             : #endif
    5582             :         use pm_kind, only: SKC => SK3
    5583             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5584             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5585             :     end subroutine
    5586             : #endif
    5587             : 
    5588             : #if SK2_ENABLED
    5589             :     PURE module subroutine setSortedIndDefComDef_D1_SK2(array, index)
    5590             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5591             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_SK2
    5592             : #endif
    5593             :         use pm_kind, only: SKC => SK2
    5594             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5595             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5596             :     end subroutine
    5597             : #endif
    5598             : 
    5599             : #if SK1_ENABLED
    5600             :     PURE module subroutine setSortedIndDefComDef_D1_SK1(array, index)
    5601             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5602             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_SK1
    5603             : #endif
    5604             :         use pm_kind, only: SKC => SK1
    5605             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5606             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5607             :     end subroutine
    5608             : #endif
    5609             : 
    5610             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5611             : 
    5612             : #if IK5_ENABLED
    5613             :     PURE module subroutine setSortedIndDefComDef_D1_IK5(array, index)
    5614             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5615             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_IK5
    5616             : #endif
    5617             :         use pm_kind, only: IKC => IK5
    5618             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    5619             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5620             :     end subroutine
    5621             : #endif
    5622             : 
    5623             : #if IK4_ENABLED
    5624             :     PURE module subroutine setSortedIndDefComDef_D1_IK4(array, index)
    5625             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5626             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_IK4
    5627             : #endif
    5628             :         use pm_kind, only: IKC => IK4
    5629             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    5630             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5631             :     end subroutine
    5632             : #endif
    5633             : 
    5634             : #if IK3_ENABLED
    5635             :     PURE module subroutine setSortedIndDefComDef_D1_IK3(array, index)
    5636             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5637             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_IK3
    5638             : #endif
    5639             :         use pm_kind, only: IKC => IK3
    5640             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    5641             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5642             :     end subroutine
    5643             : #endif
    5644             : 
    5645             : #if IK2_ENABLED
    5646             :     PURE module subroutine setSortedIndDefComDef_D1_IK2(array, index)
    5647             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5648             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_IK2
    5649             : #endif
    5650             :         use pm_kind, only: IKC => IK2
    5651             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    5652             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5653             :     end subroutine
    5654             : #endif
    5655             : 
    5656             : #if IK1_ENABLED
    5657             :     PURE module subroutine setSortedIndDefComDef_D1_IK1(array, index)
    5658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5659             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_IK1
    5660             : #endif
    5661             :         use pm_kind, only: IKC => IK1
    5662             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    5663             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5664             :     end subroutine
    5665             : #endif
    5666             : 
    5667             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5668             : 
    5669             : #if LK5_ENABLED
    5670             :     PURE module subroutine setSortedIndDefComDef_D1_LK5(array, index)
    5671             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5672             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_LK5
    5673             : #endif
    5674             :         use pm_kind, only: LKC => LK5
    5675             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    5676             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5677             :     end subroutine
    5678             : #endif
    5679             : 
    5680             : #if LK4_ENABLED
    5681             :     PURE module subroutine setSortedIndDefComDef_D1_LK4(array, index)
    5682             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5683             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_LK4
    5684             : #endif
    5685             :         use pm_kind, only: LKC => LK4
    5686             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    5687             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5688             :     end subroutine
    5689             : #endif
    5690             : 
    5691             : #if LK3_ENABLED
    5692             :     PURE module subroutine setSortedIndDefComDef_D1_LK3(array, index)
    5693             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5694             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_LK3
    5695             : #endif
    5696             :         use pm_kind, only: LKC => LK3
    5697             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    5698             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5699             :     end subroutine
    5700             : #endif
    5701             : 
    5702             : #if LK2_ENABLED
    5703             :     PURE module subroutine setSortedIndDefComDef_D1_LK2(array, index)
    5704             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5705             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_LK2
    5706             : #endif
    5707             :         use pm_kind, only: LKC => LK2
    5708             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    5709             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5710             :     end subroutine
    5711             : #endif
    5712             : 
    5713             : #if LK1_ENABLED
    5714             :     PURE module subroutine setSortedIndDefComDef_D1_LK1(array, index)
    5715             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5716             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_LK1
    5717             : #endif
    5718             :         use pm_kind, only: LKC => LK1
    5719             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    5720             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5721             :     end subroutine
    5722             : #endif
    5723             : 
    5724             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5725             : 
    5726             : #if CK5_ENABLED
    5727             :     PURE module subroutine setSortedIndDefComDef_D1_CK5(array, index)
    5728             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5729             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_CK5
    5730             : #endif
    5731             :         use pm_kind, only: CKC => CK5
    5732             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    5733             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5734             :     end subroutine
    5735             : #endif
    5736             : 
    5737             : #if CK4_ENABLED
    5738             :     PURE module subroutine setSortedIndDefComDef_D1_CK4(array, index)
    5739             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5740             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_CK4
    5741             : #endif
    5742             :         use pm_kind, only: CKC => CK4
    5743             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    5744             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5745             :     end subroutine
    5746             : #endif
    5747             : 
    5748             : #if CK3_ENABLED
    5749             :     PURE module subroutine setSortedIndDefComDef_D1_CK3(array, index)
    5750             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5751             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_CK3
    5752             : #endif
    5753             :         use pm_kind, only: CKC => CK3
    5754             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    5755             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5756             :     end subroutine
    5757             : #endif
    5758             : 
    5759             : #if CK2_ENABLED
    5760             :     PURE module subroutine setSortedIndDefComDef_D1_CK2(array, index)
    5761             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5762             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_CK2
    5763             : #endif
    5764             :         use pm_kind, only: CKC => CK2
    5765             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    5766             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5767             :     end subroutine
    5768             : #endif
    5769             : 
    5770             : #if CK1_ENABLED
    5771             :     PURE module subroutine setSortedIndDefComDef_D1_CK1(array, index)
    5772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5773             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_CK1
    5774             : #endif
    5775             :         use pm_kind, only: CKC => CK1
    5776             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    5777             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5778             :     end subroutine
    5779             : #endif
    5780             : 
    5781             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5782             : 
    5783             : #if RK5_ENABLED
    5784             :     PURE module subroutine setSortedIndDefComDef_D1_RK5(array, index)
    5785             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5786             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_RK5
    5787             : #endif
    5788             :         use pm_kind, only: RKC => RK5
    5789             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    5790             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5791             :     end subroutine
    5792             : #endif
    5793             : 
    5794             : #if RK4_ENABLED
    5795             :     PURE module subroutine setSortedIndDefComDef_D1_RK4(array, index)
    5796             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5797             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_RK4
    5798             : #endif
    5799             :         use pm_kind, only: RKC => RK4
    5800             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    5801             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5802             :     end subroutine
    5803             : #endif
    5804             : 
    5805             : #if RK3_ENABLED
    5806             :     PURE module subroutine setSortedIndDefComDef_D1_RK3(array, index)
    5807             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5808             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_RK3
    5809             : #endif
    5810             :         use pm_kind, only: RKC => RK3
    5811             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    5812             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5813             :     end subroutine
    5814             : #endif
    5815             : 
    5816             : #if RK2_ENABLED
    5817             :     PURE module subroutine setSortedIndDefComDef_D1_RK2(array, index)
    5818             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5819             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_RK2
    5820             : #endif
    5821             :         use pm_kind, only: RKC => RK2
    5822             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    5823             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5824             :     end subroutine
    5825             : #endif
    5826             : 
    5827             : #if RK1_ENABLED
    5828             :     PURE module subroutine setSortedIndDefComDef_D1_RK1(array, index)
    5829             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5830             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_RK1
    5831             : #endif
    5832             :         use pm_kind, only: RKC => RK1
    5833             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    5834             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5835             :     end subroutine
    5836             : #endif
    5837             : 
    5838             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5839             : 
    5840             : #if SK5_ENABLED
    5841             :     PURE module subroutine setSortedIndDefComDef_D1_PSSK5(array, index)
    5842             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5843             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_PSSK5
    5844             : #endif
    5845             :         use pm_kind, only: SKC => SK5
    5846             :         use pm_container, only: css_pdt
    5847             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    5848             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5849             :     end subroutine
    5850             : #endif
    5851             : 
    5852             : #if SK4_ENABLED
    5853             :     PURE module subroutine setSortedIndDefComDef_D1_PSSK4(array, index)
    5854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_PSSK4
    5856             : #endif
    5857             :         use pm_kind, only: SKC => SK4
    5858             :         use pm_container, only: css_pdt
    5859             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    5860             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5861             :     end subroutine
    5862             : #endif
    5863             : 
    5864             : #if SK3_ENABLED
    5865             :     PURE module subroutine setSortedIndDefComDef_D1_PSSK3(array, index)
    5866             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5867             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_PSSK3
    5868             : #endif
    5869             :         use pm_kind, only: SKC => SK3
    5870             :         use pm_container, only: css_pdt
    5871             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    5872             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5873             :     end subroutine
    5874             : #endif
    5875             : 
    5876             : #if SK2_ENABLED
    5877             :     PURE module subroutine setSortedIndDefComDef_D1_PSSK2(array, index)
    5878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5879             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_PSSK2
    5880             : #endif
    5881             :         use pm_kind, only: SKC => SK2
    5882             :         use pm_container, only: css_pdt
    5883             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    5884             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5885             :     end subroutine
    5886             : #endif
    5887             : 
    5888             : #if SK1_ENABLED
    5889             :     PURE module subroutine setSortedIndDefComDef_D1_PSSK1(array, index)
    5890             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5891             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_PSSK1
    5892             : #endif
    5893             :         use pm_kind, only: SKC => SK1
    5894             :         use pm_container, only: css_pdt
    5895             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    5896             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5897             :     end subroutine
    5898             : #endif
    5899             : 
    5900             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5901             : 
    5902             :     PURE module subroutine setSortedIndDefComDef_D1_BSSK(array, index)
    5903             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5904             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndDefComDef_D1_BSSK
    5905             : #endif
    5906             :         use pm_kind, only: SKC => SK
    5907             :         use pm_container, only: css_type
    5908             :         type(css_type)              , intent(in)    , contiguous    :: array(:)
    5909             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5910             :     end subroutine
    5911             : 
    5912             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5913             : 
    5914             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5915             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5916             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5917             : 
    5918             :     end interface
    5919             : 
    5920             :     ! setSortedIndCusComDef
    5921             : 
    5922             :     interface setSorted
    5923             : 
    5924             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5925             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5926             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5927             : 
    5928             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5929             : 
    5930             : #if SK5_ENABLED
    5931             :     module subroutine setSortedIndCusComDef_D0_SK5(array, index, isSorted)
    5932             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5933             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D0_SK5
    5934             : #endif
    5935             :         use pm_kind, only: SKC => SK5
    5936             :         character(*,SKC)            , intent(in)                    :: array
    5937             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5938             :         procedure(logical(LK))                                      :: isSorted
    5939             :     end subroutine
    5940             : #endif
    5941             : 
    5942             : #if SK4_ENABLED
    5943             :     module subroutine setSortedIndCusComDef_D0_SK4(array, index, isSorted)
    5944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5945             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D0_SK4
    5946             : #endif
    5947             :         use pm_kind, only: SKC => SK4
    5948             :         character(*,SKC)            , intent(in)                    :: array
    5949             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5950             :         procedure(logical(LK))                                      :: isSorted
    5951             :     end subroutine
    5952             : #endif
    5953             : 
    5954             : #if SK3_ENABLED
    5955             :     module subroutine setSortedIndCusComDef_D0_SK3(array, index, isSorted)
    5956             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5957             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D0_SK3
    5958             : #endif
    5959             :         use pm_kind, only: SKC => SK3
    5960             :         character(*,SKC)            , intent(in)                    :: array
    5961             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5962             :         procedure(logical(LK))                                      :: isSorted
    5963             :     end subroutine
    5964             : #endif
    5965             : 
    5966             : #if SK2_ENABLED
    5967             :     module subroutine setSortedIndCusComDef_D0_SK2(array, index, isSorted)
    5968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5969             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D0_SK2
    5970             : #endif
    5971             :         use pm_kind, only: SKC => SK2
    5972             :         character(*,SKC)            , intent(in)                    :: array
    5973             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5974             :         procedure(logical(LK))                                      :: isSorted
    5975             :     end subroutine
    5976             : #endif
    5977             : 
    5978             : #if SK1_ENABLED
    5979             :     module subroutine setSortedIndCusComDef_D0_SK1(array, index, isSorted)
    5980             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5981             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D0_SK1
    5982             : #endif
    5983             :         use pm_kind, only: SKC => SK1
    5984             :         character(*,SKC)            , intent(in)                    :: array
    5985             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    5986             :         procedure(logical(LK))                                      :: isSorted
    5987             :     end subroutine
    5988             : #endif
    5989             : 
    5990             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    5991             : 
    5992             : #if SK5_ENABLED
    5993             :     module subroutine setSortedIndCusComDef_D1_SK5(array, index, isSorted)
    5994             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    5995             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_SK5
    5996             : #endif
    5997             :         use pm_kind, only: SKC => SK5
    5998             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    5999             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6000             :         procedure(logical(LK))                                      :: isSorted
    6001             :     end subroutine
    6002             : #endif
    6003             : 
    6004             : #if SK4_ENABLED
    6005             :     module subroutine setSortedIndCusComDef_D1_SK4(array, index, isSorted)
    6006             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6007             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_SK4
    6008             : #endif
    6009             :         use pm_kind, only: SKC => SK4
    6010             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    6011             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6012             :         procedure(logical(LK))                                      :: isSorted
    6013             :     end subroutine
    6014             : #endif
    6015             : 
    6016             : #if SK3_ENABLED
    6017             :     module subroutine setSortedIndCusComDef_D1_SK3(array, index, isSorted)
    6018             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6019             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_SK3
    6020             : #endif
    6021             :         use pm_kind, only: SKC => SK3
    6022             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    6023             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6024             :         procedure(logical(LK))                                      :: isSorted
    6025             :     end subroutine
    6026             : #endif
    6027             : 
    6028             : #if SK2_ENABLED
    6029             :     module subroutine setSortedIndCusComDef_D1_SK2(array, index, isSorted)
    6030             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6031             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_SK2
    6032             : #endif
    6033             :         use pm_kind, only: SKC => SK2
    6034             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    6035             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6036             :         procedure(logical(LK))                                      :: isSorted
    6037             :     end subroutine
    6038             : #endif
    6039             : 
    6040             : #if SK1_ENABLED
    6041             :     module subroutine setSortedIndCusComDef_D1_SK1(array, index, isSorted)
    6042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6043             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_SK1
    6044             : #endif
    6045             :         use pm_kind, only: SKC => SK1
    6046             :         character(*,SKC)            , intent(in)    , contiguous    :: array(:)
    6047             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6048             :         procedure(logical(LK))                                      :: isSorted
    6049             :     end subroutine
    6050             : #endif
    6051             : 
    6052             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6053             : 
    6054             : #if IK5_ENABLED
    6055             :     module subroutine setSortedIndCusComDef_D1_IK5(array, index, isSorted)
    6056             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6057             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_IK5
    6058             : #endif
    6059             :         use pm_kind, only: IKC => IK5
    6060             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    6061             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6062             :         procedure(logical(LK))                                      :: isSorted
    6063             :     end subroutine
    6064             : #endif
    6065             : 
    6066             : #if IK4_ENABLED
    6067             :     module subroutine setSortedIndCusComDef_D1_IK4(array, index, isSorted)
    6068             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6069             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_IK4
    6070             : #endif
    6071             :         use pm_kind, only: IKC => IK4
    6072             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    6073             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6074             :         procedure(logical(LK))                                      :: isSorted
    6075             :     end subroutine
    6076             : #endif
    6077             : 
    6078             : #if IK3_ENABLED
    6079             :     module subroutine setSortedIndCusComDef_D1_IK3(array, index, isSorted)
    6080             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6081             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_IK3
    6082             : #endif
    6083             :         use pm_kind, only: IKC => IK3
    6084             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    6085             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6086             :         procedure(logical(LK))                                      :: isSorted
    6087             :     end subroutine
    6088             : #endif
    6089             : 
    6090             : #if IK2_ENABLED
    6091             :     module subroutine setSortedIndCusComDef_D1_IK2(array, index, isSorted)
    6092             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6093             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_IK2
    6094             : #endif
    6095             :         use pm_kind, only: IKC => IK2
    6096             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    6097             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6098             :         procedure(logical(LK))                                      :: isSorted
    6099             :     end subroutine
    6100             : #endif
    6101             : 
    6102             : #if IK1_ENABLED
    6103             :     module subroutine setSortedIndCusComDef_D1_IK1(array, index, isSorted)
    6104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_IK1
    6106             : #endif
    6107             :         use pm_kind, only: IKC => IK1
    6108             :         integer(IKC)                , intent(in)    , contiguous    :: array(:)
    6109             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6110             :         procedure(logical(LK))                                      :: isSorted
    6111             :     end subroutine
    6112             : #endif
    6113             : 
    6114             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6115             : 
    6116             : #if LK5_ENABLED
    6117             :     module subroutine setSortedIndCusComDef_D1_LK5(array, index, isSorted)
    6118             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6119             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_LK5
    6120             : #endif
    6121             :         use pm_kind, only: LKC => LK5
    6122             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    6123             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6124             :         procedure(logical(LK))                                      :: isSorted
    6125             :     end subroutine
    6126             : #endif
    6127             : 
    6128             : #if LK4_ENABLED
    6129             :     module subroutine setSortedIndCusComDef_D1_LK4(array, index, isSorted)
    6130             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6131             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_LK4
    6132             : #endif
    6133             :         use pm_kind, only: LKC => LK4
    6134             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    6135             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6136             :         procedure(logical(LK))                                      :: isSorted
    6137             :     end subroutine
    6138             : #endif
    6139             : 
    6140             : #if LK3_ENABLED
    6141             :     module subroutine setSortedIndCusComDef_D1_LK3(array, index, isSorted)
    6142             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6143             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_LK3
    6144             : #endif
    6145             :         use pm_kind, only: LKC => LK3
    6146             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    6147             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6148             :         procedure(logical(LK))                                      :: isSorted
    6149             :     end subroutine
    6150             : #endif
    6151             : 
    6152             : #if LK2_ENABLED
    6153             :     module subroutine setSortedIndCusComDef_D1_LK2(array, index, isSorted)
    6154             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6155             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_LK2
    6156             : #endif
    6157             :         use pm_kind, only: LKC => LK2
    6158             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    6159             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6160             :         procedure(logical(LK))                                      :: isSorted
    6161             :     end subroutine
    6162             : #endif
    6163             : 
    6164             : #if LK1_ENABLED
    6165             :     module subroutine setSortedIndCusComDef_D1_LK1(array, index, isSorted)
    6166             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6167             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_LK1
    6168             : #endif
    6169             :         use pm_kind, only: LKC => LK1
    6170             :         logical(LKC)                , intent(in)    , contiguous    :: array(:)
    6171             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6172             :         procedure(logical(LK))                                      :: isSorted
    6173             :     end subroutine
    6174             : #endif
    6175             : 
    6176             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6177             : 
    6178             : #if CK5_ENABLED
    6179             :     module subroutine setSortedIndCusComDef_D1_CK5(array, index, isSorted)
    6180             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6181             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_CK5
    6182             : #endif
    6183             :         use pm_kind, only: CKC => CK5
    6184             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    6185             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6186             :         procedure(logical(LK))                                      :: isSorted
    6187             :     end subroutine
    6188             : #endif
    6189             : 
    6190             : #if CK4_ENABLED
    6191             :     module subroutine setSortedIndCusComDef_D1_CK4(array, index, isSorted)
    6192             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6193             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_CK4
    6194             : #endif
    6195             :         use pm_kind, only: CKC => CK4
    6196             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    6197             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6198             :         procedure(logical(LK))                                      :: isSorted
    6199             :     end subroutine
    6200             : #endif
    6201             : 
    6202             : #if CK3_ENABLED
    6203             :     module subroutine setSortedIndCusComDef_D1_CK3(array, index, isSorted)
    6204             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6205             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_CK3
    6206             : #endif
    6207             :         use pm_kind, only: CKC => CK3
    6208             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    6209             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6210             :         procedure(logical(LK))                                      :: isSorted
    6211             :     end subroutine
    6212             : #endif
    6213             : 
    6214             : #if CK2_ENABLED
    6215             :     module subroutine setSortedIndCusComDef_D1_CK2(array, index, isSorted)
    6216             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6217             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_CK2
    6218             : #endif
    6219             :         use pm_kind, only: CKC => CK2
    6220             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    6221             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6222             :         procedure(logical(LK))                                      :: isSorted
    6223             :     end subroutine
    6224             : #endif
    6225             : 
    6226             : #if CK1_ENABLED
    6227             :     module subroutine setSortedIndCusComDef_D1_CK1(array, index, isSorted)
    6228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6229             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_CK1
    6230             : #endif
    6231             :         use pm_kind, only: CKC => CK1
    6232             :         complex(CKC)                , intent(in)    , contiguous    :: array(:)
    6233             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6234             :         procedure(logical(LK))                                      :: isSorted
    6235             :     end subroutine
    6236             : #endif
    6237             : 
    6238             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6239             : 
    6240             : #if RK5_ENABLED
    6241             :     module subroutine setSortedIndCusComDef_D1_RK5(array, index, isSorted)
    6242             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6243             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_RK5
    6244             : #endif
    6245             :         use pm_kind, only: RKC => RK5
    6246             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    6247             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6248             :         procedure(logical(LK))                                      :: isSorted
    6249             :     end subroutine
    6250             : #endif
    6251             : 
    6252             : #if RK4_ENABLED
    6253             :     module subroutine setSortedIndCusComDef_D1_RK4(array, index, isSorted)
    6254             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6255             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_RK4
    6256             : #endif
    6257             :         use pm_kind, only: RKC => RK4
    6258             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    6259             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6260             :         procedure(logical(LK))                                      :: isSorted
    6261             :     end subroutine
    6262             : #endif
    6263             : 
    6264             : #if RK3_ENABLED
    6265             :     module subroutine setSortedIndCusComDef_D1_RK3(array, index, isSorted)
    6266             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6267             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_RK3
    6268             : #endif
    6269             :         use pm_kind, only: RKC => RK3
    6270             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    6271             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6272             :         procedure(logical(LK))                                      :: isSorted
    6273             :     end subroutine
    6274             : #endif
    6275             : 
    6276             : #if RK2_ENABLED
    6277             :     module subroutine setSortedIndCusComDef_D1_RK2(array, index, isSorted)
    6278             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6279             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_RK2
    6280             : #endif
    6281             :         use pm_kind, only: RKC => RK2
    6282             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    6283             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6284             :         procedure(logical(LK))                                      :: isSorted
    6285             :     end subroutine
    6286             : #endif
    6287             : 
    6288             : #if RK1_ENABLED
    6289             :     module subroutine setSortedIndCusComDef_D1_RK1(array, index, isSorted)
    6290             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6291             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_RK1
    6292             : #endif
    6293             :         use pm_kind, only: RKC => RK1
    6294             :         real(RKC)                   , intent(in)    , contiguous    :: array(:)
    6295             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6296             :         procedure(logical(LK))                                      :: isSorted
    6297             :     end subroutine
    6298             : #endif
    6299             : 
    6300             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6301             : 
    6302             : #if SK5_ENABLED
    6303             :     module subroutine setSortedIndCusComDef_D1_PSSK5(array, index, isSorted)
    6304             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6305             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_PSSK5
    6306             : #endif
    6307             :         use pm_kind, only: SKC => SK5
    6308             :         use pm_container, only: css_pdt
    6309             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    6310             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6311             :         procedure(logical(LK))                                      :: isSorted
    6312             :     end subroutine
    6313             : #endif
    6314             : 
    6315             : #if SK4_ENABLED
    6316             :     module subroutine setSortedIndCusComDef_D1_PSSK4(array, index, isSorted)
    6317             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6318             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_PSSK4
    6319             : #endif
    6320             :         use pm_kind, only: SKC => SK4
    6321             :         use pm_container, only: css_pdt
    6322             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    6323             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6324             :         procedure(logical(LK))                                      :: isSorted
    6325             :     end subroutine
    6326             : #endif
    6327             : 
    6328             : #if SK3_ENABLED
    6329             :     module subroutine setSortedIndCusComDef_D1_PSSK3(array, index, isSorted)
    6330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6331             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_PSSK3
    6332             : #endif
    6333             :         use pm_kind, only: SKC => SK3
    6334             :         use pm_container, only: css_pdt
    6335             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    6336             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6337             :         procedure(logical(LK))                                      :: isSorted
    6338             :     end subroutine
    6339             : #endif
    6340             : 
    6341             : #if SK2_ENABLED
    6342             :     module subroutine setSortedIndCusComDef_D1_PSSK2(array, index, isSorted)
    6343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6344             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_PSSK2
    6345             : #endif
    6346             :         use pm_kind, only: SKC => SK2
    6347             :         use pm_container, only: css_pdt
    6348             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    6349             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6350             :         procedure(logical(LK))                                      :: isSorted
    6351             :     end subroutine
    6352             : #endif
    6353             : 
    6354             : #if SK1_ENABLED
    6355             :     module subroutine setSortedIndCusComDef_D1_PSSK1(array, index, isSorted)
    6356             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6357             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_PSSK1
    6358             : #endif
    6359             :         use pm_kind, only: SKC => SK1
    6360             :         use pm_container, only: css_pdt
    6361             :         type(css_pdt(SKC))          , intent(in)    , contiguous    :: array(:)
    6362             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6363             :         procedure(logical(LK))                                      :: isSorted
    6364             :     end subroutine
    6365             : #endif
    6366             : 
    6367             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6368             : 
    6369             :     module subroutine setSortedIndCusComDef_D1_BSSK(array, index, isSorted)
    6370             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6371             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedIndCusComDef_D1_BSSK
    6372             : #endif
    6373             :         use pm_kind, only: SKC => SK
    6374             :         use pm_container, only: css_type
    6375             :         type(css_type)              , intent(in)    , contiguous    :: array(:)
    6376             :         integer(IK)                 , intent(out)   , contiguous    :: index(:)
    6377             :         procedure(logical(LK))                                      :: isSorted
    6378             :     end subroutine
    6379             : 
    6380             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6381             : 
    6382             :     end interface
    6383             : 
    6384             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6385             : 
    6386             :     ! setSortedArrCusComDef
    6387             : 
    6388             :     interface setSorted
    6389             : 
    6390             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6391             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6393             : 
    6394             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6395             : 
    6396             : #if SK5_ENABLED
    6397             :     module subroutine setSortedArrCusComDef_D0_SK5(array, isSorted)
    6398             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6399             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D0_SK5
    6400             : #endif
    6401             :         use pm_kind, only: SKC => SK5
    6402             :         character(*,SKC)        , intent(inout)                 :: array
    6403             :         procedure(logical(LK))                                  :: isSorted
    6404             :     end subroutine
    6405             : #endif
    6406             : 
    6407             : #if SK4_ENABLED
    6408             :     module subroutine setSortedArrCusComDef_D0_SK4(array, isSorted)
    6409             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6410             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D0_SK4
    6411             : #endif
    6412             :         use pm_kind, only: SKC => SK4
    6413             :         character(*,SKC)        , intent(inout)                 :: array
    6414             :         procedure(logical(LK))                                  :: isSorted
    6415             :     end subroutine
    6416             : #endif
    6417             : 
    6418             : #if SK3_ENABLED
    6419             :     module subroutine setSortedArrCusComDef_D0_SK3(array, isSorted)
    6420             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6421             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D0_SK3
    6422             : #endif
    6423             :         use pm_kind, only: SKC => SK3
    6424             :         character(*,SKC)        , intent(inout)                 :: array
    6425             :         procedure(logical(LK))                                  :: isSorted
    6426             :     end subroutine
    6427             : #endif
    6428             : 
    6429             : #if SK2_ENABLED
    6430             :     module subroutine setSortedArrCusComDef_D0_SK2(array, isSorted)
    6431             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6432             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D0_SK2
    6433             : #endif
    6434             :         use pm_kind, only: SKC => SK2
    6435             :         character(*,SKC)        , intent(inout)                 :: array
    6436             :         procedure(logical(LK))                                  :: isSorted
    6437             :     end subroutine
    6438             : #endif
    6439             : 
    6440             : #if SK1_ENABLED
    6441             :     module subroutine setSortedArrCusComDef_D0_SK1(array, isSorted)
    6442             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6443             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D0_SK1
    6444             : #endif
    6445             :         use pm_kind, only: SKC => SK1
    6446             :         character(*,SKC)        , intent(inout)                 :: array
    6447             :         procedure(logical(LK))                                  :: isSorted
    6448             :     end subroutine
    6449             : #endif
    6450             : 
    6451             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6452             : 
    6453             : #if SK5_ENABLED
    6454             :     module subroutine setSortedArrCusComDef_D1_SK5(array, isSorted)
    6455             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6456             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_SK5
    6457             : #endif
    6458             :         use pm_kind, only: SKC => SK5
    6459             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6460             :         procedure(logical(LK))                                  :: isSorted
    6461             :     end subroutine
    6462             : #endif
    6463             : 
    6464             : #if SK4_ENABLED
    6465             :     module subroutine setSortedArrCusComDef_D1_SK4(array, isSorted)
    6466             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6467             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_SK4
    6468             : #endif
    6469             :         use pm_kind, only: SKC => SK4
    6470             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6471             :         procedure(logical(LK))                                  :: isSorted
    6472             :     end subroutine
    6473             : #endif
    6474             : 
    6475             : #if SK3_ENABLED
    6476             :     module subroutine setSortedArrCusComDef_D1_SK3(array, isSorted)
    6477             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6478             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_SK3
    6479             : #endif
    6480             :         use pm_kind, only: SKC => SK3
    6481             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6482             :         procedure(logical(LK))                                  :: isSorted
    6483             :     end subroutine
    6484             : #endif
    6485             : 
    6486             : #if SK2_ENABLED
    6487             :     module subroutine setSortedArrCusComDef_D1_SK2(array, isSorted)
    6488             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6489             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_SK2
    6490             : #endif
    6491             :         use pm_kind, only: SKC => SK2
    6492             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6493             :         procedure(logical(LK))                                  :: isSorted
    6494             :     end subroutine
    6495             : #endif
    6496             : 
    6497             : #if SK1_ENABLED
    6498             :     module subroutine setSortedArrCusComDef_D1_SK1(array, isSorted)
    6499             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6500             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_SK1
    6501             : #endif
    6502             :         use pm_kind, only: SKC => SK1
    6503             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6504             :         procedure(logical(LK))                                  :: isSorted
    6505             :     end subroutine
    6506             : #endif
    6507             : 
    6508             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6509             : 
    6510             : #if IK5_ENABLED
    6511             :     module subroutine setSortedArrCusComDef_D1_IK5(array, isSorted)
    6512             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6513             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_IK5
    6514             : #endif
    6515             :         use pm_kind, only: IKC => IK5
    6516             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6517             :         procedure(logical(LK))                                  :: isSorted
    6518             :     end subroutine
    6519             : #endif
    6520             : 
    6521             : #if IK4_ENABLED
    6522             :     module subroutine setSortedArrCusComDef_D1_IK4(array, isSorted)
    6523             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6524             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_IK4
    6525             : #endif
    6526             :         use pm_kind, only: IKC => IK4
    6527             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6528             :         procedure(logical(LK))                                  :: isSorted
    6529             :     end subroutine
    6530             : #endif
    6531             : 
    6532             : #if IK3_ENABLED
    6533             :     module subroutine setSortedArrCusComDef_D1_IK3(array, isSorted)
    6534             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6535             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_IK3
    6536             : #endif
    6537             :         use pm_kind, only: IKC => IK3
    6538             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6539             :         procedure(logical(LK))                                  :: isSorted
    6540             :     end subroutine
    6541             : #endif
    6542             : 
    6543             : #if IK2_ENABLED
    6544             :     module subroutine setSortedArrCusComDef_D1_IK2(array, isSorted)
    6545             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6546             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_IK2
    6547             : #endif
    6548             :         use pm_kind, only: IKC => IK2
    6549             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6550             :         procedure(logical(LK))                                  :: isSorted
    6551             :     end subroutine
    6552             : #endif
    6553             : 
    6554             : #if IK1_ENABLED
    6555             :     module subroutine setSortedArrCusComDef_D1_IK1(array, isSorted)
    6556             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6557             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_IK1
    6558             : #endif
    6559             :         use pm_kind, only: IKC => IK1
    6560             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6561             :         procedure(logical(LK))                                  :: isSorted
    6562             :     end subroutine
    6563             : #endif
    6564             : 
    6565             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6566             : 
    6567             : #if LK5_ENABLED
    6568             :     module subroutine setSortedArrCusComDef_D1_LK5(array, isSorted)
    6569             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6570             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_LK5
    6571             : #endif
    6572             :         use pm_kind, only: LKC => LK5
    6573             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    6574             :         procedure(logical(LK))                                  :: isSorted
    6575             :     end subroutine
    6576             : #endif
    6577             : 
    6578             : #if LK4_ENABLED
    6579             :     module subroutine setSortedArrCusComDef_D1_LK4(array, isSorted)
    6580             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6581             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_LK4
    6582             : #endif
    6583             :         use pm_kind, only: LKC => LK4
    6584             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    6585             :         procedure(logical(LK))                                  :: isSorted
    6586             :     end subroutine
    6587             : #endif
    6588             : 
    6589             : #if LK3_ENABLED
    6590             :     module subroutine setSortedArrCusComDef_D1_LK3(array, isSorted)
    6591             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6592             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_LK3
    6593             : #endif
    6594             :         use pm_kind, only: LKC => LK3
    6595             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    6596             :         procedure(logical(LK))                                  :: isSorted
    6597             :     end subroutine
    6598             : #endif
    6599             : 
    6600             : #if LK2_ENABLED
    6601             :     module subroutine setSortedArrCusComDef_D1_LK2(array, isSorted)
    6602             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6603             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_LK2
    6604             : #endif
    6605             :         use pm_kind, only: LKC => LK2
    6606             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    6607             :         procedure(logical(LK))                                  :: isSorted
    6608             :     end subroutine
    6609             : #endif
    6610             : 
    6611             : #if LK1_ENABLED
    6612             :     module subroutine setSortedArrCusComDef_D1_LK1(array, isSorted)
    6613             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6614             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_LK1
    6615             : #endif
    6616             :         use pm_kind, only: LKC => LK1
    6617             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    6618             :         procedure(logical(LK))                                  :: isSorted
    6619             :     end subroutine
    6620             : #endif
    6621             : 
    6622             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6623             : 
    6624             : #if CK5_ENABLED
    6625             :     module subroutine setSortedArrCusComDef_D1_CK5(array, isSorted)
    6626             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6627             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_CK5
    6628             : #endif
    6629             :         use pm_kind, only: CKC => CK5
    6630             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    6631             :         procedure(logical(LK))                                  :: isSorted
    6632             :     end subroutine
    6633             : #endif
    6634             : 
    6635             : #if CK4_ENABLED
    6636             :     module subroutine setSortedArrCusComDef_D1_CK4(array, isSorted)
    6637             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6638             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_CK4
    6639             : #endif
    6640             :         use pm_kind, only: CKC => CK4
    6641             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    6642             :         procedure(logical(LK))                                  :: isSorted
    6643             :     end subroutine
    6644             : #endif
    6645             : 
    6646             : #if CK3_ENABLED
    6647             :     module subroutine setSortedArrCusComDef_D1_CK3(array, isSorted)
    6648             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6649             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_CK3
    6650             : #endif
    6651             :         use pm_kind, only: CKC => CK3
    6652             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    6653             :         procedure(logical(LK))                                  :: isSorted
    6654             :     end subroutine
    6655             : #endif
    6656             : 
    6657             : #if CK2_ENABLED
    6658             :     module subroutine setSortedArrCusComDef_D1_CK2(array, isSorted)
    6659             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6660             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_CK2
    6661             : #endif
    6662             :         use pm_kind, only: CKC => CK2
    6663             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    6664             :         procedure(logical(LK))                                  :: isSorted
    6665             :     end subroutine
    6666             : #endif
    6667             : 
    6668             : #if CK1_ENABLED
    6669             :     module subroutine setSortedArrCusComDef_D1_CK1(array, isSorted)
    6670             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6671             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_CK1
    6672             : #endif
    6673             :         use pm_kind, only: CKC => CK1
    6674             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    6675             :         procedure(logical(LK))                                  :: isSorted
    6676             :     end subroutine
    6677             : #endif
    6678             : 
    6679             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6680             : 
    6681             : #if RK5_ENABLED
    6682             :     module subroutine setSortedArrCusComDef_D1_RK5(array, isSorted)
    6683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6684             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_RK5
    6685             : #endif
    6686             :         use pm_kind, only: RKC => RK5
    6687             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    6688             :         procedure(logical(LK))                                  :: isSorted
    6689             :     end subroutine
    6690             : #endif
    6691             : 
    6692             : #if RK4_ENABLED
    6693             :     module subroutine setSortedArrCusComDef_D1_RK4(array, isSorted)
    6694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6695             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_RK4
    6696             : #endif
    6697             :         use pm_kind, only: RKC => RK4
    6698             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    6699             :         procedure(logical(LK))                                  :: isSorted
    6700             :     end subroutine
    6701             : #endif
    6702             : 
    6703             : #if RK3_ENABLED
    6704             :     module subroutine setSortedArrCusComDef_D1_RK3(array, isSorted)
    6705             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6706             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_RK3
    6707             : #endif
    6708             :         use pm_kind, only: RKC => RK3
    6709             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    6710             :         procedure(logical(LK))                                  :: isSorted
    6711             :     end subroutine
    6712             : #endif
    6713             : 
    6714             : #if RK2_ENABLED
    6715             :     module subroutine setSortedArrCusComDef_D1_RK2(array, isSorted)
    6716             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6717             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_RK2
    6718             : #endif
    6719             :         use pm_kind, only: RKC => RK2
    6720             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    6721             :         procedure(logical(LK))                                  :: isSorted
    6722             :     end subroutine
    6723             : #endif
    6724             : 
    6725             : #if RK1_ENABLED
    6726             :     module subroutine setSortedArrCusComDef_D1_RK1(array, isSorted)
    6727             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6728             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_RK1
    6729             : #endif
    6730             :         use pm_kind, only: RKC => RK1
    6731             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    6732             :         procedure(logical(LK))                                  :: isSorted
    6733             :     end subroutine
    6734             : #endif
    6735             : 
    6736             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6737             : 
    6738             : #if SK5_ENABLED
    6739             :     module subroutine setSortedArrCusComDef_D1_PSSK5(array, isSorted)
    6740             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6741             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_PSSK5
    6742             : #endif
    6743             :         use pm_kind, only: SKC => SK5
    6744             :         use pm_container, only: css_pdt
    6745             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    6746             :         procedure(logical(LK))                                  :: isSorted
    6747             :     end subroutine
    6748             : #endif
    6749             : 
    6750             : #if SK4_ENABLED
    6751             :     module subroutine setSortedArrCusComDef_D1_PSSK4(array, isSorted)
    6752             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6753             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_PSSK4
    6754             : #endif
    6755             :         use pm_kind, only: SKC => SK4
    6756             :         use pm_container, only: css_pdt
    6757             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    6758             :         procedure(logical(LK))                                  :: isSorted
    6759             :     end subroutine
    6760             : #endif
    6761             : 
    6762             : #if SK3_ENABLED
    6763             :     module subroutine setSortedArrCusComDef_D1_PSSK3(array, isSorted)
    6764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6765             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_PSSK3
    6766             : #endif
    6767             :         use pm_kind, only: SKC => SK3
    6768             :         use pm_container, only: css_pdt
    6769             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    6770             :         procedure(logical(LK))                                  :: isSorted
    6771             :     end subroutine
    6772             : #endif
    6773             : 
    6774             : #if SK2_ENABLED
    6775             :     module subroutine setSortedArrCusComDef_D1_PSSK2(array, isSorted)
    6776             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6777             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_PSSK2
    6778             : #endif
    6779             :         use pm_kind, only: SKC => SK2
    6780             :         use pm_container, only: css_pdt
    6781             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    6782             :         procedure(logical(LK))                                  :: isSorted
    6783             :     end subroutine
    6784             : #endif
    6785             : 
    6786             : #if SK1_ENABLED
    6787             :     module subroutine setSortedArrCusComDef_D1_PSSK1(array, isSorted)
    6788             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6789             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_PSSK1
    6790             : #endif
    6791             :         use pm_kind, only: SKC => SK1
    6792             :         use pm_container, only: css_pdt
    6793             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    6794             :         procedure(logical(LK))                                  :: isSorted
    6795             :     end subroutine
    6796             : #endif
    6797             : 
    6798             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6799             : 
    6800             :     module subroutine setSortedArrCusComDef_D1_BSSK(array, isSorted)
    6801             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6802             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComDef_D1_BSSK
    6803             : #endif
    6804             :         use pm_kind, only: SKC => SK
    6805             :         use pm_container, only: css_type
    6806             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    6807             :         procedure(logical(LK))                                  :: isSorted
    6808             :     end subroutine
    6809             : 
    6810             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6811             : 
    6812             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6813             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6814             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6815             : 
    6816             :     end interface
    6817             : 
    6818             :     ! setSortedArrCusComQsorti
    6819             : 
    6820             :     interface setSorted
    6821             : 
    6822             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6823             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6824             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6825             : 
    6826             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6827             : 
    6828             : #if SK5_ENABLED
    6829             :     module subroutine setSortedArrCusComQsorti_D0_SK5(array, isSorted, method)
    6830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6831             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D0_SK5
    6832             : #endif
    6833             :         use pm_kind, only: SKC => SK5
    6834             :         character(*,SKC)        , intent(inout)                 :: array
    6835             :         procedure(logical(LK))                                  :: isSorted
    6836             :         type(qsorti_type)       , intent(in)                    :: method
    6837             :     end subroutine
    6838             : #endif
    6839             : 
    6840             : #if SK4_ENABLED
    6841             :     module subroutine setSortedArrCusComQsorti_D0_SK4(array, isSorted, method)
    6842             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6843             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D0_SK4
    6844             : #endif
    6845             :         use pm_kind, only: SKC => SK4
    6846             :         character(*,SKC)        , intent(inout)                 :: array
    6847             :         procedure(logical(LK))                                  :: isSorted
    6848             :         type(qsorti_type)       , intent(in)                    :: method
    6849             :     end subroutine
    6850             : #endif
    6851             : 
    6852             : #if SK3_ENABLED
    6853             :     module subroutine setSortedArrCusComQsorti_D0_SK3(array, isSorted, method)
    6854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D0_SK3
    6856             : #endif
    6857             :         use pm_kind, only: SKC => SK3
    6858             :         character(*,SKC)        , intent(inout)                 :: array
    6859             :         procedure(logical(LK))                                  :: isSorted
    6860             :         type(qsorti_type)       , intent(in)                    :: method
    6861             :     end subroutine
    6862             : #endif
    6863             : 
    6864             : #if SK2_ENABLED
    6865             :     module subroutine setSortedArrCusComQsorti_D0_SK2(array, isSorted, method)
    6866             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6867             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D0_SK2
    6868             : #endif
    6869             :         use pm_kind, only: SKC => SK2
    6870             :         character(*,SKC)        , intent(inout)                 :: array
    6871             :         procedure(logical(LK))                                  :: isSorted
    6872             :         type(qsorti_type)       , intent(in)                    :: method
    6873             :     end subroutine
    6874             : #endif
    6875             : 
    6876             : #if SK1_ENABLED
    6877             :     module subroutine setSortedArrCusComQsorti_D0_SK1(array, isSorted, method)
    6878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6879             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D0_SK1
    6880             : #endif
    6881             :         use pm_kind, only: SKC => SK1
    6882             :         character(*,SKC)        , intent(inout)                 :: array
    6883             :         procedure(logical(LK))                                  :: isSorted
    6884             :         type(qsorti_type)       , intent(in)                    :: method
    6885             :     end subroutine
    6886             : #endif
    6887             : 
    6888             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6889             : 
    6890             : #if SK5_ENABLED
    6891             :     module subroutine setSortedArrCusComQsorti_D1_SK5(array, isSorted, method)
    6892             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6893             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_SK5
    6894             : #endif
    6895             :         use pm_kind, only: SKC => SK5
    6896             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6897             :         procedure(logical(LK))                                  :: isSorted
    6898             :         type(qsorti_type)       , intent(in)                    :: method
    6899             :     end subroutine
    6900             : #endif
    6901             : 
    6902             : #if SK4_ENABLED
    6903             :     module subroutine setSortedArrCusComQsorti_D1_SK4(array, isSorted, method)
    6904             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6905             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_SK4
    6906             : #endif
    6907             :         use pm_kind, only: SKC => SK4
    6908             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6909             :         procedure(logical(LK))                                  :: isSorted
    6910             :         type(qsorti_type)       , intent(in)                    :: method
    6911             :     end subroutine
    6912             : #endif
    6913             : 
    6914             : #if SK3_ENABLED
    6915             :     module subroutine setSortedArrCusComQsorti_D1_SK3(array, isSorted, method)
    6916             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6917             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_SK3
    6918             : #endif
    6919             :         use pm_kind, only: SKC => SK3
    6920             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6921             :         procedure(logical(LK))                                  :: isSorted
    6922             :         type(qsorti_type)       , intent(in)                    :: method
    6923             :     end subroutine
    6924             : #endif
    6925             : 
    6926             : #if SK2_ENABLED
    6927             :     module subroutine setSortedArrCusComQsorti_D1_SK2(array, isSorted, method)
    6928             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6929             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_SK2
    6930             : #endif
    6931             :         use pm_kind, only: SKC => SK2
    6932             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6933             :         procedure(logical(LK))                                  :: isSorted
    6934             :         type(qsorti_type)       , intent(in)                    :: method
    6935             :     end subroutine
    6936             : #endif
    6937             : 
    6938             : #if SK1_ENABLED
    6939             :     module subroutine setSortedArrCusComQsorti_D1_SK1(array, isSorted, method)
    6940             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6941             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_SK1
    6942             : #endif
    6943             :         use pm_kind, only: SKC => SK1
    6944             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    6945             :         procedure(logical(LK))                                  :: isSorted
    6946             :         type(qsorti_type)       , intent(in)                    :: method
    6947             :     end subroutine
    6948             : #endif
    6949             : 
    6950             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6951             : 
    6952             : #if IK5_ENABLED
    6953             :     module subroutine setSortedArrCusComQsorti_D1_IK5(array, isSorted, method)
    6954             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6955             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_IK5
    6956             : #endif
    6957             :         use pm_kind, only: IKC => IK5
    6958             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6959             :         procedure(logical(LK))                                  :: isSorted
    6960             :         type(qsorti_type)       , intent(in)                    :: method
    6961             :     end subroutine
    6962             : #endif
    6963             : 
    6964             : #if IK4_ENABLED
    6965             :     module subroutine setSortedArrCusComQsorti_D1_IK4(array, isSorted, method)
    6966             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6967             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_IK4
    6968             : #endif
    6969             :         use pm_kind, only: IKC => IK4
    6970             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6971             :         procedure(logical(LK))                                  :: isSorted
    6972             :         type(qsorti_type)       , intent(in)                    :: method
    6973             :     end subroutine
    6974             : #endif
    6975             : 
    6976             : #if IK3_ENABLED
    6977             :     module subroutine setSortedArrCusComQsorti_D1_IK3(array, isSorted, method)
    6978             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6979             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_IK3
    6980             : #endif
    6981             :         use pm_kind, only: IKC => IK3
    6982             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6983             :         procedure(logical(LK))                                  :: isSorted
    6984             :         type(qsorti_type)       , intent(in)                    :: method
    6985             :     end subroutine
    6986             : #endif
    6987             : 
    6988             : #if IK2_ENABLED
    6989             :     module subroutine setSortedArrCusComQsorti_D1_IK2(array, isSorted, method)
    6990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    6991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_IK2
    6992             : #endif
    6993             :         use pm_kind, only: IKC => IK2
    6994             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    6995             :         procedure(logical(LK))                                  :: isSorted
    6996             :         type(qsorti_type)       , intent(in)                    :: method
    6997             :     end subroutine
    6998             : #endif
    6999             : 
    7000             : #if IK1_ENABLED
    7001             :     module subroutine setSortedArrCusComQsorti_D1_IK1(array, isSorted, method)
    7002             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7003             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_IK1
    7004             : #endif
    7005             :         use pm_kind, only: IKC => IK1
    7006             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7007             :         procedure(logical(LK))                                  :: isSorted
    7008             :         type(qsorti_type)       , intent(in)                    :: method
    7009             :     end subroutine
    7010             : #endif
    7011             : 
    7012             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7013             : 
    7014             : #if LK5_ENABLED
    7015             :     module subroutine setSortedArrCusComQsorti_D1_LK5(array, isSorted, method)
    7016             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7017             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_LK5
    7018             : #endif
    7019             :         use pm_kind, only: LKC => LK5
    7020             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7021             :         procedure(logical(LK))                                  :: isSorted
    7022             :         type(qsorti_type)       , intent(in)                    :: method
    7023             :     end subroutine
    7024             : #endif
    7025             : 
    7026             : #if LK4_ENABLED
    7027             :     module subroutine setSortedArrCusComQsorti_D1_LK4(array, isSorted, method)
    7028             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7029             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_LK4
    7030             : #endif
    7031             :         use pm_kind, only: LKC => LK4
    7032             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7033             :         procedure(logical(LK))                                  :: isSorted
    7034             :         type(qsorti_type)       , intent(in)                    :: method
    7035             :     end subroutine
    7036             : #endif
    7037             : 
    7038             : #if LK3_ENABLED
    7039             :     module subroutine setSortedArrCusComQsorti_D1_LK3(array, isSorted, method)
    7040             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7041             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_LK3
    7042             : #endif
    7043             :         use pm_kind, only: LKC => LK3
    7044             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7045             :         procedure(logical(LK))                                  :: isSorted
    7046             :         type(qsorti_type)       , intent(in)                    :: method
    7047             :     end subroutine
    7048             : #endif
    7049             : 
    7050             : #if LK2_ENABLED
    7051             :     module subroutine setSortedArrCusComQsorti_D1_LK2(array, isSorted, method)
    7052             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7053             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_LK2
    7054             : #endif
    7055             :         use pm_kind, only: LKC => LK2
    7056             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7057             :         procedure(logical(LK))                                  :: isSorted
    7058             :         type(qsorti_type)       , intent(in)                    :: method
    7059             :     end subroutine
    7060             : #endif
    7061             : 
    7062             : #if LK1_ENABLED
    7063             :     module subroutine setSortedArrCusComQsorti_D1_LK1(array, isSorted, method)
    7064             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7065             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_LK1
    7066             : #endif
    7067             :         use pm_kind, only: LKC => LK1
    7068             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7069             :         procedure(logical(LK))                                  :: isSorted
    7070             :         type(qsorti_type)       , intent(in)                    :: method
    7071             :     end subroutine
    7072             : #endif
    7073             : 
    7074             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7075             : 
    7076             : #if CK5_ENABLED
    7077             :     module subroutine setSortedArrCusComQsorti_D1_CK5(array, isSorted, method)
    7078             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7079             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_CK5
    7080             : #endif
    7081             :         use pm_kind, only: CKC => CK5
    7082             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7083             :         procedure(logical(LK))                                  :: isSorted
    7084             :         type(qsorti_type)       , intent(in)                    :: method
    7085             :     end subroutine
    7086             : #endif
    7087             : 
    7088             : #if CK4_ENABLED
    7089             :     module subroutine setSortedArrCusComQsorti_D1_CK4(array, isSorted, method)
    7090             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7091             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_CK4
    7092             : #endif
    7093             :         use pm_kind, only: CKC => CK4
    7094             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7095             :         procedure(logical(LK))                                  :: isSorted
    7096             :         type(qsorti_type)       , intent(in)                    :: method
    7097             :     end subroutine
    7098             : #endif
    7099             : 
    7100             : #if CK3_ENABLED
    7101             :     module subroutine setSortedArrCusComQsorti_D1_CK3(array, isSorted, method)
    7102             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7103             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_CK3
    7104             : #endif
    7105             :         use pm_kind, only: CKC => CK3
    7106             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7107             :         procedure(logical(LK))                                  :: isSorted
    7108             :         type(qsorti_type)       , intent(in)                    :: method
    7109             :     end subroutine
    7110             : #endif
    7111             : 
    7112             : #if CK2_ENABLED
    7113             :     module subroutine setSortedArrCusComQsorti_D1_CK2(array, isSorted, method)
    7114             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7115             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_CK2
    7116             : #endif
    7117             :         use pm_kind, only: CKC => CK2
    7118             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7119             :         procedure(logical(LK))                                  :: isSorted
    7120             :         type(qsorti_type)       , intent(in)                    :: method
    7121             :     end subroutine
    7122             : #endif
    7123             : 
    7124             : #if CK1_ENABLED
    7125             :     module subroutine setSortedArrCusComQsorti_D1_CK1(array, isSorted, method)
    7126             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7127             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_CK1
    7128             : #endif
    7129             :         use pm_kind, only: CKC => CK1
    7130             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7131             :         procedure(logical(LK))                                  :: isSorted
    7132             :         type(qsorti_type)       , intent(in)                    :: method
    7133             :     end subroutine
    7134             : #endif
    7135             : 
    7136             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7137             : 
    7138             : #if RK5_ENABLED
    7139             :     module subroutine setSortedArrCusComQsorti_D1_RK5(array, isSorted, method)
    7140             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7141             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_RK5
    7142             : #endif
    7143             :         use pm_kind, only: RKC => RK5
    7144             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7145             :         procedure(logical(LK))                                  :: isSorted
    7146             :         type(qsorti_type)       , intent(in)                    :: method
    7147             :     end subroutine
    7148             : #endif
    7149             : 
    7150             : #if RK4_ENABLED
    7151             :     module subroutine setSortedArrCusComQsorti_D1_RK4(array, isSorted, method)
    7152             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7153             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_RK4
    7154             : #endif
    7155             :         use pm_kind, only: RKC => RK4
    7156             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7157             :         procedure(logical(LK))                                  :: isSorted
    7158             :         type(qsorti_type)       , intent(in)                    :: method
    7159             :     end subroutine
    7160             : #endif
    7161             : 
    7162             : #if RK3_ENABLED
    7163             :     module subroutine setSortedArrCusComQsorti_D1_RK3(array, isSorted, method)
    7164             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7165             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_RK3
    7166             : #endif
    7167             :         use pm_kind, only: RKC => RK3
    7168             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7169             :         procedure(logical(LK))                                  :: isSorted
    7170             :         type(qsorti_type)       , intent(in)                    :: method
    7171             :     end subroutine
    7172             : #endif
    7173             : 
    7174             : #if RK2_ENABLED
    7175             :     module subroutine setSortedArrCusComQsorti_D1_RK2(array, isSorted, method)
    7176             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7177             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_RK2
    7178             : #endif
    7179             :         use pm_kind, only: RKC => RK2
    7180             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7181             :         procedure(logical(LK))                                  :: isSorted
    7182             :         type(qsorti_type)       , intent(in)                    :: method
    7183             :     end subroutine
    7184             : #endif
    7185             : 
    7186             : #if RK1_ENABLED
    7187             :     module subroutine setSortedArrCusComQsorti_D1_RK1(array, isSorted, method)
    7188             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7189             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_RK1
    7190             : #endif
    7191             :         use pm_kind, only: RKC => RK1
    7192             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7193             :         procedure(logical(LK))                                  :: isSorted
    7194             :         type(qsorti_type)       , intent(in)                    :: method
    7195             :     end subroutine
    7196             : #endif
    7197             : 
    7198             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7199             : 
    7200             : #if SK5_ENABLED
    7201             :     module subroutine setSortedArrCusComQsorti_D1_PSSK5(array, isSorted, method)
    7202             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7203             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_PSSK5
    7204             : #endif
    7205             :         use pm_kind, only: SKC => SK5
    7206             :         use pm_container, only: css_pdt
    7207             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7208             :         procedure(logical(LK))                                  :: isSorted
    7209             :         type(qsorti_type)       , intent(in)                    :: method
    7210             :     end subroutine
    7211             : #endif
    7212             : 
    7213             : #if SK4_ENABLED
    7214             :     module subroutine setSortedArrCusComQsorti_D1_PSSK4(array, isSorted, method)
    7215             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7216             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_PSSK4
    7217             : #endif
    7218             :         use pm_kind, only: SKC => SK4
    7219             :         use pm_container, only: css_pdt
    7220             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7221             :         procedure(logical(LK))                                  :: isSorted
    7222             :         type(qsorti_type)       , intent(in)                    :: method
    7223             :     end subroutine
    7224             : #endif
    7225             : 
    7226             : #if SK3_ENABLED
    7227             :     module subroutine setSortedArrCusComQsorti_D1_PSSK3(array, isSorted, method)
    7228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7229             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_PSSK3
    7230             : #endif
    7231             :         use pm_kind, only: SKC => SK3
    7232             :         use pm_container, only: css_pdt
    7233             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7234             :         procedure(logical(LK))                                  :: isSorted
    7235             :         type(qsorti_type)       , intent(in)                    :: method
    7236             :     end subroutine
    7237             : #endif
    7238             : 
    7239             : #if SK2_ENABLED
    7240             :     module subroutine setSortedArrCusComQsorti_D1_PSSK2(array, isSorted, method)
    7241             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7242             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_PSSK2
    7243             : #endif
    7244             :         use pm_kind, only: SKC => SK2
    7245             :         use pm_container, only: css_pdt
    7246             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7247             :         procedure(logical(LK))                                  :: isSorted
    7248             :         type(qsorti_type)       , intent(in)                    :: method
    7249             :     end subroutine
    7250             : #endif
    7251             : 
    7252             : #if SK1_ENABLED
    7253             :     module subroutine setSortedArrCusComQsorti_D1_PSSK1(array, isSorted, method)
    7254             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7255             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_PSSK1
    7256             : #endif
    7257             :         use pm_kind, only: SKC => SK1
    7258             :         use pm_container, only: css_pdt
    7259             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7260             :         procedure(logical(LK))                                  :: isSorted
    7261             :         type(qsorti_type)       , intent(in)                    :: method
    7262             :     end subroutine
    7263             : #endif
    7264             : 
    7265             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7266             : 
    7267             :     module subroutine setSortedArrCusComQsorti_D1_BSSK(array, isSorted, method)
    7268             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7269             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsorti_D1_BSSK
    7270             : #endif
    7271             :         use pm_kind, only: SKC => SK
    7272             :         use pm_container, only: css_type
    7273             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    7274             :         procedure(logical(LK))                                  :: isSorted
    7275             :         type(qsorti_type)       , intent(in)                    :: method
    7276             :     end subroutine
    7277             : 
    7278             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7279             : 
    7280             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7281             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7282             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7283             : 
    7284             :     end interface
    7285             : 
    7286             :     ! setSortedArrCusComQsortr
    7287             : 
    7288             :     interface setSorted
    7289             : 
    7290             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7291             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7292             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7293             : 
    7294             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7295             : 
    7296             : #if SK5_ENABLED
    7297             :     recursive module subroutine setSortedArrCusComQsortr_D0_SK5(array, isSorted, method)
    7298             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7299             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D0_SK5
    7300             : #endif
    7301             :         use pm_kind, only: SKC => SK5
    7302             :         character(*,SKC)        , intent(inout)                 :: array
    7303             :         procedure(logical(LK))                                  :: isSorted
    7304             :         type(qsortr_type)       , intent(in)                    :: method
    7305             :     end subroutine
    7306             : #endif
    7307             : 
    7308             : #if SK4_ENABLED
    7309             :     recursive module subroutine setSortedArrCusComQsortr_D0_SK4(array, isSorted, method)
    7310             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7311             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D0_SK4
    7312             : #endif
    7313             :         use pm_kind, only: SKC => SK4
    7314             :         character(*,SKC)        , intent(inout)                 :: array
    7315             :         procedure(logical(LK))                                  :: isSorted
    7316             :         type(qsortr_type)       , intent(in)                    :: method
    7317             :     end subroutine
    7318             : #endif
    7319             : 
    7320             : #if SK3_ENABLED
    7321             :     recursive module subroutine setSortedArrCusComQsortr_D0_SK3(array, isSorted, method)
    7322             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7323             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D0_SK3
    7324             : #endif
    7325             :         use pm_kind, only: SKC => SK3
    7326             :         character(*,SKC)        , intent(inout)                 :: array
    7327             :         procedure(logical(LK))                                  :: isSorted
    7328             :         type(qsortr_type)       , intent(in)                    :: method
    7329             :     end subroutine
    7330             : #endif
    7331             : 
    7332             : #if SK2_ENABLED
    7333             :     recursive module subroutine setSortedArrCusComQsortr_D0_SK2(array, isSorted, method)
    7334             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7335             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D0_SK2
    7336             : #endif
    7337             :         use pm_kind, only: SKC => SK2
    7338             :         character(*,SKC)        , intent(inout)                 :: array
    7339             :         procedure(logical(LK))                                  :: isSorted
    7340             :         type(qsortr_type)       , intent(in)                    :: method
    7341             :     end subroutine
    7342             : #endif
    7343             : 
    7344             : #if SK1_ENABLED
    7345             :     recursive module subroutine setSortedArrCusComQsortr_D0_SK1(array, isSorted, method)
    7346             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7347             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D0_SK1
    7348             : #endif
    7349             :         use pm_kind, only: SKC => SK1
    7350             :         character(*,SKC)        , intent(inout)                 :: array
    7351             :         procedure(logical(LK))                                  :: isSorted
    7352             :         type(qsortr_type)       , intent(in)                    :: method
    7353             :     end subroutine
    7354             : #endif
    7355             : 
    7356             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7357             : 
    7358             : #if SK5_ENABLED
    7359             :     recursive module subroutine setSortedArrCusComQsortr_D1_SK5(array, isSorted, method)
    7360             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7361             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_SK5
    7362             : #endif
    7363             :         use pm_kind, only: SKC => SK5
    7364             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7365             :         procedure(logical(LK))                                  :: isSorted
    7366             :         type(qsortr_type)       , intent(in)                    :: method
    7367             :     end subroutine
    7368             : #endif
    7369             : 
    7370             : #if SK4_ENABLED
    7371             :     recursive module subroutine setSortedArrCusComQsortr_D1_SK4(array, isSorted, method)
    7372             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7373             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_SK4
    7374             : #endif
    7375             :         use pm_kind, only: SKC => SK4
    7376             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7377             :         procedure(logical(LK))                                  :: isSorted
    7378             :         type(qsortr_type)       , intent(in)                    :: method
    7379             :     end subroutine
    7380             : #endif
    7381             : 
    7382             : #if SK3_ENABLED
    7383             :     recursive module subroutine setSortedArrCusComQsortr_D1_SK3(array, isSorted, method)
    7384             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7385             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_SK3
    7386             : #endif
    7387             :         use pm_kind, only: SKC => SK3
    7388             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7389             :         procedure(logical(LK))                                  :: isSorted
    7390             :         type(qsortr_type)       , intent(in)                    :: method
    7391             :     end subroutine
    7392             : #endif
    7393             : 
    7394             : #if SK2_ENABLED
    7395             :     recursive module subroutine setSortedArrCusComQsortr_D1_SK2(array, isSorted, method)
    7396             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7397             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_SK2
    7398             : #endif
    7399             :         use pm_kind, only: SKC => SK2
    7400             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7401             :         procedure(logical(LK))                                  :: isSorted
    7402             :         type(qsortr_type)       , intent(in)                    :: method
    7403             :     end subroutine
    7404             : #endif
    7405             : 
    7406             : #if SK1_ENABLED
    7407             :     recursive module subroutine setSortedArrCusComQsortr_D1_SK1(array, isSorted, method)
    7408             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7409             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_SK1
    7410             : #endif
    7411             :         use pm_kind, only: SKC => SK1
    7412             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7413             :         procedure(logical(LK))                                  :: isSorted
    7414             :         type(qsortr_type)       , intent(in)                    :: method
    7415             :     end subroutine
    7416             : #endif
    7417             : 
    7418             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7419             : 
    7420             : #if IK5_ENABLED
    7421             :     recursive module subroutine setSortedArrCusComQsortr_D1_IK5(array, isSorted, method)
    7422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7423             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_IK5
    7424             : #endif
    7425             :         use pm_kind, only: IKC => IK5
    7426             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7427             :         procedure(logical(LK))                                  :: isSorted
    7428             :         type(qsortr_type)       , intent(in)                    :: method
    7429             :     end subroutine
    7430             : #endif
    7431             : 
    7432             : #if IK4_ENABLED
    7433             :     recursive module subroutine setSortedArrCusComQsortr_D1_IK4(array, isSorted, method)
    7434             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7435             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_IK4
    7436             : #endif
    7437             :         use pm_kind, only: IKC => IK4
    7438             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7439             :         procedure(logical(LK))                                  :: isSorted
    7440             :         type(qsortr_type)       , intent(in)                    :: method
    7441             :     end subroutine
    7442             : #endif
    7443             : 
    7444             : #if IK3_ENABLED
    7445             :     recursive module subroutine setSortedArrCusComQsortr_D1_IK3(array, isSorted, method)
    7446             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7447             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_IK3
    7448             : #endif
    7449             :         use pm_kind, only: IKC => IK3
    7450             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7451             :         procedure(logical(LK))                                  :: isSorted
    7452             :         type(qsortr_type)       , intent(in)                    :: method
    7453             :     end subroutine
    7454             : #endif
    7455             : 
    7456             : #if IK2_ENABLED
    7457             :     recursive module subroutine setSortedArrCusComQsortr_D1_IK2(array, isSorted, method)
    7458             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7459             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_IK2
    7460             : #endif
    7461             :         use pm_kind, only: IKC => IK2
    7462             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7463             :         procedure(logical(LK))                                  :: isSorted
    7464             :         type(qsortr_type)       , intent(in)                    :: method
    7465             :     end subroutine
    7466             : #endif
    7467             : 
    7468             : #if IK1_ENABLED
    7469             :     recursive module subroutine setSortedArrCusComQsortr_D1_IK1(array, isSorted, method)
    7470             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7471             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_IK1
    7472             : #endif
    7473             :         use pm_kind, only: IKC => IK1
    7474             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7475             :         procedure(logical(LK))                                  :: isSorted
    7476             :         type(qsortr_type)       , intent(in)                    :: method
    7477             :     end subroutine
    7478             : #endif
    7479             : 
    7480             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7481             : 
    7482             : #if LK5_ENABLED
    7483             :     recursive module subroutine setSortedArrCusComQsortr_D1_LK5(array, isSorted, method)
    7484             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7485             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_LK5
    7486             : #endif
    7487             :         use pm_kind, only: LKC => LK5
    7488             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7489             :         procedure(logical(LK))                                  :: isSorted
    7490             :         type(qsortr_type)       , intent(in)                    :: method
    7491             :     end subroutine
    7492             : #endif
    7493             : 
    7494             : #if LK4_ENABLED
    7495             :     recursive module subroutine setSortedArrCusComQsortr_D1_LK4(array, isSorted, method)
    7496             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7497             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_LK4
    7498             : #endif
    7499             :         use pm_kind, only: LKC => LK4
    7500             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7501             :         procedure(logical(LK))                                  :: isSorted
    7502             :         type(qsortr_type)       , intent(in)                    :: method
    7503             :     end subroutine
    7504             : #endif
    7505             : 
    7506             : #if LK3_ENABLED
    7507             :     recursive module subroutine setSortedArrCusComQsortr_D1_LK3(array, isSorted, method)
    7508             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7509             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_LK3
    7510             : #endif
    7511             :         use pm_kind, only: LKC => LK3
    7512             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7513             :         procedure(logical(LK))                                  :: isSorted
    7514             :         type(qsortr_type)       , intent(in)                    :: method
    7515             :     end subroutine
    7516             : #endif
    7517             : 
    7518             : #if LK2_ENABLED
    7519             :     recursive module subroutine setSortedArrCusComQsortr_D1_LK2(array, isSorted, method)
    7520             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7521             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_LK2
    7522             : #endif
    7523             :         use pm_kind, only: LKC => LK2
    7524             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7525             :         procedure(logical(LK))                                  :: isSorted
    7526             :         type(qsortr_type)       , intent(in)                    :: method
    7527             :     end subroutine
    7528             : #endif
    7529             : 
    7530             : #if LK1_ENABLED
    7531             :     recursive module subroutine setSortedArrCusComQsortr_D1_LK1(array, isSorted, method)
    7532             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7533             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_LK1
    7534             : #endif
    7535             :         use pm_kind, only: LKC => LK1
    7536             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7537             :         procedure(logical(LK))                                  :: isSorted
    7538             :         type(qsortr_type)       , intent(in)                    :: method
    7539             :     end subroutine
    7540             : #endif
    7541             : 
    7542             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7543             : 
    7544             : #if CK5_ENABLED
    7545             :     recursive module subroutine setSortedArrCusComQsortr_D1_CK5(array, isSorted, method)
    7546             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7547             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_CK5
    7548             : #endif
    7549             :         use pm_kind, only: CKC => CK5
    7550             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7551             :         procedure(logical(LK))                                  :: isSorted
    7552             :         type(qsortr_type)       , intent(in)                    :: method
    7553             :     end subroutine
    7554             : #endif
    7555             : 
    7556             : #if CK4_ENABLED
    7557             :     recursive module subroutine setSortedArrCusComQsortr_D1_CK4(array, isSorted, method)
    7558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_CK4
    7560             : #endif
    7561             :         use pm_kind, only: CKC => CK4
    7562             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7563             :         procedure(logical(LK))                                  :: isSorted
    7564             :         type(qsortr_type)       , intent(in)                    :: method
    7565             :     end subroutine
    7566             : #endif
    7567             : 
    7568             : #if CK3_ENABLED
    7569             :     recursive module subroutine setSortedArrCusComQsortr_D1_CK3(array, isSorted, method)
    7570             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7571             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_CK3
    7572             : #endif
    7573             :         use pm_kind, only: CKC => CK3
    7574             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7575             :         procedure(logical(LK))                                  :: isSorted
    7576             :         type(qsortr_type)       , intent(in)                    :: method
    7577             :     end subroutine
    7578             : #endif
    7579             : 
    7580             : #if CK2_ENABLED
    7581             :     recursive module subroutine setSortedArrCusComQsortr_D1_CK2(array, isSorted, method)
    7582             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7583             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_CK2
    7584             : #endif
    7585             :         use pm_kind, only: CKC => CK2
    7586             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7587             :         procedure(logical(LK))                                  :: isSorted
    7588             :         type(qsortr_type)       , intent(in)                    :: method
    7589             :     end subroutine
    7590             : #endif
    7591             : 
    7592             : #if CK1_ENABLED
    7593             :     recursive module subroutine setSortedArrCusComQsortr_D1_CK1(array, isSorted, method)
    7594             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7595             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_CK1
    7596             : #endif
    7597             :         use pm_kind, only: CKC => CK1
    7598             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    7599             :         procedure(logical(LK))                                  :: isSorted
    7600             :         type(qsortr_type)       , intent(in)                    :: method
    7601             :     end subroutine
    7602             : #endif
    7603             : 
    7604             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7605             : 
    7606             : #if RK5_ENABLED
    7607             :     recursive module subroutine setSortedArrCusComQsortr_D1_RK5(array, isSorted, method)
    7608             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7609             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_RK5
    7610             : #endif
    7611             :         use pm_kind, only: RKC => RK5
    7612             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7613             :         procedure(logical(LK))                                  :: isSorted
    7614             :         type(qsortr_type)       , intent(in)                    :: method
    7615             :     end subroutine
    7616             : #endif
    7617             : 
    7618             : #if RK4_ENABLED
    7619             :     recursive module subroutine setSortedArrCusComQsortr_D1_RK4(array, isSorted, method)
    7620             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7621             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_RK4
    7622             : #endif
    7623             :         use pm_kind, only: RKC => RK4
    7624             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7625             :         procedure(logical(LK))                                  :: isSorted
    7626             :         type(qsortr_type)       , intent(in)                    :: method
    7627             :     end subroutine
    7628             : #endif
    7629             : 
    7630             : #if RK3_ENABLED
    7631             :     recursive module subroutine setSortedArrCusComQsortr_D1_RK3(array, isSorted, method)
    7632             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7633             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_RK3
    7634             : #endif
    7635             :         use pm_kind, only: RKC => RK3
    7636             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7637             :         procedure(logical(LK))                                  :: isSorted
    7638             :         type(qsortr_type)       , intent(in)                    :: method
    7639             :     end subroutine
    7640             : #endif
    7641             : 
    7642             : #if RK2_ENABLED
    7643             :     recursive module subroutine setSortedArrCusComQsortr_D1_RK2(array, isSorted, method)
    7644             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7645             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_RK2
    7646             : #endif
    7647             :         use pm_kind, only: RKC => RK2
    7648             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7649             :         procedure(logical(LK))                                  :: isSorted
    7650             :         type(qsortr_type)       , intent(in)                    :: method
    7651             :     end subroutine
    7652             : #endif
    7653             : 
    7654             : #if RK1_ENABLED
    7655             :     recursive module subroutine setSortedArrCusComQsortr_D1_RK1(array, isSorted, method)
    7656             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7657             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_RK1
    7658             : #endif
    7659             :         use pm_kind, only: RKC => RK1
    7660             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    7661             :         procedure(logical(LK))                                  :: isSorted
    7662             :         type(qsortr_type)       , intent(in)                    :: method
    7663             :     end subroutine
    7664             : #endif
    7665             : 
    7666             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7667             : 
    7668             : #if SK5_ENABLED
    7669             :     recursive module subroutine setSortedArrCusComQsortr_D1_PSSK5(array, isSorted, method)
    7670             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7671             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_PSSK5
    7672             : #endif
    7673             :         use pm_kind, only: SKC => SK5
    7674             :         use pm_container, only: css_pdt
    7675             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7676             :         procedure(logical(LK))                                  :: isSorted
    7677             :         type(qsortr_type)       , intent(in)                    :: method
    7678             :     end subroutine
    7679             : #endif
    7680             : 
    7681             : #if SK4_ENABLED
    7682             :     recursive module subroutine setSortedArrCusComQsortr_D1_PSSK4(array, isSorted, method)
    7683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7684             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_PSSK4
    7685             : #endif
    7686             :         use pm_kind, only: SKC => SK4
    7687             :         use pm_container, only: css_pdt
    7688             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7689             :         procedure(logical(LK))                                  :: isSorted
    7690             :         type(qsortr_type)       , intent(in)                    :: method
    7691             :     end subroutine
    7692             : #endif
    7693             : 
    7694             : #if SK3_ENABLED
    7695             :     recursive module subroutine setSortedArrCusComQsortr_D1_PSSK3(array, isSorted, method)
    7696             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7697             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_PSSK3
    7698             : #endif
    7699             :         use pm_kind, only: SKC => SK3
    7700             :         use pm_container, only: css_pdt
    7701             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7702             :         procedure(logical(LK))                                  :: isSorted
    7703             :         type(qsortr_type)       , intent(in)                    :: method
    7704             :     end subroutine
    7705             : #endif
    7706             : 
    7707             : #if SK2_ENABLED
    7708             :     recursive module subroutine setSortedArrCusComQsortr_D1_PSSK2(array, isSorted, method)
    7709             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7710             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_PSSK2
    7711             : #endif
    7712             :         use pm_kind, only: SKC => SK2
    7713             :         use pm_container, only: css_pdt
    7714             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7715             :         procedure(logical(LK))                                  :: isSorted
    7716             :         type(qsortr_type)       , intent(in)                    :: method
    7717             :     end subroutine
    7718             : #endif
    7719             : 
    7720             : #if SK1_ENABLED
    7721             :     recursive module subroutine setSortedArrCusComQsortr_D1_PSSK1(array, isSorted, method)
    7722             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7723             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_PSSK1
    7724             : #endif
    7725             :         use pm_kind, only: SKC => SK1
    7726             :         use pm_container, only: css_pdt
    7727             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    7728             :         procedure(logical(LK))                                  :: isSorted
    7729             :         type(qsortr_type)       , intent(in)                    :: method
    7730             :     end subroutine
    7731             : #endif
    7732             : 
    7733             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7734             : 
    7735             :     recursive module subroutine setSortedArrCusComQsortr_D1_BSSK(array, isSorted, method)
    7736             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7737             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortr_D1_BSSK
    7738             : #endif
    7739             :         use pm_kind, only: SKC => SK
    7740             :         use pm_container, only: css_type
    7741             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    7742             :         procedure(logical(LK))                                  :: isSorted
    7743             :         type(qsortr_type)       , intent(in)                    :: method
    7744             :     end subroutine
    7745             : 
    7746             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7747             : 
    7748             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7749             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7750             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7751             : 
    7752             :     end interface
    7753             : 
    7754             :     ! setSortedArrCusComQsortrdp
    7755             : 
    7756             :     interface setSorted
    7757             : 
    7758             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7759             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7760             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7761             : 
    7762             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7763             : 
    7764             : #if SK5_ENABLED
    7765             :     recursive module subroutine setSortedArrCusComQsortrdp_D0_SK5(array, isSorted, method)
    7766             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7767             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D0_SK5
    7768             : #endif
    7769             :         use pm_kind, only: SKC => SK5
    7770             :         character(*,SKC)        , intent(inout)                 :: array
    7771             :         procedure(logical(LK))                                  :: isSorted
    7772             :         type(qsortrdp_type)     , intent(in)                    :: method
    7773             :     end subroutine
    7774             : #endif
    7775             : 
    7776             : #if SK4_ENABLED
    7777             :     recursive module subroutine setSortedArrCusComQsortrdp_D0_SK4(array, isSorted, method)
    7778             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7779             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D0_SK4
    7780             : #endif
    7781             :         use pm_kind, only: SKC => SK4
    7782             :         character(*,SKC)        , intent(inout)                 :: array
    7783             :         procedure(logical(LK))                                  :: isSorted
    7784             :         type(qsortrdp_type)     , intent(in)                    :: method
    7785             :     end subroutine
    7786             : #endif
    7787             : 
    7788             : #if SK3_ENABLED
    7789             :     recursive module subroutine setSortedArrCusComQsortrdp_D0_SK3(array, isSorted, method)
    7790             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7791             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D0_SK3
    7792             : #endif
    7793             :         use pm_kind, only: SKC => SK3
    7794             :         character(*,SKC)        , intent(inout)                 :: array
    7795             :         procedure(logical(LK))                                  :: isSorted
    7796             :         type(qsortrdp_type)     , intent(in)                    :: method
    7797             :     end subroutine
    7798             : #endif
    7799             : 
    7800             : #if SK2_ENABLED
    7801             :     recursive module subroutine setSortedArrCusComQsortrdp_D0_SK2(array, isSorted, method)
    7802             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7803             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D0_SK2
    7804             : #endif
    7805             :         use pm_kind, only: SKC => SK2
    7806             :         character(*,SKC)        , intent(inout)                 :: array
    7807             :         procedure(logical(LK))                                  :: isSorted
    7808             :         type(qsortrdp_type)     , intent(in)                    :: method
    7809             :     end subroutine
    7810             : #endif
    7811             : 
    7812             : #if SK1_ENABLED
    7813             :     recursive module subroutine setSortedArrCusComQsortrdp_D0_SK1(array, isSorted, method)
    7814             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7815             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D0_SK1
    7816             : #endif
    7817             :         use pm_kind, only: SKC => SK1
    7818             :         character(*,SKC)        , intent(inout)                 :: array
    7819             :         procedure(logical(LK))                                  :: isSorted
    7820             :         type(qsortrdp_type)     , intent(in)                    :: method
    7821             :     end subroutine
    7822             : #endif
    7823             : 
    7824             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7825             : 
    7826             : #if SK5_ENABLED
    7827             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_SK5(array, isSorted, method)
    7828             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7829             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_SK5
    7830             : #endif
    7831             :         use pm_kind, only: SKC => SK5
    7832             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7833             :         procedure(logical(LK))                                  :: isSorted
    7834             :         type(qsortrdp_type)     , intent(in)                    :: method
    7835             :     end subroutine
    7836             : #endif
    7837             : 
    7838             : #if SK4_ENABLED
    7839             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_SK4(array, isSorted, method)
    7840             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7841             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_SK4
    7842             : #endif
    7843             :         use pm_kind, only: SKC => SK4
    7844             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7845             :         procedure(logical(LK))                                  :: isSorted
    7846             :         type(qsortrdp_type)     , intent(in)                    :: method
    7847             :     end subroutine
    7848             : #endif
    7849             : 
    7850             : #if SK3_ENABLED
    7851             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_SK3(array, isSorted, method)
    7852             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7853             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_SK3
    7854             : #endif
    7855             :         use pm_kind, only: SKC => SK3
    7856             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7857             :         procedure(logical(LK))                                  :: isSorted
    7858             :         type(qsortrdp_type)     , intent(in)                    :: method
    7859             :     end subroutine
    7860             : #endif
    7861             : 
    7862             : #if SK2_ENABLED
    7863             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_SK2(array, isSorted, method)
    7864             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7865             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_SK2
    7866             : #endif
    7867             :         use pm_kind, only: SKC => SK2
    7868             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7869             :         procedure(logical(LK))                                  :: isSorted
    7870             :         type(qsortrdp_type)     , intent(in)                    :: method
    7871             :     end subroutine
    7872             : #endif
    7873             : 
    7874             : #if SK1_ENABLED
    7875             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_SK1(array, isSorted, method)
    7876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7877             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_SK1
    7878             : #endif
    7879             :         use pm_kind, only: SKC => SK1
    7880             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    7881             :         procedure(logical(LK))                                  :: isSorted
    7882             :         type(qsortrdp_type)     , intent(in)                    :: method
    7883             :     end subroutine
    7884             : #endif
    7885             : 
    7886             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7887             : 
    7888             : #if IK5_ENABLED
    7889             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_IK5(array, isSorted, method)
    7890             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7891             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_IK5
    7892             : #endif
    7893             :         use pm_kind, only: IKC => IK5
    7894             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7895             :         procedure(logical(LK))                                  :: isSorted
    7896             :         type(qsortrdp_type)     , intent(in)                    :: method
    7897             :     end subroutine
    7898             : #endif
    7899             : 
    7900             : #if IK4_ENABLED
    7901             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_IK4(array, isSorted, method)
    7902             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7903             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_IK4
    7904             : #endif
    7905             :         use pm_kind, only: IKC => IK4
    7906             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7907             :         procedure(logical(LK))                                  :: isSorted
    7908             :         type(qsortrdp_type)     , intent(in)                    :: method
    7909             :     end subroutine
    7910             : #endif
    7911             : 
    7912             : #if IK3_ENABLED
    7913             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_IK3(array, isSorted, method)
    7914             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7915             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_IK3
    7916             : #endif
    7917             :         use pm_kind, only: IKC => IK3
    7918             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7919             :         procedure(logical(LK))                                  :: isSorted
    7920             :         type(qsortrdp_type)     , intent(in)                    :: method
    7921             :     end subroutine
    7922             : #endif
    7923             : 
    7924             : #if IK2_ENABLED
    7925             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_IK2(array, isSorted, method)
    7926             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7927             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_IK2
    7928             : #endif
    7929             :         use pm_kind, only: IKC => IK2
    7930             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7931             :         procedure(logical(LK))                                  :: isSorted
    7932             :         type(qsortrdp_type)     , intent(in)                    :: method
    7933             :     end subroutine
    7934             : #endif
    7935             : 
    7936             : #if IK1_ENABLED
    7937             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_IK1(array, isSorted, method)
    7938             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7939             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_IK1
    7940             : #endif
    7941             :         use pm_kind, only: IKC => IK1
    7942             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    7943             :         procedure(logical(LK))                                  :: isSorted
    7944             :         type(qsortrdp_type)     , intent(in)                    :: method
    7945             :     end subroutine
    7946             : #endif
    7947             : 
    7948             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    7949             : 
    7950             : #if LK5_ENABLED
    7951             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_LK5(array, isSorted, method)
    7952             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7953             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_LK5
    7954             : #endif
    7955             :         use pm_kind, only: LKC => LK5
    7956             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7957             :         procedure(logical(LK))                                  :: isSorted
    7958             :         type(qsortrdp_type)     , intent(in)                    :: method
    7959             :     end subroutine
    7960             : #endif
    7961             : 
    7962             : #if LK4_ENABLED
    7963             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_LK4(array, isSorted, method)
    7964             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7965             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_LK4
    7966             : #endif
    7967             :         use pm_kind, only: LKC => LK4
    7968             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7969             :         procedure(logical(LK))                                  :: isSorted
    7970             :         type(qsortrdp_type)     , intent(in)                    :: method
    7971             :     end subroutine
    7972             : #endif
    7973             : 
    7974             : #if LK3_ENABLED
    7975             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_LK3(array, isSorted, method)
    7976             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7977             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_LK3
    7978             : #endif
    7979             :         use pm_kind, only: LKC => LK3
    7980             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7981             :         procedure(logical(LK))                                  :: isSorted
    7982             :         type(qsortrdp_type)     , intent(in)                    :: method
    7983             :     end subroutine
    7984             : #endif
    7985             : 
    7986             : #if LK2_ENABLED
    7987             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_LK2(array, isSorted, method)
    7988             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    7989             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_LK2
    7990             : #endif
    7991             :         use pm_kind, only: LKC => LK2
    7992             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    7993             :         procedure(logical(LK))                                  :: isSorted
    7994             :         type(qsortrdp_type)     , intent(in)                    :: method
    7995             :     end subroutine
    7996             : #endif
    7997             : 
    7998             : #if LK1_ENABLED
    7999             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_LK1(array, isSorted, method)
    8000             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8001             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_LK1
    8002             : #endif
    8003             :         use pm_kind, only: LKC => LK1
    8004             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8005             :         procedure(logical(LK))                                  :: isSorted
    8006             :         type(qsortrdp_type)     , intent(in)                    :: method
    8007             :     end subroutine
    8008             : #endif
    8009             : 
    8010             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8011             : 
    8012             : #if CK5_ENABLED
    8013             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_CK5(array, isSorted, method)
    8014             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8015             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_CK5
    8016             : #endif
    8017             :         use pm_kind, only: CKC => CK5
    8018             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8019             :         procedure(logical(LK))                                  :: isSorted
    8020             :         type(qsortrdp_type)     , intent(in)                    :: method
    8021             :     end subroutine
    8022             : #endif
    8023             : 
    8024             : #if CK4_ENABLED
    8025             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_CK4(array, isSorted, method)
    8026             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8027             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_CK4
    8028             : #endif
    8029             :         use pm_kind, only: CKC => CK4
    8030             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8031             :         procedure(logical(LK))                                  :: isSorted
    8032             :         type(qsortrdp_type)     , intent(in)                    :: method
    8033             :     end subroutine
    8034             : #endif
    8035             : 
    8036             : #if CK3_ENABLED
    8037             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_CK3(array, isSorted, method)
    8038             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8039             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_CK3
    8040             : #endif
    8041             :         use pm_kind, only: CKC => CK3
    8042             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8043             :         procedure(logical(LK))                                  :: isSorted
    8044             :         type(qsortrdp_type)     , intent(in)                    :: method
    8045             :     end subroutine
    8046             : #endif
    8047             : 
    8048             : #if CK2_ENABLED
    8049             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_CK2(array, isSorted, method)
    8050             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8051             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_CK2
    8052             : #endif
    8053             :         use pm_kind, only: CKC => CK2
    8054             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8055             :         procedure(logical(LK))                                  :: isSorted
    8056             :         type(qsortrdp_type)     , intent(in)                    :: method
    8057             :     end subroutine
    8058             : #endif
    8059             : 
    8060             : #if CK1_ENABLED
    8061             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_CK1(array, isSorted, method)
    8062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8063             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_CK1
    8064             : #endif
    8065             :         use pm_kind, only: CKC => CK1
    8066             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8067             :         procedure(logical(LK))                                  :: isSorted
    8068             :         type(qsortrdp_type)     , intent(in)                    :: method
    8069             :     end subroutine
    8070             : #endif
    8071             : 
    8072             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8073             : 
    8074             : #if RK5_ENABLED
    8075             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_RK5(array, isSorted, method)
    8076             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8077             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_RK5
    8078             : #endif
    8079             :         use pm_kind, only: RKC => RK5
    8080             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8081             :         procedure(logical(LK))                                  :: isSorted
    8082             :         type(qsortrdp_type)     , intent(in)                    :: method
    8083             :     end subroutine
    8084             : #endif
    8085             : 
    8086             : #if RK4_ENABLED
    8087             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_RK4(array, isSorted, method)
    8088             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8089             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_RK4
    8090             : #endif
    8091             :         use pm_kind, only: RKC => RK4
    8092             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8093             :         procedure(logical(LK))                                  :: isSorted
    8094             :         type(qsortrdp_type)     , intent(in)                    :: method
    8095             :     end subroutine
    8096             : #endif
    8097             : 
    8098             : #if RK3_ENABLED
    8099             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_RK3(array, isSorted, method)
    8100             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8101             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_RK3
    8102             : #endif
    8103             :         use pm_kind, only: RKC => RK3
    8104             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8105             :         procedure(logical(LK))                                  :: isSorted
    8106             :         type(qsortrdp_type)     , intent(in)                    :: method
    8107             :     end subroutine
    8108             : #endif
    8109             : 
    8110             : #if RK2_ENABLED
    8111             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_RK2(array, isSorted, method)
    8112             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8113             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_RK2
    8114             : #endif
    8115             :         use pm_kind, only: RKC => RK2
    8116             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8117             :         procedure(logical(LK))                                  :: isSorted
    8118             :         type(qsortrdp_type)     , intent(in)                    :: method
    8119             :     end subroutine
    8120             : #endif
    8121             : 
    8122             : #if RK1_ENABLED
    8123             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_RK1(array, isSorted, method)
    8124             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8125             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_RK1
    8126             : #endif
    8127             :         use pm_kind, only: RKC => RK1
    8128             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8129             :         procedure(logical(LK))                                  :: isSorted
    8130             :         type(qsortrdp_type)     , intent(in)                    :: method
    8131             :     end subroutine
    8132             : #endif
    8133             : 
    8134             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8135             : 
    8136             : #if SK5_ENABLED
    8137             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_PSSK5(array, isSorted, method)
    8138             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8139             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_PSSK5
    8140             : #endif
    8141             :         use pm_kind, only: SKC => SK5
    8142             :         use pm_container, only: css_pdt
    8143             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8144             :         procedure(logical(LK))                                  :: isSorted
    8145             :         type(qsortrdp_type)     , intent(in)                    :: method
    8146             :     end subroutine
    8147             : #endif
    8148             : 
    8149             : #if SK4_ENABLED
    8150             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_PSSK4(array, isSorted, method)
    8151             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8152             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_PSSK4
    8153             : #endif
    8154             :         use pm_kind, only: SKC => SK4
    8155             :         use pm_container, only: css_pdt
    8156             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8157             :         procedure(logical(LK))                                  :: isSorted
    8158             :         type(qsortrdp_type)     , intent(in)                    :: method
    8159             :     end subroutine
    8160             : #endif
    8161             : 
    8162             : #if SK3_ENABLED
    8163             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_PSSK3(array, isSorted, method)
    8164             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8165             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_PSSK3
    8166             : #endif
    8167             :         use pm_kind, only: SKC => SK3
    8168             :         use pm_container, only: css_pdt
    8169             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8170             :         procedure(logical(LK))                                  :: isSorted
    8171             :         type(qsortrdp_type)     , intent(in)                    :: method
    8172             :     end subroutine
    8173             : #endif
    8174             : 
    8175             : #if SK2_ENABLED
    8176             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_PSSK2(array, isSorted, method)
    8177             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8178             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_PSSK2
    8179             : #endif
    8180             :         use pm_kind, only: SKC => SK2
    8181             :         use pm_container, only: css_pdt
    8182             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8183             :         procedure(logical(LK))                                  :: isSorted
    8184             :         type(qsortrdp_type)     , intent(in)                    :: method
    8185             :     end subroutine
    8186             : #endif
    8187             : 
    8188             : #if SK1_ENABLED
    8189             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_PSSK1(array, isSorted, method)
    8190             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8191             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_PSSK1
    8192             : #endif
    8193             :         use pm_kind, only: SKC => SK1
    8194             :         use pm_container, only: css_pdt
    8195             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8196             :         procedure(logical(LK))                                  :: isSorted
    8197             :         type(qsortrdp_type)     , intent(in)                    :: method
    8198             :     end subroutine
    8199             : #endif
    8200             : 
    8201             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8202             : 
    8203             :     recursive module subroutine setSortedArrCusComQsortrdp_D1_BSSK(array, isSorted, method)
    8204             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8205             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComQsortrdp_D1_BSSK
    8206             : #endif
    8207             :         use pm_kind, only: SKC => SK
    8208             :         use pm_container, only: css_type
    8209             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    8210             :         procedure(logical(LK))                                  :: isSorted
    8211             :         type(qsortrdp_type)     , intent(in)                    :: method
    8212             :     end subroutine
    8213             : 
    8214             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8215             : 
    8216             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8217             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8218             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8219             : 
    8220             :     end interface
    8221             : 
    8222             :     ! setSortedArrCusComBubble
    8223             : 
    8224             :     interface setSorted
    8225             : 
    8226             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8227             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8229             : 
    8230             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8231             : 
    8232             : #if SK5_ENABLED
    8233             :     module subroutine setSortedArrCusComBubble_D0_SK5(array, isSorted, method)
    8234             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8235             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D0_SK5
    8236             : #endif
    8237             :         use pm_kind, only: SKC => SK5
    8238             :         character(*,SKC)        , intent(inout)                 :: array
    8239             :         procedure(logical(LK))                                  :: isSorted
    8240             :         type(bubble_type)       , intent(in)                    :: method
    8241             :     end subroutine
    8242             : #endif
    8243             : 
    8244             : #if SK4_ENABLED
    8245             :     module subroutine setSortedArrCusComBubble_D0_SK4(array, isSorted, method)
    8246             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8247             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D0_SK4
    8248             : #endif
    8249             :         use pm_kind, only: SKC => SK4
    8250             :         character(*,SKC)        , intent(inout)                 :: array
    8251             :         procedure(logical(LK))                                  :: isSorted
    8252             :         type(bubble_type)       , intent(in)                    :: method
    8253             :     end subroutine
    8254             : #endif
    8255             : 
    8256             : #if SK3_ENABLED
    8257             :     module subroutine setSortedArrCusComBubble_D0_SK3(array, isSorted, method)
    8258             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8259             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D0_SK3
    8260             : #endif
    8261             :         use pm_kind, only: SKC => SK3
    8262             :         character(*,SKC)        , intent(inout)                 :: array
    8263             :         procedure(logical(LK))                                  :: isSorted
    8264             :         type(bubble_type)       , intent(in)                    :: method
    8265             :     end subroutine
    8266             : #endif
    8267             : 
    8268             : #if SK2_ENABLED
    8269             :     module subroutine setSortedArrCusComBubble_D0_SK2(array, isSorted, method)
    8270             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8271             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D0_SK2
    8272             : #endif
    8273             :         use pm_kind, only: SKC => SK2
    8274             :         character(*,SKC)        , intent(inout)                 :: array
    8275             :         procedure(logical(LK))                                  :: isSorted
    8276             :         type(bubble_type)       , intent(in)                    :: method
    8277             :     end subroutine
    8278             : #endif
    8279             : 
    8280             : #if SK1_ENABLED
    8281             :     module subroutine setSortedArrCusComBubble_D0_SK1(array, isSorted, method)
    8282             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8283             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D0_SK1
    8284             : #endif
    8285             :         use pm_kind, only: SKC => SK1
    8286             :         character(*,SKC)        , intent(inout)                 :: array
    8287             :         procedure(logical(LK))                                  :: isSorted
    8288             :         type(bubble_type)       , intent(in)                    :: method
    8289             :     end subroutine
    8290             : #endif
    8291             : 
    8292             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8293             : 
    8294             : #if SK5_ENABLED
    8295             :     module subroutine setSortedArrCusComBubble_D1_SK5(array, isSorted, method)
    8296             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8297             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_SK5
    8298             : #endif
    8299             :         use pm_kind, only: SKC => SK5
    8300             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8301             :         procedure(logical(LK))                                  :: isSorted
    8302             :         type(bubble_type)       , intent(in)                    :: method
    8303             :     end subroutine
    8304             : #endif
    8305             : 
    8306             : #if SK4_ENABLED
    8307             :     module subroutine setSortedArrCusComBubble_D1_SK4(array, isSorted, method)
    8308             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8309             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_SK4
    8310             : #endif
    8311             :         use pm_kind, only: SKC => SK4
    8312             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8313             :         procedure(logical(LK))                                  :: isSorted
    8314             :         type(bubble_type)       , intent(in)                    :: method
    8315             :     end subroutine
    8316             : #endif
    8317             : 
    8318             : #if SK3_ENABLED
    8319             :     module subroutine setSortedArrCusComBubble_D1_SK3(array, isSorted, method)
    8320             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8321             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_SK3
    8322             : #endif
    8323             :         use pm_kind, only: SKC => SK3
    8324             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8325             :         procedure(logical(LK))                                  :: isSorted
    8326             :         type(bubble_type)       , intent(in)                    :: method
    8327             :     end subroutine
    8328             : #endif
    8329             : 
    8330             : #if SK2_ENABLED
    8331             :     module subroutine setSortedArrCusComBubble_D1_SK2(array, isSorted, method)
    8332             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8333             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_SK2
    8334             : #endif
    8335             :         use pm_kind, only: SKC => SK2
    8336             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8337             :         procedure(logical(LK))                                  :: isSorted
    8338             :         type(bubble_type)       , intent(in)                    :: method
    8339             :     end subroutine
    8340             : #endif
    8341             : 
    8342             : #if SK1_ENABLED
    8343             :     module subroutine setSortedArrCusComBubble_D1_SK1(array, isSorted, method)
    8344             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8345             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_SK1
    8346             : #endif
    8347             :         use pm_kind, only: SKC => SK1
    8348             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8349             :         procedure(logical(LK))                                  :: isSorted
    8350             :         type(bubble_type)       , intent(in)                    :: method
    8351             :     end subroutine
    8352             : #endif
    8353             : 
    8354             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8355             : 
    8356             : #if IK5_ENABLED
    8357             :     module subroutine setSortedArrCusComBubble_D1_IK5(array, isSorted, method)
    8358             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8359             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_IK5
    8360             : #endif
    8361             :         use pm_kind, only: IKC => IK5
    8362             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8363             :         procedure(logical(LK))                                  :: isSorted
    8364             :         type(bubble_type)       , intent(in)                    :: method
    8365             :     end subroutine
    8366             : #endif
    8367             : 
    8368             : #if IK4_ENABLED
    8369             :     module subroutine setSortedArrCusComBubble_D1_IK4(array, isSorted, method)
    8370             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8371             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_IK4
    8372             : #endif
    8373             :         use pm_kind, only: IKC => IK4
    8374             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8375             :         procedure(logical(LK))                                  :: isSorted
    8376             :         type(bubble_type)       , intent(in)                    :: method
    8377             :     end subroutine
    8378             : #endif
    8379             : 
    8380             : #if IK3_ENABLED
    8381             :     module subroutine setSortedArrCusComBubble_D1_IK3(array, isSorted, method)
    8382             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8383             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_IK3
    8384             : #endif
    8385             :         use pm_kind, only: IKC => IK3
    8386             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8387             :         procedure(logical(LK))                                  :: isSorted
    8388             :         type(bubble_type)       , intent(in)                    :: method
    8389             :     end subroutine
    8390             : #endif
    8391             : 
    8392             : #if IK2_ENABLED
    8393             :     module subroutine setSortedArrCusComBubble_D1_IK2(array, isSorted, method)
    8394             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8395             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_IK2
    8396             : #endif
    8397             :         use pm_kind, only: IKC => IK2
    8398             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8399             :         procedure(logical(LK))                                  :: isSorted
    8400             :         type(bubble_type)       , intent(in)                    :: method
    8401             :     end subroutine
    8402             : #endif
    8403             : 
    8404             : #if IK1_ENABLED
    8405             :     module subroutine setSortedArrCusComBubble_D1_IK1(array, isSorted, method)
    8406             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8407             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_IK1
    8408             : #endif
    8409             :         use pm_kind, only: IKC => IK1
    8410             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8411             :         procedure(logical(LK))                                  :: isSorted
    8412             :         type(bubble_type)       , intent(in)                    :: method
    8413             :     end subroutine
    8414             : #endif
    8415             : 
    8416             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8417             : 
    8418             : #if LK5_ENABLED
    8419             :     module subroutine setSortedArrCusComBubble_D1_LK5(array, isSorted, method)
    8420             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8421             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_LK5
    8422             : #endif
    8423             :         use pm_kind, only: LKC => LK5
    8424             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8425             :         procedure(logical(LK))                                  :: isSorted
    8426             :         type(bubble_type)       , intent(in)                    :: method
    8427             :     end subroutine
    8428             : #endif
    8429             : 
    8430             : #if LK4_ENABLED
    8431             :     module subroutine setSortedArrCusComBubble_D1_LK4(array, isSorted, method)
    8432             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8433             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_LK4
    8434             : #endif
    8435             :         use pm_kind, only: LKC => LK4
    8436             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8437             :         procedure(logical(LK))                                  :: isSorted
    8438             :         type(bubble_type)       , intent(in)                    :: method
    8439             :     end subroutine
    8440             : #endif
    8441             : 
    8442             : #if LK3_ENABLED
    8443             :     module subroutine setSortedArrCusComBubble_D1_LK3(array, isSorted, method)
    8444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8445             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_LK3
    8446             : #endif
    8447             :         use pm_kind, only: LKC => LK3
    8448             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8449             :         procedure(logical(LK))                                  :: isSorted
    8450             :         type(bubble_type)       , intent(in)                    :: method
    8451             :     end subroutine
    8452             : #endif
    8453             : 
    8454             : #if LK2_ENABLED
    8455             :     module subroutine setSortedArrCusComBubble_D1_LK2(array, isSorted, method)
    8456             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8457             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_LK2
    8458             : #endif
    8459             :         use pm_kind, only: LKC => LK2
    8460             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8461             :         procedure(logical(LK))                                  :: isSorted
    8462             :         type(bubble_type)       , intent(in)                    :: method
    8463             :     end subroutine
    8464             : #endif
    8465             : 
    8466             : #if LK1_ENABLED
    8467             :     module subroutine setSortedArrCusComBubble_D1_LK1(array, isSorted, method)
    8468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8469             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_LK1
    8470             : #endif
    8471             :         use pm_kind, only: LKC => LK1
    8472             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8473             :         procedure(logical(LK))                                  :: isSorted
    8474             :         type(bubble_type)       , intent(in)                    :: method
    8475             :     end subroutine
    8476             : #endif
    8477             : 
    8478             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8479             : 
    8480             : #if CK5_ENABLED
    8481             :     module subroutine setSortedArrCusComBubble_D1_CK5(array, isSorted, method)
    8482             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8483             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_CK5
    8484             : #endif
    8485             :         use pm_kind, only: CKC => CK5
    8486             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8487             :         procedure(logical(LK))                                  :: isSorted
    8488             :         type(bubble_type)       , intent(in)                    :: method
    8489             :     end subroutine
    8490             : #endif
    8491             : 
    8492             : #if CK4_ENABLED
    8493             :     module subroutine setSortedArrCusComBubble_D1_CK4(array, isSorted, method)
    8494             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8495             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_CK4
    8496             : #endif
    8497             :         use pm_kind, only: CKC => CK4
    8498             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8499             :         procedure(logical(LK))                                  :: isSorted
    8500             :         type(bubble_type)       , intent(in)                    :: method
    8501             :     end subroutine
    8502             : #endif
    8503             : 
    8504             : #if CK3_ENABLED
    8505             :     module subroutine setSortedArrCusComBubble_D1_CK3(array, isSorted, method)
    8506             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8507             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_CK3
    8508             : #endif
    8509             :         use pm_kind, only: CKC => CK3
    8510             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8511             :         procedure(logical(LK))                                  :: isSorted
    8512             :         type(bubble_type)       , intent(in)                    :: method
    8513             :     end subroutine
    8514             : #endif
    8515             : 
    8516             : #if CK2_ENABLED
    8517             :     module subroutine setSortedArrCusComBubble_D1_CK2(array, isSorted, method)
    8518             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8519             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_CK2
    8520             : #endif
    8521             :         use pm_kind, only: CKC => CK2
    8522             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8523             :         procedure(logical(LK))                                  :: isSorted
    8524             :         type(bubble_type)       , intent(in)                    :: method
    8525             :     end subroutine
    8526             : #endif
    8527             : 
    8528             : #if CK1_ENABLED
    8529             :     module subroutine setSortedArrCusComBubble_D1_CK1(array, isSorted, method)
    8530             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8531             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_CK1
    8532             : #endif
    8533             :         use pm_kind, only: CKC => CK1
    8534             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8535             :         procedure(logical(LK))                                  :: isSorted
    8536             :         type(bubble_type)       , intent(in)                    :: method
    8537             :     end subroutine
    8538             : #endif
    8539             : 
    8540             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8541             : 
    8542             : #if RK5_ENABLED
    8543             :     module subroutine setSortedArrCusComBubble_D1_RK5(array, isSorted, method)
    8544             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8545             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_RK5
    8546             : #endif
    8547             :         use pm_kind, only: RKC => RK5
    8548             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8549             :         procedure(logical(LK))                                  :: isSorted
    8550             :         type(bubble_type)       , intent(in)                    :: method
    8551             :     end subroutine
    8552             : #endif
    8553             : 
    8554             : #if RK4_ENABLED
    8555             :     module subroutine setSortedArrCusComBubble_D1_RK4(array, isSorted, method)
    8556             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8557             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_RK4
    8558             : #endif
    8559             :         use pm_kind, only: RKC => RK4
    8560             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8561             :         procedure(logical(LK))                                  :: isSorted
    8562             :         type(bubble_type)       , intent(in)                    :: method
    8563             :     end subroutine
    8564             : #endif
    8565             : 
    8566             : #if RK3_ENABLED
    8567             :     module subroutine setSortedArrCusComBubble_D1_RK3(array, isSorted, method)
    8568             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8569             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_RK3
    8570             : #endif
    8571             :         use pm_kind, only: RKC => RK3
    8572             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8573             :         procedure(logical(LK))                                  :: isSorted
    8574             :         type(bubble_type)       , intent(in)                    :: method
    8575             :     end subroutine
    8576             : #endif
    8577             : 
    8578             : #if RK2_ENABLED
    8579             :     module subroutine setSortedArrCusComBubble_D1_RK2(array, isSorted, method)
    8580             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8581             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_RK2
    8582             : #endif
    8583             :         use pm_kind, only: RKC => RK2
    8584             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8585             :         procedure(logical(LK))                                  :: isSorted
    8586             :         type(bubble_type)       , intent(in)                    :: method
    8587             :     end subroutine
    8588             : #endif
    8589             : 
    8590             : #if RK1_ENABLED
    8591             :     module subroutine setSortedArrCusComBubble_D1_RK1(array, isSorted, method)
    8592             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8593             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_RK1
    8594             : #endif
    8595             :         use pm_kind, only: RKC => RK1
    8596             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    8597             :         procedure(logical(LK))                                  :: isSorted
    8598             :         type(bubble_type)       , intent(in)                    :: method
    8599             :     end subroutine
    8600             : #endif
    8601             : 
    8602             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8603             : 
    8604             : #if SK5_ENABLED
    8605             :     module subroutine setSortedArrCusComBubble_D1_PSSK5(array, isSorted, method)
    8606             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8607             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_PSSK5
    8608             : #endif
    8609             :         use pm_kind, only: SKC => SK5
    8610             :         use pm_container, only: css_pdt
    8611             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8612             :         procedure(logical(LK))                                  :: isSorted
    8613             :         type(bubble_type)       , intent(in)                    :: method
    8614             :     end subroutine
    8615             : #endif
    8616             : 
    8617             : #if SK4_ENABLED
    8618             :     module subroutine setSortedArrCusComBubble_D1_PSSK4(array, isSorted, method)
    8619             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8620             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_PSSK4
    8621             : #endif
    8622             :         use pm_kind, only: SKC => SK4
    8623             :         use pm_container, only: css_pdt
    8624             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8625             :         procedure(logical(LK))                                  :: isSorted
    8626             :         type(bubble_type)       , intent(in)                    :: method
    8627             :     end subroutine
    8628             : #endif
    8629             : 
    8630             : #if SK3_ENABLED
    8631             :     module subroutine setSortedArrCusComBubble_D1_PSSK3(array, isSorted, method)
    8632             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8633             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_PSSK3
    8634             : #endif
    8635             :         use pm_kind, only: SKC => SK3
    8636             :         use pm_container, only: css_pdt
    8637             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8638             :         procedure(logical(LK))                                  :: isSorted
    8639             :         type(bubble_type)       , intent(in)                    :: method
    8640             :     end subroutine
    8641             : #endif
    8642             : 
    8643             : #if SK2_ENABLED
    8644             :     module subroutine setSortedArrCusComBubble_D1_PSSK2(array, isSorted, method)
    8645             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8646             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_PSSK2
    8647             : #endif
    8648             :         use pm_kind, only: SKC => SK2
    8649             :         use pm_container, only: css_pdt
    8650             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8651             :         procedure(logical(LK))                                  :: isSorted
    8652             :         type(bubble_type)       , intent(in)                    :: method
    8653             :     end subroutine
    8654             : #endif
    8655             : 
    8656             : #if SK1_ENABLED
    8657             :     module subroutine setSortedArrCusComBubble_D1_PSSK1(array, isSorted, method)
    8658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8659             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_PSSK1
    8660             : #endif
    8661             :         use pm_kind, only: SKC => SK1
    8662             :         use pm_container, only: css_pdt
    8663             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    8664             :         procedure(logical(LK))                                  :: isSorted
    8665             :         type(bubble_type)       , intent(in)                    :: method
    8666             :     end subroutine
    8667             : #endif
    8668             : 
    8669             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8670             : 
    8671             :     module subroutine setSortedArrCusComBubble_D1_BSSK(array, isSorted, method)
    8672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComBubble_D1_BSSK
    8674             : #endif
    8675             :         use pm_kind, only: SKC => SK
    8676             :         use pm_container, only: css_type
    8677             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    8678             :         procedure(logical(LK))                                  :: isSorted
    8679             :         type(bubble_type)       , intent(in)                    :: method
    8680             :     end subroutine
    8681             : 
    8682             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8683             : 
    8684             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8685             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8686             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8687             : 
    8688             :     end interface
    8689             : 
    8690             :     ! setSortedArrCusComHeapi
    8691             : 
    8692             :     interface setSorted
    8693             : 
    8694             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8695             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8696             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8697             : 
    8698             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8699             : 
    8700             : #if SK5_ENABLED
    8701             :     module subroutine setSortedArrCusComHeapi_D0_SK5(array, isSorted, method)
    8702             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8703             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D0_SK5
    8704             : #endif
    8705             :         use pm_kind, only: SKC => SK5
    8706             :         character(*,SKC)        , intent(inout)                 :: array
    8707             :         procedure(logical(LK))                                  :: isSorted
    8708             :         type(heapi_type)        , intent(in)                    :: method
    8709             :     end subroutine
    8710             : #endif
    8711             : 
    8712             : #if SK4_ENABLED
    8713             :     module subroutine setSortedArrCusComHeapi_D0_SK4(array, isSorted, method)
    8714             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8715             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D0_SK4
    8716             : #endif
    8717             :         use pm_kind, only: SKC => SK4
    8718             :         character(*,SKC)        , intent(inout)                 :: array
    8719             :         procedure(logical(LK))                                  :: isSorted
    8720             :         type(heapi_type)        , intent(in)                    :: method
    8721             :     end subroutine
    8722             : #endif
    8723             : 
    8724             : #if SK3_ENABLED
    8725             :     module subroutine setSortedArrCusComHeapi_D0_SK3(array, isSorted, method)
    8726             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8727             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D0_SK3
    8728             : #endif
    8729             :         use pm_kind, only: SKC => SK3
    8730             :         character(*,SKC)        , intent(inout)                 :: array
    8731             :         procedure(logical(LK))                                  :: isSorted
    8732             :         type(heapi_type)        , intent(in)                    :: method
    8733             :     end subroutine
    8734             : #endif
    8735             : 
    8736             : #if SK2_ENABLED
    8737             :     module subroutine setSortedArrCusComHeapi_D0_SK2(array, isSorted, method)
    8738             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8739             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D0_SK2
    8740             : #endif
    8741             :         use pm_kind, only: SKC => SK2
    8742             :         character(*,SKC)        , intent(inout)                 :: array
    8743             :         procedure(logical(LK))                                  :: isSorted
    8744             :         type(heapi_type)        , intent(in)                    :: method
    8745             :     end subroutine
    8746             : #endif
    8747             : 
    8748             : #if SK1_ENABLED
    8749             :     module subroutine setSortedArrCusComHeapi_D0_SK1(array, isSorted, method)
    8750             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8751             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D0_SK1
    8752             : #endif
    8753             :         use pm_kind, only: SKC => SK1
    8754             :         character(*,SKC)        , intent(inout)                 :: array
    8755             :         procedure(logical(LK))                                  :: isSorted
    8756             :         type(heapi_type)        , intent(in)                    :: method
    8757             :     end subroutine
    8758             : #endif
    8759             : 
    8760             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8761             : 
    8762             : #if SK5_ENABLED
    8763             :     module subroutine setSortedArrCusComHeapi_D1_SK5(array, isSorted, method)
    8764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8765             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_SK5
    8766             : #endif
    8767             :         use pm_kind, only: SKC => SK5
    8768             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8769             :         procedure(logical(LK))                                  :: isSorted
    8770             :         type(heapi_type)        , intent(in)                    :: method
    8771             :     end subroutine
    8772             : #endif
    8773             : 
    8774             : #if SK4_ENABLED
    8775             :     module subroutine setSortedArrCusComHeapi_D1_SK4(array, isSorted, method)
    8776             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8777             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_SK4
    8778             : #endif
    8779             :         use pm_kind, only: SKC => SK4
    8780             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8781             :         procedure(logical(LK))                                  :: isSorted
    8782             :         type(heapi_type)        , intent(in)                    :: method
    8783             :     end subroutine
    8784             : #endif
    8785             : 
    8786             : #if SK3_ENABLED
    8787             :     module subroutine setSortedArrCusComHeapi_D1_SK3(array, isSorted, method)
    8788             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8789             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_SK3
    8790             : #endif
    8791             :         use pm_kind, only: SKC => SK3
    8792             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8793             :         procedure(logical(LK))                                  :: isSorted
    8794             :         type(heapi_type)        , intent(in)                    :: method
    8795             :     end subroutine
    8796             : #endif
    8797             : 
    8798             : #if SK2_ENABLED
    8799             :     module subroutine setSortedArrCusComHeapi_D1_SK2(array, isSorted, method)
    8800             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8801             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_SK2
    8802             : #endif
    8803             :         use pm_kind, only: SKC => SK2
    8804             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8805             :         procedure(logical(LK))                                  :: isSorted
    8806             :         type(heapi_type)        , intent(in)                    :: method
    8807             :     end subroutine
    8808             : #endif
    8809             : 
    8810             : #if SK1_ENABLED
    8811             :     module subroutine setSortedArrCusComHeapi_D1_SK1(array, isSorted, method)
    8812             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8813             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_SK1
    8814             : #endif
    8815             :         use pm_kind, only: SKC => SK1
    8816             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    8817             :         procedure(logical(LK))                                  :: isSorted
    8818             :         type(heapi_type)        , intent(in)                    :: method
    8819             :     end subroutine
    8820             : #endif
    8821             : 
    8822             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8823             : 
    8824             : #if IK5_ENABLED
    8825             :     module subroutine setSortedArrCusComHeapi_D1_IK5(array, isSorted, method)
    8826             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8827             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_IK5
    8828             : #endif
    8829             :         use pm_kind, only: IKC => IK5
    8830             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8831             :         procedure(logical(LK))                                  :: isSorted
    8832             :         type(heapi_type)        , intent(in)                    :: method
    8833             :     end subroutine
    8834             : #endif
    8835             : 
    8836             : #if IK4_ENABLED
    8837             :     module subroutine setSortedArrCusComHeapi_D1_IK4(array, isSorted, method)
    8838             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8839             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_IK4
    8840             : #endif
    8841             :         use pm_kind, only: IKC => IK4
    8842             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8843             :         procedure(logical(LK))                                  :: isSorted
    8844             :         type(heapi_type)        , intent(in)                    :: method
    8845             :     end subroutine
    8846             : #endif
    8847             : 
    8848             : #if IK3_ENABLED
    8849             :     module subroutine setSortedArrCusComHeapi_D1_IK3(array, isSorted, method)
    8850             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8851             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_IK3
    8852             : #endif
    8853             :         use pm_kind, only: IKC => IK3
    8854             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8855             :         procedure(logical(LK))                                  :: isSorted
    8856             :         type(heapi_type)        , intent(in)                    :: method
    8857             :     end subroutine
    8858             : #endif
    8859             : 
    8860             : #if IK2_ENABLED
    8861             :     module subroutine setSortedArrCusComHeapi_D1_IK2(array, isSorted, method)
    8862             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8863             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_IK2
    8864             : #endif
    8865             :         use pm_kind, only: IKC => IK2
    8866             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8867             :         procedure(logical(LK))                                  :: isSorted
    8868             :         type(heapi_type)        , intent(in)                    :: method
    8869             :     end subroutine
    8870             : #endif
    8871             : 
    8872             : #if IK1_ENABLED
    8873             :     module subroutine setSortedArrCusComHeapi_D1_IK1(array, isSorted, method)
    8874             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8875             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_IK1
    8876             : #endif
    8877             :         use pm_kind, only: IKC => IK1
    8878             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    8879             :         procedure(logical(LK))                                  :: isSorted
    8880             :         type(heapi_type)        , intent(in)                    :: method
    8881             :     end subroutine
    8882             : #endif
    8883             : 
    8884             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8885             : 
    8886             : #if LK5_ENABLED
    8887             :     module subroutine setSortedArrCusComHeapi_D1_LK5(array, isSorted, method)
    8888             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8889             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_LK5
    8890             : #endif
    8891             :         use pm_kind, only: LKC => LK5
    8892             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8893             :         procedure(logical(LK))                                  :: isSorted
    8894             :         type(heapi_type)        , intent(in)                    :: method
    8895             :     end subroutine
    8896             : #endif
    8897             : 
    8898             : #if LK4_ENABLED
    8899             :     module subroutine setSortedArrCusComHeapi_D1_LK4(array, isSorted, method)
    8900             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8901             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_LK4
    8902             : #endif
    8903             :         use pm_kind, only: LKC => LK4
    8904             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8905             :         procedure(logical(LK))                                  :: isSorted
    8906             :         type(heapi_type)        , intent(in)                    :: method
    8907             :     end subroutine
    8908             : #endif
    8909             : 
    8910             : #if LK3_ENABLED
    8911             :     module subroutine setSortedArrCusComHeapi_D1_LK3(array, isSorted, method)
    8912             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8913             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_LK3
    8914             : #endif
    8915             :         use pm_kind, only: LKC => LK3
    8916             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8917             :         procedure(logical(LK))                                  :: isSorted
    8918             :         type(heapi_type)        , intent(in)                    :: method
    8919             :     end subroutine
    8920             : #endif
    8921             : 
    8922             : #if LK2_ENABLED
    8923             :     module subroutine setSortedArrCusComHeapi_D1_LK2(array, isSorted, method)
    8924             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8925             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_LK2
    8926             : #endif
    8927             :         use pm_kind, only: LKC => LK2
    8928             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8929             :         procedure(logical(LK))                                  :: isSorted
    8930             :         type(heapi_type)        , intent(in)                    :: method
    8931             :     end subroutine
    8932             : #endif
    8933             : 
    8934             : #if LK1_ENABLED
    8935             :     module subroutine setSortedArrCusComHeapi_D1_LK1(array, isSorted, method)
    8936             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8937             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_LK1
    8938             : #endif
    8939             :         use pm_kind, only: LKC => LK1
    8940             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    8941             :         procedure(logical(LK))                                  :: isSorted
    8942             :         type(heapi_type)        , intent(in)                    :: method
    8943             :     end subroutine
    8944             : #endif
    8945             : 
    8946             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    8947             : 
    8948             : #if CK5_ENABLED
    8949             :     module subroutine setSortedArrCusComHeapi_D1_CK5(array, isSorted, method)
    8950             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8951             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_CK5
    8952             : #endif
    8953             :         use pm_kind, only: CKC => CK5
    8954             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8955             :         procedure(logical(LK))                                  :: isSorted
    8956             :         type(heapi_type)        , intent(in)                    :: method
    8957             :     end subroutine
    8958             : #endif
    8959             : 
    8960             : #if CK4_ENABLED
    8961             :     module subroutine setSortedArrCusComHeapi_D1_CK4(array, isSorted, method)
    8962             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8963             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_CK4
    8964             : #endif
    8965             :         use pm_kind, only: CKC => CK4
    8966             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8967             :         procedure(logical(LK))                                  :: isSorted
    8968             :         type(heapi_type)        , intent(in)                    :: method
    8969             :     end subroutine
    8970             : #endif
    8971             : 
    8972             : #if CK3_ENABLED
    8973             :     module subroutine setSortedArrCusComHeapi_D1_CK3(array, isSorted, method)
    8974             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8975             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_CK3
    8976             : #endif
    8977             :         use pm_kind, only: CKC => CK3
    8978             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8979             :         procedure(logical(LK))                                  :: isSorted
    8980             :         type(heapi_type)        , intent(in)                    :: method
    8981             :     end subroutine
    8982             : #endif
    8983             : 
    8984             : #if CK2_ENABLED
    8985             :     module subroutine setSortedArrCusComHeapi_D1_CK2(array, isSorted, method)
    8986             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8987             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_CK2
    8988             : #endif
    8989             :         use pm_kind, only: CKC => CK2
    8990             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    8991             :         procedure(logical(LK))                                  :: isSorted
    8992             :         type(heapi_type)        , intent(in)                    :: method
    8993             :     end subroutine
    8994             : #endif
    8995             : 
    8996             : #if CK1_ENABLED
    8997             :     module subroutine setSortedArrCusComHeapi_D1_CK1(array, isSorted, method)
    8998             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    8999             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_CK1
    9000             : #endif
    9001             :         use pm_kind, only: CKC => CK1
    9002             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9003             :         procedure(logical(LK))                                  :: isSorted
    9004             :         type(heapi_type)        , intent(in)                    :: method
    9005             :     end subroutine
    9006             : #endif
    9007             : 
    9008             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9009             : 
    9010             : #if RK5_ENABLED
    9011             :     module subroutine setSortedArrCusComHeapi_D1_RK5(array, isSorted, method)
    9012             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9013             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_RK5
    9014             : #endif
    9015             :         use pm_kind, only: RKC => RK5
    9016             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9017             :         procedure(logical(LK))                                  :: isSorted
    9018             :         type(heapi_type)        , intent(in)                    :: method
    9019             :     end subroutine
    9020             : #endif
    9021             : 
    9022             : #if RK4_ENABLED
    9023             :     module subroutine setSortedArrCusComHeapi_D1_RK4(array, isSorted, method)
    9024             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9025             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_RK4
    9026             : #endif
    9027             :         use pm_kind, only: RKC => RK4
    9028             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9029             :         procedure(logical(LK))                                  :: isSorted
    9030             :         type(heapi_type)        , intent(in)                    :: method
    9031             :     end subroutine
    9032             : #endif
    9033             : 
    9034             : #if RK3_ENABLED
    9035             :     module subroutine setSortedArrCusComHeapi_D1_RK3(array, isSorted, method)
    9036             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9037             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_RK3
    9038             : #endif
    9039             :         use pm_kind, only: RKC => RK3
    9040             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9041             :         procedure(logical(LK))                                  :: isSorted
    9042             :         type(heapi_type)        , intent(in)                    :: method
    9043             :     end subroutine
    9044             : #endif
    9045             : 
    9046             : #if RK2_ENABLED
    9047             :     module subroutine setSortedArrCusComHeapi_D1_RK2(array, isSorted, method)
    9048             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9049             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_RK2
    9050             : #endif
    9051             :         use pm_kind, only: RKC => RK2
    9052             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9053             :         procedure(logical(LK))                                  :: isSorted
    9054             :         type(heapi_type)        , intent(in)                    :: method
    9055             :     end subroutine
    9056             : #endif
    9057             : 
    9058             : #if RK1_ENABLED
    9059             :     module subroutine setSortedArrCusComHeapi_D1_RK1(array, isSorted, method)
    9060             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9061             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_RK1
    9062             : #endif
    9063             :         use pm_kind, only: RKC => RK1
    9064             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9065             :         procedure(logical(LK))                                  :: isSorted
    9066             :         type(heapi_type)        , intent(in)                    :: method
    9067             :     end subroutine
    9068             : #endif
    9069             : 
    9070             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9071             : 
    9072             : #if SK5_ENABLED
    9073             :     module subroutine setSortedArrCusComHeapi_D1_PSSK5(array, isSorted, method)
    9074             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9075             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_PSSK5
    9076             : #endif
    9077             :         use pm_kind, only: SKC => SK5
    9078             :         use pm_container, only: css_pdt
    9079             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9080             :         procedure(logical(LK))                                  :: isSorted
    9081             :         type(heapi_type)        , intent(in)                    :: method
    9082             :     end subroutine
    9083             : #endif
    9084             : 
    9085             : #if SK4_ENABLED
    9086             :     module subroutine setSortedArrCusComHeapi_D1_PSSK4(array, isSorted, method)
    9087             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9088             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_PSSK4
    9089             : #endif
    9090             :         use pm_kind, only: SKC => SK4
    9091             :         use pm_container, only: css_pdt
    9092             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9093             :         procedure(logical(LK))                                  :: isSorted
    9094             :         type(heapi_type)        , intent(in)                    :: method
    9095             :     end subroutine
    9096             : #endif
    9097             : 
    9098             : #if SK3_ENABLED
    9099             :     module subroutine setSortedArrCusComHeapi_D1_PSSK3(array, isSorted, method)
    9100             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9101             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_PSSK3
    9102             : #endif
    9103             :         use pm_kind, only: SKC => SK3
    9104             :         use pm_container, only: css_pdt
    9105             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9106             :         procedure(logical(LK))                                  :: isSorted
    9107             :         type(heapi_type)        , intent(in)                    :: method
    9108             :     end subroutine
    9109             : #endif
    9110             : 
    9111             : #if SK2_ENABLED
    9112             :     module subroutine setSortedArrCusComHeapi_D1_PSSK2(array, isSorted, method)
    9113             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9114             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_PSSK2
    9115             : #endif
    9116             :         use pm_kind, only: SKC => SK2
    9117             :         use pm_container, only: css_pdt
    9118             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9119             :         procedure(logical(LK))                                  :: isSorted
    9120             :         type(heapi_type)        , intent(in)                    :: method
    9121             :     end subroutine
    9122             : #endif
    9123             : 
    9124             : #if SK1_ENABLED
    9125             :     module subroutine setSortedArrCusComHeapi_D1_PSSK1(array, isSorted, method)
    9126             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9127             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_PSSK1
    9128             : #endif
    9129             :         use pm_kind, only: SKC => SK1
    9130             :         use pm_container, only: css_pdt
    9131             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9132             :         procedure(logical(LK))                                  :: isSorted
    9133             :         type(heapi_type)        , intent(in)                    :: method
    9134             :     end subroutine
    9135             : #endif
    9136             : 
    9137             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9138             : 
    9139             :     module subroutine setSortedArrCusComHeapi_D1_BSSK(array, isSorted, method)
    9140             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9141             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapi_D1_BSSK
    9142             : #endif
    9143             :         use pm_kind, only: SKC => SK
    9144             :         use pm_container, only: css_type
    9145             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    9146             :         procedure(logical(LK))                                  :: isSorted
    9147             :         type(heapi_type)        , intent(in)                    :: method
    9148             :     end subroutine
    9149             : 
    9150             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9151             : 
    9152             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9153             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9154             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9155             : 
    9156             :     end interface
    9157             : 
    9158             :     ! setSortedArrCusComHeapr
    9159             : 
    9160             :     interface setSorted
    9161             : 
    9162             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9163             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9164             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9165             : 
    9166             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9167             : 
    9168             : #if SK5_ENABLED
    9169             :     module subroutine setSortedArrCusComHeapr_D0_SK5(array, isSorted, method)
    9170             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9171             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D0_SK5
    9172             : #endif
    9173             :         use pm_kind, only: SKC => SK5
    9174             :         character(*,SKC)        , intent(inout)                 :: array
    9175             :         procedure(logical(LK))                                  :: isSorted
    9176             :         type(heapr_type)        , intent(in)                    :: method
    9177             :     end subroutine
    9178             : #endif
    9179             : 
    9180             : #if SK4_ENABLED
    9181             :     module subroutine setSortedArrCusComHeapr_D0_SK4(array, isSorted, method)
    9182             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9183             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D0_SK4
    9184             : #endif
    9185             :         use pm_kind, only: SKC => SK4
    9186             :         character(*,SKC)        , intent(inout)                 :: array
    9187             :         procedure(logical(LK))                                  :: isSorted
    9188             :         type(heapr_type)        , intent(in)                    :: method
    9189             :     end subroutine
    9190             : #endif
    9191             : 
    9192             : #if SK3_ENABLED
    9193             :     module subroutine setSortedArrCusComHeapr_D0_SK3(array, isSorted, method)
    9194             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9195             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D0_SK3
    9196             : #endif
    9197             :         use pm_kind, only: SKC => SK3
    9198             :         character(*,SKC)        , intent(inout)                 :: array
    9199             :         procedure(logical(LK))                                  :: isSorted
    9200             :         type(heapr_type)        , intent(in)                    :: method
    9201             :     end subroutine
    9202             : #endif
    9203             : 
    9204             : #if SK2_ENABLED
    9205             :     module subroutine setSortedArrCusComHeapr_D0_SK2(array, isSorted, method)
    9206             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9207             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D0_SK2
    9208             : #endif
    9209             :         use pm_kind, only: SKC => SK2
    9210             :         character(*,SKC)        , intent(inout)                 :: array
    9211             :         procedure(logical(LK))                                  :: isSorted
    9212             :         type(heapr_type)        , intent(in)                    :: method
    9213             :     end subroutine
    9214             : #endif
    9215             : 
    9216             : #if SK1_ENABLED
    9217             :     module subroutine setSortedArrCusComHeapr_D0_SK1(array, isSorted, method)
    9218             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9219             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D0_SK1
    9220             : #endif
    9221             :         use pm_kind, only: SKC => SK1
    9222             :         character(*,SKC)        , intent(inout)                 :: array
    9223             :         procedure(logical(LK))                                  :: isSorted
    9224             :         type(heapr_type)        , intent(in)                    :: method
    9225             :     end subroutine
    9226             : #endif
    9227             : 
    9228             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9229             : 
    9230             : #if SK5_ENABLED
    9231             :     module subroutine setSortedArrCusComHeapr_D1_SK5(array, isSorted, method)
    9232             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9233             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_SK5
    9234             : #endif
    9235             :         use pm_kind, only: SKC => SK5
    9236             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9237             :         procedure(logical(LK))                                  :: isSorted
    9238             :         type(heapr_type)        , intent(in)                    :: method
    9239             :     end subroutine
    9240             : #endif
    9241             : 
    9242             : #if SK4_ENABLED
    9243             :     module subroutine setSortedArrCusComHeapr_D1_SK4(array, isSorted, method)
    9244             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9245             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_SK4
    9246             : #endif
    9247             :         use pm_kind, only: SKC => SK4
    9248             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9249             :         procedure(logical(LK))                                  :: isSorted
    9250             :         type(heapr_type)        , intent(in)                    :: method
    9251             :     end subroutine
    9252             : #endif
    9253             : 
    9254             : #if SK3_ENABLED
    9255             :     module subroutine setSortedArrCusComHeapr_D1_SK3(array, isSorted, method)
    9256             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9257             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_SK3
    9258             : #endif
    9259             :         use pm_kind, only: SKC => SK3
    9260             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9261             :         procedure(logical(LK))                                  :: isSorted
    9262             :         type(heapr_type)        , intent(in)                    :: method
    9263             :     end subroutine
    9264             : #endif
    9265             : 
    9266             : #if SK2_ENABLED
    9267             :     module subroutine setSortedArrCusComHeapr_D1_SK2(array, isSorted, method)
    9268             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9269             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_SK2
    9270             : #endif
    9271             :         use pm_kind, only: SKC => SK2
    9272             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9273             :         procedure(logical(LK))                                  :: isSorted
    9274             :         type(heapr_type)        , intent(in)                    :: method
    9275             :     end subroutine
    9276             : #endif
    9277             : 
    9278             : #if SK1_ENABLED
    9279             :     module subroutine setSortedArrCusComHeapr_D1_SK1(array, isSorted, method)
    9280             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9281             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_SK1
    9282             : #endif
    9283             :         use pm_kind, only: SKC => SK1
    9284             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9285             :         procedure(logical(LK))                                  :: isSorted
    9286             :         type(heapr_type)        , intent(in)                    :: method
    9287             :     end subroutine
    9288             : #endif
    9289             : 
    9290             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9291             : 
    9292             : #if IK5_ENABLED
    9293             :     module subroutine setSortedArrCusComHeapr_D1_IK5(array, isSorted, method)
    9294             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9295             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_IK5
    9296             : #endif
    9297             :         use pm_kind, only: IKC => IK5
    9298             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9299             :         procedure(logical(LK))                                  :: isSorted
    9300             :         type(heapr_type)        , intent(in)                    :: method
    9301             :     end subroutine
    9302             : #endif
    9303             : 
    9304             : #if IK4_ENABLED
    9305             :     module subroutine setSortedArrCusComHeapr_D1_IK4(array, isSorted, method)
    9306             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9307             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_IK4
    9308             : #endif
    9309             :         use pm_kind, only: IKC => IK4
    9310             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9311             :         procedure(logical(LK))                                  :: isSorted
    9312             :         type(heapr_type)        , intent(in)                    :: method
    9313             :     end subroutine
    9314             : #endif
    9315             : 
    9316             : #if IK3_ENABLED
    9317             :     module subroutine setSortedArrCusComHeapr_D1_IK3(array, isSorted, method)
    9318             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9319             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_IK3
    9320             : #endif
    9321             :         use pm_kind, only: IKC => IK3
    9322             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9323             :         procedure(logical(LK))                                  :: isSorted
    9324             :         type(heapr_type)        , intent(in)                    :: method
    9325             :     end subroutine
    9326             : #endif
    9327             : 
    9328             : #if IK2_ENABLED
    9329             :     module subroutine setSortedArrCusComHeapr_D1_IK2(array, isSorted, method)
    9330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9331             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_IK2
    9332             : #endif
    9333             :         use pm_kind, only: IKC => IK2
    9334             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9335             :         procedure(logical(LK))                                  :: isSorted
    9336             :         type(heapr_type)        , intent(in)                    :: method
    9337             :     end subroutine
    9338             : #endif
    9339             : 
    9340             : #if IK1_ENABLED
    9341             :     module subroutine setSortedArrCusComHeapr_D1_IK1(array, isSorted, method)
    9342             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9343             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_IK1
    9344             : #endif
    9345             :         use pm_kind, only: IKC => IK1
    9346             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9347             :         procedure(logical(LK))                                  :: isSorted
    9348             :         type(heapr_type)        , intent(in)                    :: method
    9349             :     end subroutine
    9350             : #endif
    9351             : 
    9352             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9353             : 
    9354             : #if LK5_ENABLED
    9355             :     module subroutine setSortedArrCusComHeapr_D1_LK5(array, isSorted, method)
    9356             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9357             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_LK5
    9358             : #endif
    9359             :         use pm_kind, only: LKC => LK5
    9360             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9361             :         procedure(logical(LK))                                  :: isSorted
    9362             :         type(heapr_type)        , intent(in)                    :: method
    9363             :     end subroutine
    9364             : #endif
    9365             : 
    9366             : #if LK4_ENABLED
    9367             :     module subroutine setSortedArrCusComHeapr_D1_LK4(array, isSorted, method)
    9368             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9369             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_LK4
    9370             : #endif
    9371             :         use pm_kind, only: LKC => LK4
    9372             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9373             :         procedure(logical(LK))                                  :: isSorted
    9374             :         type(heapr_type)        , intent(in)                    :: method
    9375             :     end subroutine
    9376             : #endif
    9377             : 
    9378             : #if LK3_ENABLED
    9379             :     module subroutine setSortedArrCusComHeapr_D1_LK3(array, isSorted, method)
    9380             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9381             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_LK3
    9382             : #endif
    9383             :         use pm_kind, only: LKC => LK3
    9384             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9385             :         procedure(logical(LK))                                  :: isSorted
    9386             :         type(heapr_type)        , intent(in)                    :: method
    9387             :     end subroutine
    9388             : #endif
    9389             : 
    9390             : #if LK2_ENABLED
    9391             :     module subroutine setSortedArrCusComHeapr_D1_LK2(array, isSorted, method)
    9392             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9393             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_LK2
    9394             : #endif
    9395             :         use pm_kind, only: LKC => LK2
    9396             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9397             :         procedure(logical(LK))                                  :: isSorted
    9398             :         type(heapr_type)        , intent(in)                    :: method
    9399             :     end subroutine
    9400             : #endif
    9401             : 
    9402             : #if LK1_ENABLED
    9403             :     module subroutine setSortedArrCusComHeapr_D1_LK1(array, isSorted, method)
    9404             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9405             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_LK1
    9406             : #endif
    9407             :         use pm_kind, only: LKC => LK1
    9408             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9409             :         procedure(logical(LK))                                  :: isSorted
    9410             :         type(heapr_type)        , intent(in)                    :: method
    9411             :     end subroutine
    9412             : #endif
    9413             : 
    9414             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9415             : 
    9416             : #if CK5_ENABLED
    9417             :     module subroutine setSortedArrCusComHeapr_D1_CK5(array, isSorted, method)
    9418             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9419             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_CK5
    9420             : #endif
    9421             :         use pm_kind, only: CKC => CK5
    9422             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9423             :         procedure(logical(LK))                                  :: isSorted
    9424             :         type(heapr_type)        , intent(in)                    :: method
    9425             :     end subroutine
    9426             : #endif
    9427             : 
    9428             : #if CK4_ENABLED
    9429             :     module subroutine setSortedArrCusComHeapr_D1_CK4(array, isSorted, method)
    9430             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9431             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_CK4
    9432             : #endif
    9433             :         use pm_kind, only: CKC => CK4
    9434             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9435             :         procedure(logical(LK))                                  :: isSorted
    9436             :         type(heapr_type)        , intent(in)                    :: method
    9437             :     end subroutine
    9438             : #endif
    9439             : 
    9440             : #if CK3_ENABLED
    9441             :     module subroutine setSortedArrCusComHeapr_D1_CK3(array, isSorted, method)
    9442             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9443             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_CK3
    9444             : #endif
    9445             :         use pm_kind, only: CKC => CK3
    9446             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9447             :         procedure(logical(LK))                                  :: isSorted
    9448             :         type(heapr_type)        , intent(in)                    :: method
    9449             :     end subroutine
    9450             : #endif
    9451             : 
    9452             : #if CK2_ENABLED
    9453             :     module subroutine setSortedArrCusComHeapr_D1_CK2(array, isSorted, method)
    9454             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9455             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_CK2
    9456             : #endif
    9457             :         use pm_kind, only: CKC => CK2
    9458             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9459             :         procedure(logical(LK))                                  :: isSorted
    9460             :         type(heapr_type)        , intent(in)                    :: method
    9461             :     end subroutine
    9462             : #endif
    9463             : 
    9464             : #if CK1_ENABLED
    9465             :     module subroutine setSortedArrCusComHeapr_D1_CK1(array, isSorted, method)
    9466             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9467             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_CK1
    9468             : #endif
    9469             :         use pm_kind, only: CKC => CK1
    9470             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9471             :         procedure(logical(LK))                                  :: isSorted
    9472             :         type(heapr_type)        , intent(in)                    :: method
    9473             :     end subroutine
    9474             : #endif
    9475             : 
    9476             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9477             : 
    9478             : #if RK5_ENABLED
    9479             :     module subroutine setSortedArrCusComHeapr_D1_RK5(array, isSorted, method)
    9480             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9481             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_RK5
    9482             : #endif
    9483             :         use pm_kind, only: RKC => RK5
    9484             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9485             :         procedure(logical(LK))                                  :: isSorted
    9486             :         type(heapr_type)        , intent(in)                    :: method
    9487             :     end subroutine
    9488             : #endif
    9489             : 
    9490             : #if RK4_ENABLED
    9491             :     module subroutine setSortedArrCusComHeapr_D1_RK4(array, isSorted, method)
    9492             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9493             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_RK4
    9494             : #endif
    9495             :         use pm_kind, only: RKC => RK4
    9496             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9497             :         procedure(logical(LK))                                  :: isSorted
    9498             :         type(heapr_type)        , intent(in)                    :: method
    9499             :     end subroutine
    9500             : #endif
    9501             : 
    9502             : #if RK3_ENABLED
    9503             :     module subroutine setSortedArrCusComHeapr_D1_RK3(array, isSorted, method)
    9504             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9505             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_RK3
    9506             : #endif
    9507             :         use pm_kind, only: RKC => RK3
    9508             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9509             :         procedure(logical(LK))                                  :: isSorted
    9510             :         type(heapr_type)        , intent(in)                    :: method
    9511             :     end subroutine
    9512             : #endif
    9513             : 
    9514             : #if RK2_ENABLED
    9515             :     module subroutine setSortedArrCusComHeapr_D1_RK2(array, isSorted, method)
    9516             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9517             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_RK2
    9518             : #endif
    9519             :         use pm_kind, only: RKC => RK2
    9520             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9521             :         procedure(logical(LK))                                  :: isSorted
    9522             :         type(heapr_type)        , intent(in)                    :: method
    9523             :     end subroutine
    9524             : #endif
    9525             : 
    9526             : #if RK1_ENABLED
    9527             :     module subroutine setSortedArrCusComHeapr_D1_RK1(array, isSorted, method)
    9528             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9529             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_RK1
    9530             : #endif
    9531             :         use pm_kind, only: RKC => RK1
    9532             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9533             :         procedure(logical(LK))                                  :: isSorted
    9534             :         type(heapr_type)        , intent(in)                    :: method
    9535             :     end subroutine
    9536             : #endif
    9537             : 
    9538             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9539             : 
    9540             : #if SK5_ENABLED
    9541             :     module subroutine setSortedArrCusComHeapr_D1_PSSK5(array, isSorted, method)
    9542             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9543             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_PSSK5
    9544             : #endif
    9545             :         use pm_kind, only: SKC => SK5
    9546             :         use pm_container, only: css_pdt
    9547             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9548             :         procedure(logical(LK))                                  :: isSorted
    9549             :         type(heapr_type)        , intent(in)                    :: method
    9550             :     end subroutine
    9551             : #endif
    9552             : 
    9553             : #if SK4_ENABLED
    9554             :     module subroutine setSortedArrCusComHeapr_D1_PSSK4(array, isSorted, method)
    9555             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9556             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_PSSK4
    9557             : #endif
    9558             :         use pm_kind, only: SKC => SK4
    9559             :         use pm_container, only: css_pdt
    9560             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9561             :         procedure(logical(LK))                                  :: isSorted
    9562             :         type(heapr_type)        , intent(in)                    :: method
    9563             :     end subroutine
    9564             : #endif
    9565             : 
    9566             : #if SK3_ENABLED
    9567             :     module subroutine setSortedArrCusComHeapr_D1_PSSK3(array, isSorted, method)
    9568             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9569             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_PSSK3
    9570             : #endif
    9571             :         use pm_kind, only: SKC => SK3
    9572             :         use pm_container, only: css_pdt
    9573             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9574             :         procedure(logical(LK))                                  :: isSorted
    9575             :         type(heapr_type)        , intent(in)                    :: method
    9576             :     end subroutine
    9577             : #endif
    9578             : 
    9579             : #if SK2_ENABLED
    9580             :     module subroutine setSortedArrCusComHeapr_D1_PSSK2(array, isSorted, method)
    9581             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9582             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_PSSK2
    9583             : #endif
    9584             :         use pm_kind, only: SKC => SK2
    9585             :         use pm_container, only: css_pdt
    9586             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9587             :         procedure(logical(LK))                                  :: isSorted
    9588             :         type(heapr_type)        , intent(in)                    :: method
    9589             :     end subroutine
    9590             : #endif
    9591             : 
    9592             : #if SK1_ENABLED
    9593             :     module subroutine setSortedArrCusComHeapr_D1_PSSK1(array, isSorted, method)
    9594             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9595             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_PSSK1
    9596             : #endif
    9597             :         use pm_kind, only: SKC => SK1
    9598             :         use pm_container, only: css_pdt
    9599             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
    9600             :         procedure(logical(LK))                                  :: isSorted
    9601             :         type(heapr_type)        , intent(in)                    :: method
    9602             :     end subroutine
    9603             : #endif
    9604             : 
    9605             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9606             : 
    9607             :     module subroutine setSortedArrCusComHeapr_D1_BSSK(array, isSorted, method)
    9608             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9609             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComHeapr_D1_BSSK
    9610             : #endif
    9611             :         use pm_kind, only: SKC => SK
    9612             :         use pm_container, only: css_type
    9613             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
    9614             :         procedure(logical(LK))                                  :: isSorted
    9615             :         type(heapr_type)        , intent(in)                    :: method
    9616             :     end subroutine
    9617             : 
    9618             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9619             : 
    9620             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9621             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9622             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9623             : 
    9624             :     end interface
    9625             : 
    9626             :     ! setSortedArrCusComInsertionl
    9627             : 
    9628             :     interface setSorted
    9629             : 
    9630             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9631             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9632             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9633             : 
    9634             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9635             : 
    9636             : #if SK5_ENABLED
    9637             :     module subroutine setSortedArrCusComInsertionl_D0_SK5(array, isSorted, method)
    9638             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9639             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D0_SK5
    9640             : #endif
    9641             :         use pm_kind, only: SKC => SK5
    9642             :         character(*,SKC)        , intent(inout)                 :: array
    9643             :         procedure(logical(LK))                                  :: isSorted
    9644             :         type(insertionl_type)   , intent(in)                    :: method
    9645             :     end subroutine
    9646             : #endif
    9647             : 
    9648             : #if SK4_ENABLED
    9649             :     module subroutine setSortedArrCusComInsertionl_D0_SK4(array, isSorted, method)
    9650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9651             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D0_SK4
    9652             : #endif
    9653             :         use pm_kind, only: SKC => SK4
    9654             :         character(*,SKC)        , intent(inout)                 :: array
    9655             :         procedure(logical(LK))                                  :: isSorted
    9656             :         type(insertionl_type)   , intent(in)                    :: method
    9657             :     end subroutine
    9658             : #endif
    9659             : 
    9660             : #if SK3_ENABLED
    9661             :     module subroutine setSortedArrCusComInsertionl_D0_SK3(array, isSorted, method)
    9662             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9663             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D0_SK3
    9664             : #endif
    9665             :         use pm_kind, only: SKC => SK3
    9666             :         character(*,SKC)        , intent(inout)                 :: array
    9667             :         procedure(logical(LK))                                  :: isSorted
    9668             :         type(insertionl_type)   , intent(in)                    :: method
    9669             :     end subroutine
    9670             : #endif
    9671             : 
    9672             : #if SK2_ENABLED
    9673             :     module subroutine setSortedArrCusComInsertionl_D0_SK2(array, isSorted, method)
    9674             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9675             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D0_SK2
    9676             : #endif
    9677             :         use pm_kind, only: SKC => SK2
    9678             :         character(*,SKC)        , intent(inout)                 :: array
    9679             :         procedure(logical(LK))                                  :: isSorted
    9680             :         type(insertionl_type)   , intent(in)                    :: method
    9681             :     end subroutine
    9682             : #endif
    9683             : 
    9684             : #if SK1_ENABLED
    9685             :     module subroutine setSortedArrCusComInsertionl_D0_SK1(array, isSorted, method)
    9686             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9687             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D0_SK1
    9688             : #endif
    9689             :         use pm_kind, only: SKC => SK1
    9690             :         character(*,SKC)        , intent(inout)                 :: array
    9691             :         procedure(logical(LK))                                  :: isSorted
    9692             :         type(insertionl_type)   , intent(in)                    :: method
    9693             :     end subroutine
    9694             : #endif
    9695             : 
    9696             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9697             : 
    9698             : #if SK5_ENABLED
    9699             :     module subroutine setSortedArrCusComInsertionl_D1_SK5(array, isSorted, method)
    9700             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9701             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_SK5
    9702             : #endif
    9703             :         use pm_kind, only: SKC => SK5
    9704             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9705             :         procedure(logical(LK))                                  :: isSorted
    9706             :         type(insertionl_type)   , intent(in)                    :: method
    9707             :     end subroutine
    9708             : #endif
    9709             : 
    9710             : #if SK4_ENABLED
    9711             :     module subroutine setSortedArrCusComInsertionl_D1_SK4(array, isSorted, method)
    9712             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9713             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_SK4
    9714             : #endif
    9715             :         use pm_kind, only: SKC => SK4
    9716             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9717             :         procedure(logical(LK))                                  :: isSorted
    9718             :         type(insertionl_type)   , intent(in)                    :: method
    9719             :     end subroutine
    9720             : #endif
    9721             : 
    9722             : #if SK3_ENABLED
    9723             :     module subroutine setSortedArrCusComInsertionl_D1_SK3(array, isSorted, method)
    9724             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9725             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_SK3
    9726             : #endif
    9727             :         use pm_kind, only: SKC => SK3
    9728             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9729             :         procedure(logical(LK))                                  :: isSorted
    9730             :         type(insertionl_type)   , intent(in)                    :: method
    9731             :     end subroutine
    9732             : #endif
    9733             : 
    9734             : #if SK2_ENABLED
    9735             :     module subroutine setSortedArrCusComInsertionl_D1_SK2(array, isSorted, method)
    9736             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9737             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_SK2
    9738             : #endif
    9739             :         use pm_kind, only: SKC => SK2
    9740             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9741             :         procedure(logical(LK))                                  :: isSorted
    9742             :         type(insertionl_type)   , intent(in)                    :: method
    9743             :     end subroutine
    9744             : #endif
    9745             : 
    9746             : #if SK1_ENABLED
    9747             :     module subroutine setSortedArrCusComInsertionl_D1_SK1(array, isSorted, method)
    9748             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9749             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_SK1
    9750             : #endif
    9751             :         use pm_kind, only: SKC => SK1
    9752             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
    9753             :         procedure(logical(LK))                                  :: isSorted
    9754             :         type(insertionl_type)   , intent(in)                    :: method
    9755             :     end subroutine
    9756             : #endif
    9757             : 
    9758             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9759             : 
    9760             : #if IK5_ENABLED
    9761             :     module subroutine setSortedArrCusComInsertionl_D1_IK5(array, isSorted, method)
    9762             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9763             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_IK5
    9764             : #endif
    9765             :         use pm_kind, only: IKC => IK5
    9766             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9767             :         procedure(logical(LK))                                  :: isSorted
    9768             :         type(insertionl_type)   , intent(in)                    :: method
    9769             :     end subroutine
    9770             : #endif
    9771             : 
    9772             : #if IK4_ENABLED
    9773             :     module subroutine setSortedArrCusComInsertionl_D1_IK4(array, isSorted, method)
    9774             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9775             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_IK4
    9776             : #endif
    9777             :         use pm_kind, only: IKC => IK4
    9778             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9779             :         procedure(logical(LK))                                  :: isSorted
    9780             :         type(insertionl_type)   , intent(in)                    :: method
    9781             :     end subroutine
    9782             : #endif
    9783             : 
    9784             : #if IK3_ENABLED
    9785             :     module subroutine setSortedArrCusComInsertionl_D1_IK3(array, isSorted, method)
    9786             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9787             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_IK3
    9788             : #endif
    9789             :         use pm_kind, only: IKC => IK3
    9790             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9791             :         procedure(logical(LK))                                  :: isSorted
    9792             :         type(insertionl_type)   , intent(in)                    :: method
    9793             :     end subroutine
    9794             : #endif
    9795             : 
    9796             : #if IK2_ENABLED
    9797             :     module subroutine setSortedArrCusComInsertionl_D1_IK2(array, isSorted, method)
    9798             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9799             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_IK2
    9800             : #endif
    9801             :         use pm_kind, only: IKC => IK2
    9802             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9803             :         procedure(logical(LK))                                  :: isSorted
    9804             :         type(insertionl_type)   , intent(in)                    :: method
    9805             :     end subroutine
    9806             : #endif
    9807             : 
    9808             : #if IK1_ENABLED
    9809             :     module subroutine setSortedArrCusComInsertionl_D1_IK1(array, isSorted, method)
    9810             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9811             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_IK1
    9812             : #endif
    9813             :         use pm_kind, only: IKC => IK1
    9814             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
    9815             :         procedure(logical(LK))                                  :: isSorted
    9816             :         type(insertionl_type)   , intent(in)                    :: method
    9817             :     end subroutine
    9818             : #endif
    9819             : 
    9820             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9821             : 
    9822             : #if LK5_ENABLED
    9823             :     module subroutine setSortedArrCusComInsertionl_D1_LK5(array, isSorted, method)
    9824             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9825             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_LK5
    9826             : #endif
    9827             :         use pm_kind, only: LKC => LK5
    9828             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9829             :         procedure(logical(LK))                                  :: isSorted
    9830             :         type(insertionl_type)   , intent(in)                    :: method
    9831             :     end subroutine
    9832             : #endif
    9833             : 
    9834             : #if LK4_ENABLED
    9835             :     module subroutine setSortedArrCusComInsertionl_D1_LK4(array, isSorted, method)
    9836             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9837             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_LK4
    9838             : #endif
    9839             :         use pm_kind, only: LKC => LK4
    9840             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9841             :         procedure(logical(LK))                                  :: isSorted
    9842             :         type(insertionl_type)   , intent(in)                    :: method
    9843             :     end subroutine
    9844             : #endif
    9845             : 
    9846             : #if LK3_ENABLED
    9847             :     module subroutine setSortedArrCusComInsertionl_D1_LK3(array, isSorted, method)
    9848             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9849             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_LK3
    9850             : #endif
    9851             :         use pm_kind, only: LKC => LK3
    9852             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9853             :         procedure(logical(LK))                                  :: isSorted
    9854             :         type(insertionl_type)   , intent(in)                    :: method
    9855             :     end subroutine
    9856             : #endif
    9857             : 
    9858             : #if LK2_ENABLED
    9859             :     module subroutine setSortedArrCusComInsertionl_D1_LK2(array, isSorted, method)
    9860             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9861             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_LK2
    9862             : #endif
    9863             :         use pm_kind, only: LKC => LK2
    9864             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9865             :         procedure(logical(LK))                                  :: isSorted
    9866             :         type(insertionl_type)   , intent(in)                    :: method
    9867             :     end subroutine
    9868             : #endif
    9869             : 
    9870             : #if LK1_ENABLED
    9871             :     module subroutine setSortedArrCusComInsertionl_D1_LK1(array, isSorted, method)
    9872             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9873             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_LK1
    9874             : #endif
    9875             :         use pm_kind, only: LKC => LK1
    9876             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
    9877             :         procedure(logical(LK))                                  :: isSorted
    9878             :         type(insertionl_type)   , intent(in)                    :: method
    9879             :     end subroutine
    9880             : #endif
    9881             : 
    9882             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9883             : 
    9884             : #if CK5_ENABLED
    9885             :     module subroutine setSortedArrCusComInsertionl_D1_CK5(array, isSorted, method)
    9886             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9887             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_CK5
    9888             : #endif
    9889             :         use pm_kind, only: CKC => CK5
    9890             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9891             :         procedure(logical(LK))                                  :: isSorted
    9892             :         type(insertionl_type)   , intent(in)                    :: method
    9893             :     end subroutine
    9894             : #endif
    9895             : 
    9896             : #if CK4_ENABLED
    9897             :     module subroutine setSortedArrCusComInsertionl_D1_CK4(array, isSorted, method)
    9898             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9899             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_CK4
    9900             : #endif
    9901             :         use pm_kind, only: CKC => CK4
    9902             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9903             :         procedure(logical(LK))                                  :: isSorted
    9904             :         type(insertionl_type)   , intent(in)                    :: method
    9905             :     end subroutine
    9906             : #endif
    9907             : 
    9908             : #if CK3_ENABLED
    9909             :     module subroutine setSortedArrCusComInsertionl_D1_CK3(array, isSorted, method)
    9910             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9911             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_CK3
    9912             : #endif
    9913             :         use pm_kind, only: CKC => CK3
    9914             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9915             :         procedure(logical(LK))                                  :: isSorted
    9916             :         type(insertionl_type)   , intent(in)                    :: method
    9917             :     end subroutine
    9918             : #endif
    9919             : 
    9920             : #if CK2_ENABLED
    9921             :     module subroutine setSortedArrCusComInsertionl_D1_CK2(array, isSorted, method)
    9922             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9923             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_CK2
    9924             : #endif
    9925             :         use pm_kind, only: CKC => CK2
    9926             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9927             :         procedure(logical(LK))                                  :: isSorted
    9928             :         type(insertionl_type)   , intent(in)                    :: method
    9929             :     end subroutine
    9930             : #endif
    9931             : 
    9932             : #if CK1_ENABLED
    9933             :     module subroutine setSortedArrCusComInsertionl_D1_CK1(array, isSorted, method)
    9934             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9935             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_CK1
    9936             : #endif
    9937             :         use pm_kind, only: CKC => CK1
    9938             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
    9939             :         procedure(logical(LK))                                  :: isSorted
    9940             :         type(insertionl_type)   , intent(in)                    :: method
    9941             :     end subroutine
    9942             : #endif
    9943             : 
    9944             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    9945             : 
    9946             : #if RK5_ENABLED
    9947             :     module subroutine setSortedArrCusComInsertionl_D1_RK5(array, isSorted, method)
    9948             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9949             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_RK5
    9950             : #endif
    9951             :         use pm_kind, only: RKC => RK5
    9952             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9953             :         procedure(logical(LK))                                  :: isSorted
    9954             :         type(insertionl_type)   , intent(in)                    :: method
    9955             :     end subroutine
    9956             : #endif
    9957             : 
    9958             : #if RK4_ENABLED
    9959             :     module subroutine setSortedArrCusComInsertionl_D1_RK4(array, isSorted, method)
    9960             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9961             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_RK4
    9962             : #endif
    9963             :         use pm_kind, only: RKC => RK4
    9964             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9965             :         procedure(logical(LK))                                  :: isSorted
    9966             :         type(insertionl_type)   , intent(in)                    :: method
    9967             :     end subroutine
    9968             : #endif
    9969             : 
    9970             : #if RK3_ENABLED
    9971             :     module subroutine setSortedArrCusComInsertionl_D1_RK3(array, isSorted, method)
    9972             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9973             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_RK3
    9974             : #endif
    9975             :         use pm_kind, only: RKC => RK3
    9976             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9977             :         procedure(logical(LK))                                  :: isSorted
    9978             :         type(insertionl_type)   , intent(in)                    :: method
    9979             :     end subroutine
    9980             : #endif
    9981             : 
    9982             : #if RK2_ENABLED
    9983             :     module subroutine setSortedArrCusComInsertionl_D1_RK2(array, isSorted, method)
    9984             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9985             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_RK2
    9986             : #endif
    9987             :         use pm_kind, only: RKC => RK2
    9988             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
    9989             :         procedure(logical(LK))                                  :: isSorted
    9990             :         type(insertionl_type)   , intent(in)                    :: method
    9991             :     end subroutine
    9992             : #endif
    9993             : 
    9994             : #if RK1_ENABLED
    9995             :     module subroutine setSortedArrCusComInsertionl_D1_RK1(array, isSorted, method)
    9996             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
    9997             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_RK1
    9998             : #endif
    9999             :         use pm_kind, only: RKC => RK1
   10000             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10001             :         procedure(logical(LK))                                  :: isSorted
   10002             :         type(insertionl_type)   , intent(in)                    :: method
   10003             :     end subroutine
   10004             : #endif
   10005             : 
   10006             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10007             : 
   10008             : #if SK5_ENABLED
   10009             :     module subroutine setSortedArrCusComInsertionl_D1_PSSK5(array, isSorted, method)
   10010             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10011             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_PSSK5
   10012             : #endif
   10013             :         use pm_kind, only: SKC => SK5
   10014             :         use pm_container, only: css_pdt
   10015             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10016             :         procedure(logical(LK))                                  :: isSorted
   10017             :         type(insertionl_type)   , intent(in)                    :: method
   10018             :     end subroutine
   10019             : #endif
   10020             : 
   10021             : #if SK4_ENABLED
   10022             :     module subroutine setSortedArrCusComInsertionl_D1_PSSK4(array, isSorted, method)
   10023             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10024             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_PSSK4
   10025             : #endif
   10026             :         use pm_kind, only: SKC => SK4
   10027             :         use pm_container, only: css_pdt
   10028             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10029             :         procedure(logical(LK))                                  :: isSorted
   10030             :         type(insertionl_type)   , intent(in)                    :: method
   10031             :     end subroutine
   10032             : #endif
   10033             : 
   10034             : #if SK3_ENABLED
   10035             :     module subroutine setSortedArrCusComInsertionl_D1_PSSK3(array, isSorted, method)
   10036             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10037             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_PSSK3
   10038             : #endif
   10039             :         use pm_kind, only: SKC => SK3
   10040             :         use pm_container, only: css_pdt
   10041             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10042             :         procedure(logical(LK))                                  :: isSorted
   10043             :         type(insertionl_type)   , intent(in)                    :: method
   10044             :     end subroutine
   10045             : #endif
   10046             : 
   10047             : #if SK2_ENABLED
   10048             :     module subroutine setSortedArrCusComInsertionl_D1_PSSK2(array, isSorted, method)
   10049             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10050             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_PSSK2
   10051             : #endif
   10052             :         use pm_kind, only: SKC => SK2
   10053             :         use pm_container, only: css_pdt
   10054             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10055             :         procedure(logical(LK))                                  :: isSorted
   10056             :         type(insertionl_type)   , intent(in)                    :: method
   10057             :     end subroutine
   10058             : #endif
   10059             : 
   10060             : #if SK1_ENABLED
   10061             :     module subroutine setSortedArrCusComInsertionl_D1_PSSK1(array, isSorted, method)
   10062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10063             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_PSSK1
   10064             : #endif
   10065             :         use pm_kind, only: SKC => SK1
   10066             :         use pm_container, only: css_pdt
   10067             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10068             :         procedure(logical(LK))                                  :: isSorted
   10069             :         type(insertionl_type)   , intent(in)                    :: method
   10070             :     end subroutine
   10071             : #endif
   10072             : 
   10073             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10074             : 
   10075             :     module subroutine setSortedArrCusComInsertionl_D1_BSSK(array, isSorted, method)
   10076             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10077             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionl_D1_BSSK
   10078             : #endif
   10079             :         use pm_kind, only: SKC => SK
   10080             :         use pm_container, only: css_type
   10081             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   10082             :         procedure(logical(LK))                                  :: isSorted
   10083             :         type(insertionl_type)   , intent(in)                    :: method
   10084             :     end subroutine
   10085             : 
   10086             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10087             : 
   10088             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10089             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10090             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10091             : 
   10092             :     end interface
   10093             : 
   10094             :     ! setSortedArrCusComInsertionb
   10095             : 
   10096             :     interface setSorted
   10097             : 
   10098             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10099             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10100             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10101             : 
   10102             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10103             : 
   10104             : #if SK5_ENABLED
   10105             :     module subroutine setSortedArrCusComInsertionb_D0_SK5(array, isSorted, method)
   10106             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10107             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D0_SK5
   10108             : #endif
   10109             :         use pm_kind, only: SKC => SK5
   10110             :         character(*,SKC)        , intent(inout)                 :: array
   10111             :         procedure(logical(LK))                                  :: isSorted
   10112             :         type(insertionb_type)   , intent(in)                    :: method
   10113             :     end subroutine
   10114             : #endif
   10115             : 
   10116             : #if SK4_ENABLED
   10117             :     module subroutine setSortedArrCusComInsertionb_D0_SK4(array, isSorted, method)
   10118             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10119             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D0_SK4
   10120             : #endif
   10121             :         use pm_kind, only: SKC => SK4
   10122             :         character(*,SKC)        , intent(inout)                 :: array
   10123             :         procedure(logical(LK))                                  :: isSorted
   10124             :         type(insertionb_type)   , intent(in)                    :: method
   10125             :     end subroutine
   10126             : #endif
   10127             : 
   10128             : #if SK3_ENABLED
   10129             :     module subroutine setSortedArrCusComInsertionb_D0_SK3(array, isSorted, method)
   10130             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10131             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D0_SK3
   10132             : #endif
   10133             :         use pm_kind, only: SKC => SK3
   10134             :         character(*,SKC)        , intent(inout)                 :: array
   10135             :         procedure(logical(LK))                                  :: isSorted
   10136             :         type(insertionb_type)   , intent(in)                    :: method
   10137             :     end subroutine
   10138             : #endif
   10139             : 
   10140             : #if SK2_ENABLED
   10141             :     module subroutine setSortedArrCusComInsertionb_D0_SK2(array, isSorted, method)
   10142             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10143             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D0_SK2
   10144             : #endif
   10145             :         use pm_kind, only: SKC => SK2
   10146             :         character(*,SKC)        , intent(inout)                 :: array
   10147             :         procedure(logical(LK))                                  :: isSorted
   10148             :         type(insertionb_type)   , intent(in)                    :: method
   10149             :     end subroutine
   10150             : #endif
   10151             : 
   10152             : #if SK1_ENABLED
   10153             :     module subroutine setSortedArrCusComInsertionb_D0_SK1(array, isSorted, method)
   10154             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10155             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D0_SK1
   10156             : #endif
   10157             :         use pm_kind, only: SKC => SK1
   10158             :         character(*,SKC)        , intent(inout)                 :: array
   10159             :         procedure(logical(LK))                                  :: isSorted
   10160             :         type(insertionb_type)   , intent(in)                    :: method
   10161             :     end subroutine
   10162             : #endif
   10163             : 
   10164             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10165             : 
   10166             : #if SK5_ENABLED
   10167             :     module subroutine setSortedArrCusComInsertionb_D1_SK5(array, isSorted, method)
   10168             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10169             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_SK5
   10170             : #endif
   10171             :         use pm_kind, only: SKC => SK5
   10172             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10173             :         procedure(logical(LK))                                  :: isSorted
   10174             :         type(insertionb_type)   , intent(in)                    :: method
   10175             :     end subroutine
   10176             : #endif
   10177             : 
   10178             : #if SK4_ENABLED
   10179             :     module subroutine setSortedArrCusComInsertionb_D1_SK4(array, isSorted, method)
   10180             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10181             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_SK4
   10182             : #endif
   10183             :         use pm_kind, only: SKC => SK4
   10184             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10185             :         procedure(logical(LK))                                  :: isSorted
   10186             :         type(insertionb_type)   , intent(in)                    :: method
   10187             :     end subroutine
   10188             : #endif
   10189             : 
   10190             : #if SK3_ENABLED
   10191             :     module subroutine setSortedArrCusComInsertionb_D1_SK3(array, isSorted, method)
   10192             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10193             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_SK3
   10194             : #endif
   10195             :         use pm_kind, only: SKC => SK3
   10196             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10197             :         procedure(logical(LK))                                  :: isSorted
   10198             :         type(insertionb_type)   , intent(in)                    :: method
   10199             :     end subroutine
   10200             : #endif
   10201             : 
   10202             : #if SK2_ENABLED
   10203             :     module subroutine setSortedArrCusComInsertionb_D1_SK2(array, isSorted, method)
   10204             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10205             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_SK2
   10206             : #endif
   10207             :         use pm_kind, only: SKC => SK2
   10208             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10209             :         procedure(logical(LK))                                  :: isSorted
   10210             :         type(insertionb_type)   , intent(in)                    :: method
   10211             :     end subroutine
   10212             : #endif
   10213             : 
   10214             : #if SK1_ENABLED
   10215             :     module subroutine setSortedArrCusComInsertionb_D1_SK1(array, isSorted, method)
   10216             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10217             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_SK1
   10218             : #endif
   10219             :         use pm_kind, only: SKC => SK1
   10220             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10221             :         procedure(logical(LK))                                  :: isSorted
   10222             :         type(insertionb_type)   , intent(in)                    :: method
   10223             :     end subroutine
   10224             : #endif
   10225             : 
   10226             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10227             : 
   10228             : #if IK5_ENABLED
   10229             :     module subroutine setSortedArrCusComInsertionb_D1_IK5(array, isSorted, method)
   10230             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10231             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_IK5
   10232             : #endif
   10233             :         use pm_kind, only: IKC => IK5
   10234             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10235             :         procedure(logical(LK))                                  :: isSorted
   10236             :         type(insertionb_type)   , intent(in)                    :: method
   10237             :     end subroutine
   10238             : #endif
   10239             : 
   10240             : #if IK4_ENABLED
   10241             :     module subroutine setSortedArrCusComInsertionb_D1_IK4(array, isSorted, method)
   10242             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10243             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_IK4
   10244             : #endif
   10245             :         use pm_kind, only: IKC => IK4
   10246             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10247             :         procedure(logical(LK))                                  :: isSorted
   10248             :         type(insertionb_type)   , intent(in)                    :: method
   10249             :     end subroutine
   10250             : #endif
   10251             : 
   10252             : #if IK3_ENABLED
   10253             :     module subroutine setSortedArrCusComInsertionb_D1_IK3(array, isSorted, method)
   10254             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10255             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_IK3
   10256             : #endif
   10257             :         use pm_kind, only: IKC => IK3
   10258             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10259             :         procedure(logical(LK))                                  :: isSorted
   10260             :         type(insertionb_type)   , intent(in)                    :: method
   10261             :     end subroutine
   10262             : #endif
   10263             : 
   10264             : #if IK2_ENABLED
   10265             :     module subroutine setSortedArrCusComInsertionb_D1_IK2(array, isSorted, method)
   10266             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10267             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_IK2
   10268             : #endif
   10269             :         use pm_kind, only: IKC => IK2
   10270             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10271             :         procedure(logical(LK))                                  :: isSorted
   10272             :         type(insertionb_type)   , intent(in)                    :: method
   10273             :     end subroutine
   10274             : #endif
   10275             : 
   10276             : #if IK1_ENABLED
   10277             :     module subroutine setSortedArrCusComInsertionb_D1_IK1(array, isSorted, method)
   10278             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10279             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_IK1
   10280             : #endif
   10281             :         use pm_kind, only: IKC => IK1
   10282             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10283             :         procedure(logical(LK))                                  :: isSorted
   10284             :         type(insertionb_type)   , intent(in)                    :: method
   10285             :     end subroutine
   10286             : #endif
   10287             : 
   10288             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10289             : 
   10290             : #if LK5_ENABLED
   10291             :     module subroutine setSortedArrCusComInsertionb_D1_LK5(array, isSorted, method)
   10292             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10293             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_LK5
   10294             : #endif
   10295             :         use pm_kind, only: LKC => LK5
   10296             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10297             :         procedure(logical(LK))                                  :: isSorted
   10298             :         type(insertionb_type)   , intent(in)                    :: method
   10299             :     end subroutine
   10300             : #endif
   10301             : 
   10302             : #if LK4_ENABLED
   10303             :     module subroutine setSortedArrCusComInsertionb_D1_LK4(array, isSorted, method)
   10304             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10305             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_LK4
   10306             : #endif
   10307             :         use pm_kind, only: LKC => LK4
   10308             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10309             :         procedure(logical(LK))                                  :: isSorted
   10310             :         type(insertionb_type)   , intent(in)                    :: method
   10311             :     end subroutine
   10312             : #endif
   10313             : 
   10314             : #if LK3_ENABLED
   10315             :     module subroutine setSortedArrCusComInsertionb_D1_LK3(array, isSorted, method)
   10316             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10317             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_LK3
   10318             : #endif
   10319             :         use pm_kind, only: LKC => LK3
   10320             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10321             :         procedure(logical(LK))                                  :: isSorted
   10322             :         type(insertionb_type)   , intent(in)                    :: method
   10323             :     end subroutine
   10324             : #endif
   10325             : 
   10326             : #if LK2_ENABLED
   10327             :     module subroutine setSortedArrCusComInsertionb_D1_LK2(array, isSorted, method)
   10328             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10329             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_LK2
   10330             : #endif
   10331             :         use pm_kind, only: LKC => LK2
   10332             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10333             :         procedure(logical(LK))                                  :: isSorted
   10334             :         type(insertionb_type)   , intent(in)                    :: method
   10335             :     end subroutine
   10336             : #endif
   10337             : 
   10338             : #if LK1_ENABLED
   10339             :     module subroutine setSortedArrCusComInsertionb_D1_LK1(array, isSorted, method)
   10340             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10341             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_LK1
   10342             : #endif
   10343             :         use pm_kind, only: LKC => LK1
   10344             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10345             :         procedure(logical(LK))                                  :: isSorted
   10346             :         type(insertionb_type)   , intent(in)                    :: method
   10347             :     end subroutine
   10348             : #endif
   10349             : 
   10350             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10351             : 
   10352             : #if CK5_ENABLED
   10353             :     module subroutine setSortedArrCusComInsertionb_D1_CK5(array, isSorted, method)
   10354             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10355             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_CK5
   10356             : #endif
   10357             :         use pm_kind, only: CKC => CK5
   10358             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10359             :         procedure(logical(LK))                                  :: isSorted
   10360             :         type(insertionb_type)   , intent(in)                    :: method
   10361             :     end subroutine
   10362             : #endif
   10363             : 
   10364             : #if CK4_ENABLED
   10365             :     module subroutine setSortedArrCusComInsertionb_D1_CK4(array, isSorted, method)
   10366             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10367             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_CK4
   10368             : #endif
   10369             :         use pm_kind, only: CKC => CK4
   10370             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10371             :         procedure(logical(LK))                                  :: isSorted
   10372             :         type(insertionb_type)   , intent(in)                    :: method
   10373             :     end subroutine
   10374             : #endif
   10375             : 
   10376             : #if CK3_ENABLED
   10377             :     module subroutine setSortedArrCusComInsertionb_D1_CK3(array, isSorted, method)
   10378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10379             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_CK3
   10380             : #endif
   10381             :         use pm_kind, only: CKC => CK3
   10382             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10383             :         procedure(logical(LK))                                  :: isSorted
   10384             :         type(insertionb_type)   , intent(in)                    :: method
   10385             :     end subroutine
   10386             : #endif
   10387             : 
   10388             : #if CK2_ENABLED
   10389             :     module subroutine setSortedArrCusComInsertionb_D1_CK2(array, isSorted, method)
   10390             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10391             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_CK2
   10392             : #endif
   10393             :         use pm_kind, only: CKC => CK2
   10394             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10395             :         procedure(logical(LK))                                  :: isSorted
   10396             :         type(insertionb_type)   , intent(in)                    :: method
   10397             :     end subroutine
   10398             : #endif
   10399             : 
   10400             : #if CK1_ENABLED
   10401             :     module subroutine setSortedArrCusComInsertionb_D1_CK1(array, isSorted, method)
   10402             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10403             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_CK1
   10404             : #endif
   10405             :         use pm_kind, only: CKC => CK1
   10406             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10407             :         procedure(logical(LK))                                  :: isSorted
   10408             :         type(insertionb_type)   , intent(in)                    :: method
   10409             :     end subroutine
   10410             : #endif
   10411             : 
   10412             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10413             : 
   10414             : #if RK5_ENABLED
   10415             :     module subroutine setSortedArrCusComInsertionb_D1_RK5(array, isSorted, method)
   10416             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10417             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_RK5
   10418             : #endif
   10419             :         use pm_kind, only: RKC => RK5
   10420             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10421             :         procedure(logical(LK))                                  :: isSorted
   10422             :         type(insertionb_type)   , intent(in)                    :: method
   10423             :     end subroutine
   10424             : #endif
   10425             : 
   10426             : #if RK4_ENABLED
   10427             :     module subroutine setSortedArrCusComInsertionb_D1_RK4(array, isSorted, method)
   10428             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10429             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_RK4
   10430             : #endif
   10431             :         use pm_kind, only: RKC => RK4
   10432             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10433             :         procedure(logical(LK))                                  :: isSorted
   10434             :         type(insertionb_type)   , intent(in)                    :: method
   10435             :     end subroutine
   10436             : #endif
   10437             : 
   10438             : #if RK3_ENABLED
   10439             :     module subroutine setSortedArrCusComInsertionb_D1_RK3(array, isSorted, method)
   10440             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10441             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_RK3
   10442             : #endif
   10443             :         use pm_kind, only: RKC => RK3
   10444             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10445             :         procedure(logical(LK))                                  :: isSorted
   10446             :         type(insertionb_type)   , intent(in)                    :: method
   10447             :     end subroutine
   10448             : #endif
   10449             : 
   10450             : #if RK2_ENABLED
   10451             :     module subroutine setSortedArrCusComInsertionb_D1_RK2(array, isSorted, method)
   10452             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10453             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_RK2
   10454             : #endif
   10455             :         use pm_kind, only: RKC => RK2
   10456             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10457             :         procedure(logical(LK))                                  :: isSorted
   10458             :         type(insertionb_type)   , intent(in)                    :: method
   10459             :     end subroutine
   10460             : #endif
   10461             : 
   10462             : #if RK1_ENABLED
   10463             :     module subroutine setSortedArrCusComInsertionb_D1_RK1(array, isSorted, method)
   10464             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10465             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_RK1
   10466             : #endif
   10467             :         use pm_kind, only: RKC => RK1
   10468             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10469             :         procedure(logical(LK))                                  :: isSorted
   10470             :         type(insertionb_type)   , intent(in)                    :: method
   10471             :     end subroutine
   10472             : #endif
   10473             : 
   10474             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10475             : 
   10476             : #if SK5_ENABLED
   10477             :     module subroutine setSortedArrCusComInsertionb_D1_PSSK5(array, isSorted, method)
   10478             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10479             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_PSSK5
   10480             : #endif
   10481             :         use pm_kind, only: SKC => SK5
   10482             :         use pm_container, only: css_pdt
   10483             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10484             :         procedure(logical(LK))                                  :: isSorted
   10485             :         type(insertionb_type)   , intent(in)                    :: method
   10486             :     end subroutine
   10487             : #endif
   10488             : 
   10489             : #if SK4_ENABLED
   10490             :     module subroutine setSortedArrCusComInsertionb_D1_PSSK4(array, isSorted, method)
   10491             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10492             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_PSSK4
   10493             : #endif
   10494             :         use pm_kind, only: SKC => SK4
   10495             :         use pm_container, only: css_pdt
   10496             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10497             :         procedure(logical(LK))                                  :: isSorted
   10498             :         type(insertionb_type)   , intent(in)                    :: method
   10499             :     end subroutine
   10500             : #endif
   10501             : 
   10502             : #if SK3_ENABLED
   10503             :     module subroutine setSortedArrCusComInsertionb_D1_PSSK3(array, isSorted, method)
   10504             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10505             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_PSSK3
   10506             : #endif
   10507             :         use pm_kind, only: SKC => SK3
   10508             :         use pm_container, only: css_pdt
   10509             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10510             :         procedure(logical(LK))                                  :: isSorted
   10511             :         type(insertionb_type)   , intent(in)                    :: method
   10512             :     end subroutine
   10513             : #endif
   10514             : 
   10515             : #if SK2_ENABLED
   10516             :     module subroutine setSortedArrCusComInsertionb_D1_PSSK2(array, isSorted, method)
   10517             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10518             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_PSSK2
   10519             : #endif
   10520             :         use pm_kind, only: SKC => SK2
   10521             :         use pm_container, only: css_pdt
   10522             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10523             :         procedure(logical(LK))                                  :: isSorted
   10524             :         type(insertionb_type)   , intent(in)                    :: method
   10525             :     end subroutine
   10526             : #endif
   10527             : 
   10528             : #if SK1_ENABLED
   10529             :     module subroutine setSortedArrCusComInsertionb_D1_PSSK1(array, isSorted, method)
   10530             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10531             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_PSSK1
   10532             : #endif
   10533             :         use pm_kind, only: SKC => SK1
   10534             :         use pm_container, only: css_pdt
   10535             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10536             :         procedure(logical(LK))                                  :: isSorted
   10537             :         type(insertionb_type)   , intent(in)                    :: method
   10538             :     end subroutine
   10539             : #endif
   10540             : 
   10541             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10542             : 
   10543             :     module subroutine setSortedArrCusComInsertionb_D1_BSSK(array, isSorted, method)
   10544             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10545             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComInsertionb_D1_BSSK
   10546             : #endif
   10547             :         use pm_kind, only: SKC => SK
   10548             :         use pm_container, only: css_type
   10549             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   10550             :         procedure(logical(LK))                                  :: isSorted
   10551             :         type(insertionb_type)   , intent(in)                    :: method
   10552             :     end subroutine
   10553             : 
   10554             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10555             : 
   10556             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10557             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10558             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10559             : 
   10560             :     end interface
   10561             : 
   10562             :     ! setSortedArrCusComMerger
   10563             : 
   10564             :     interface setSorted
   10565             : 
   10566             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10567             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10568             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10569             : 
   10570             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10571             : 
   10572             : #if SK5_ENABLED
   10573             :     recursive module subroutine setSortedArrCusComMerger_D0_SK5(array, isSorted, method)
   10574             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10575             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D0_SK5
   10576             : #endif
   10577             :         use pm_kind, only: SKC => SK5
   10578             :         character(*,SKC)        , intent(inout)                 :: array
   10579             :         procedure(logical(LK))                                  :: isSorted
   10580             :         type(merger_type)       , intent(in)                    :: method
   10581             :     end subroutine
   10582             : #endif
   10583             : 
   10584             : #if SK4_ENABLED
   10585             :     recursive module subroutine setSortedArrCusComMerger_D0_SK4(array, isSorted, method)
   10586             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10587             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D0_SK4
   10588             : #endif
   10589             :         use pm_kind, only: SKC => SK4
   10590             :         character(*,SKC)        , intent(inout)                 :: array
   10591             :         procedure(logical(LK))                                  :: isSorted
   10592             :         type(merger_type)       , intent(in)                    :: method
   10593             :     end subroutine
   10594             : #endif
   10595             : 
   10596             : #if SK3_ENABLED
   10597             :     recursive module subroutine setSortedArrCusComMerger_D0_SK3(array, isSorted, method)
   10598             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10599             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D0_SK3
   10600             : #endif
   10601             :         use pm_kind, only: SKC => SK3
   10602             :         character(*,SKC)        , intent(inout)                 :: array
   10603             :         procedure(logical(LK))                                  :: isSorted
   10604             :         type(merger_type)       , intent(in)                    :: method
   10605             :     end subroutine
   10606             : #endif
   10607             : 
   10608             : #if SK2_ENABLED
   10609             :     recursive module subroutine setSortedArrCusComMerger_D0_SK2(array, isSorted, method)
   10610             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10611             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D0_SK2
   10612             : #endif
   10613             :         use pm_kind, only: SKC => SK2
   10614             :         character(*,SKC)        , intent(inout)                 :: array
   10615             :         procedure(logical(LK))                                  :: isSorted
   10616             :         type(merger_type)       , intent(in)                    :: method
   10617             :     end subroutine
   10618             : #endif
   10619             : 
   10620             : #if SK1_ENABLED
   10621             :     recursive module subroutine setSortedArrCusComMerger_D0_SK1(array, isSorted, method)
   10622             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10623             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D0_SK1
   10624             : #endif
   10625             :         use pm_kind, only: SKC => SK1
   10626             :         character(*,SKC)        , intent(inout)                 :: array
   10627             :         procedure(logical(LK))                                  :: isSorted
   10628             :         type(merger_type)       , intent(in)                    :: method
   10629             :     end subroutine
   10630             : #endif
   10631             : 
   10632             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10633             : 
   10634             : #if SK5_ENABLED
   10635             :     recursive module subroutine setSortedArrCusComMerger_D1_SK5(array, isSorted, method)
   10636             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10637             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_SK5
   10638             : #endif
   10639             :         use pm_kind, only: SKC => SK5
   10640             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10641             :         procedure(logical(LK))                                  :: isSorted
   10642             :         type(merger_type)       , intent(in)                    :: method
   10643             :     end subroutine
   10644             : #endif
   10645             : 
   10646             : #if SK4_ENABLED
   10647             :     recursive module subroutine setSortedArrCusComMerger_D1_SK4(array, isSorted, method)
   10648             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10649             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_SK4
   10650             : #endif
   10651             :         use pm_kind, only: SKC => SK4
   10652             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10653             :         procedure(logical(LK))                                  :: isSorted
   10654             :         type(merger_type)       , intent(in)                    :: method
   10655             :     end subroutine
   10656             : #endif
   10657             : 
   10658             : #if SK3_ENABLED
   10659             :     recursive module subroutine setSortedArrCusComMerger_D1_SK3(array, isSorted, method)
   10660             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10661             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_SK3
   10662             : #endif
   10663             :         use pm_kind, only: SKC => SK3
   10664             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10665             :         procedure(logical(LK))                                  :: isSorted
   10666             :         type(merger_type)       , intent(in)                    :: method
   10667             :     end subroutine
   10668             : #endif
   10669             : 
   10670             : #if SK2_ENABLED
   10671             :     recursive module subroutine setSortedArrCusComMerger_D1_SK2(array, isSorted, method)
   10672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_SK2
   10674             : #endif
   10675             :         use pm_kind, only: SKC => SK2
   10676             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10677             :         procedure(logical(LK))                                  :: isSorted
   10678             :         type(merger_type)       , intent(in)                    :: method
   10679             :     end subroutine
   10680             : #endif
   10681             : 
   10682             : #if SK1_ENABLED
   10683             :     recursive module subroutine setSortedArrCusComMerger_D1_SK1(array, isSorted, method)
   10684             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10685             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_SK1
   10686             : #endif
   10687             :         use pm_kind, only: SKC => SK1
   10688             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   10689             :         procedure(logical(LK))                                  :: isSorted
   10690             :         type(merger_type)       , intent(in)                    :: method
   10691             :     end subroutine
   10692             : #endif
   10693             : 
   10694             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10695             : 
   10696             : #if IK5_ENABLED
   10697             :     recursive module subroutine setSortedArrCusComMerger_D1_IK5(array, isSorted, method)
   10698             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10699             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_IK5
   10700             : #endif
   10701             :         use pm_kind, only: IKC => IK5
   10702             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10703             :         procedure(logical(LK))                                  :: isSorted
   10704             :         type(merger_type)       , intent(in)                    :: method
   10705             :     end subroutine
   10706             : #endif
   10707             : 
   10708             : #if IK4_ENABLED
   10709             :     recursive module subroutine setSortedArrCusComMerger_D1_IK4(array, isSorted, method)
   10710             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10711             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_IK4
   10712             : #endif
   10713             :         use pm_kind, only: IKC => IK4
   10714             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10715             :         procedure(logical(LK))                                  :: isSorted
   10716             :         type(merger_type)       , intent(in)                    :: method
   10717             :     end subroutine
   10718             : #endif
   10719             : 
   10720             : #if IK3_ENABLED
   10721             :     recursive module subroutine setSortedArrCusComMerger_D1_IK3(array, isSorted, method)
   10722             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10723             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_IK3
   10724             : #endif
   10725             :         use pm_kind, only: IKC => IK3
   10726             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10727             :         procedure(logical(LK))                                  :: isSorted
   10728             :         type(merger_type)       , intent(in)                    :: method
   10729             :     end subroutine
   10730             : #endif
   10731             : 
   10732             : #if IK2_ENABLED
   10733             :     recursive module subroutine setSortedArrCusComMerger_D1_IK2(array, isSorted, method)
   10734             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10735             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_IK2
   10736             : #endif
   10737             :         use pm_kind, only: IKC => IK2
   10738             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10739             :         procedure(logical(LK))                                  :: isSorted
   10740             :         type(merger_type)       , intent(in)                    :: method
   10741             :     end subroutine
   10742             : #endif
   10743             : 
   10744             : #if IK1_ENABLED
   10745             :     recursive module subroutine setSortedArrCusComMerger_D1_IK1(array, isSorted, method)
   10746             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10747             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_IK1
   10748             : #endif
   10749             :         use pm_kind, only: IKC => IK1
   10750             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   10751             :         procedure(logical(LK))                                  :: isSorted
   10752             :         type(merger_type)       , intent(in)                    :: method
   10753             :     end subroutine
   10754             : #endif
   10755             : 
   10756             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10757             : 
   10758             : #if LK5_ENABLED
   10759             :     recursive module subroutine setSortedArrCusComMerger_D1_LK5(array, isSorted, method)
   10760             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10761             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_LK5
   10762             : #endif
   10763             :         use pm_kind, only: LKC => LK5
   10764             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10765             :         procedure(logical(LK))                                  :: isSorted
   10766             :         type(merger_type)       , intent(in)                    :: method
   10767             :     end subroutine
   10768             : #endif
   10769             : 
   10770             : #if LK4_ENABLED
   10771             :     recursive module subroutine setSortedArrCusComMerger_D1_LK4(array, isSorted, method)
   10772             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10773             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_LK4
   10774             : #endif
   10775             :         use pm_kind, only: LKC => LK4
   10776             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10777             :         procedure(logical(LK))                                  :: isSorted
   10778             :         type(merger_type)       , intent(in)                    :: method
   10779             :     end subroutine
   10780             : #endif
   10781             : 
   10782             : #if LK3_ENABLED
   10783             :     recursive module subroutine setSortedArrCusComMerger_D1_LK3(array, isSorted, method)
   10784             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10785             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_LK3
   10786             : #endif
   10787             :         use pm_kind, only: LKC => LK3
   10788             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10789             :         procedure(logical(LK))                                  :: isSorted
   10790             :         type(merger_type)       , intent(in)                    :: method
   10791             :     end subroutine
   10792             : #endif
   10793             : 
   10794             : #if LK2_ENABLED
   10795             :     recursive module subroutine setSortedArrCusComMerger_D1_LK2(array, isSorted, method)
   10796             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10797             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_LK2
   10798             : #endif
   10799             :         use pm_kind, only: LKC => LK2
   10800             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10801             :         procedure(logical(LK))                                  :: isSorted
   10802             :         type(merger_type)       , intent(in)                    :: method
   10803             :     end subroutine
   10804             : #endif
   10805             : 
   10806             : #if LK1_ENABLED
   10807             :     recursive module subroutine setSortedArrCusComMerger_D1_LK1(array, isSorted, method)
   10808             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10809             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_LK1
   10810             : #endif
   10811             :         use pm_kind, only: LKC => LK1
   10812             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   10813             :         procedure(logical(LK))                                  :: isSorted
   10814             :         type(merger_type)       , intent(in)                    :: method
   10815             :     end subroutine
   10816             : #endif
   10817             : 
   10818             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10819             : 
   10820             : #if CK5_ENABLED
   10821             :     recursive module subroutine setSortedArrCusComMerger_D1_CK5(array, isSorted, method)
   10822             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10823             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_CK5
   10824             : #endif
   10825             :         use pm_kind, only: CKC => CK5
   10826             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10827             :         procedure(logical(LK))                                  :: isSorted
   10828             :         type(merger_type)       , intent(in)                    :: method
   10829             :     end subroutine
   10830             : #endif
   10831             : 
   10832             : #if CK4_ENABLED
   10833             :     recursive module subroutine setSortedArrCusComMerger_D1_CK4(array, isSorted, method)
   10834             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10835             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_CK4
   10836             : #endif
   10837             :         use pm_kind, only: CKC => CK4
   10838             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10839             :         procedure(logical(LK))                                  :: isSorted
   10840             :         type(merger_type)       , intent(in)                    :: method
   10841             :     end subroutine
   10842             : #endif
   10843             : 
   10844             : #if CK3_ENABLED
   10845             :     recursive module subroutine setSortedArrCusComMerger_D1_CK3(array, isSorted, method)
   10846             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10847             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_CK3
   10848             : #endif
   10849             :         use pm_kind, only: CKC => CK3
   10850             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10851             :         procedure(logical(LK))                                  :: isSorted
   10852             :         type(merger_type)       , intent(in)                    :: method
   10853             :     end subroutine
   10854             : #endif
   10855             : 
   10856             : #if CK2_ENABLED
   10857             :     recursive module subroutine setSortedArrCusComMerger_D1_CK2(array, isSorted, method)
   10858             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10859             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_CK2
   10860             : #endif
   10861             :         use pm_kind, only: CKC => CK2
   10862             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10863             :         procedure(logical(LK))                                  :: isSorted
   10864             :         type(merger_type)       , intent(in)                    :: method
   10865             :     end subroutine
   10866             : #endif
   10867             : 
   10868             : #if CK1_ENABLED
   10869             :     recursive module subroutine setSortedArrCusComMerger_D1_CK1(array, isSorted, method)
   10870             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10871             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_CK1
   10872             : #endif
   10873             :         use pm_kind, only: CKC => CK1
   10874             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   10875             :         procedure(logical(LK))                                  :: isSorted
   10876             :         type(merger_type)       , intent(in)                    :: method
   10877             :     end subroutine
   10878             : #endif
   10879             : 
   10880             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10881             : 
   10882             : #if RK5_ENABLED
   10883             :     recursive module subroutine setSortedArrCusComMerger_D1_RK5(array, isSorted, method)
   10884             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10885             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_RK5
   10886             : #endif
   10887             :         use pm_kind, only: RKC => RK5
   10888             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10889             :         procedure(logical(LK))                                  :: isSorted
   10890             :         type(merger_type)       , intent(in)                    :: method
   10891             :     end subroutine
   10892             : #endif
   10893             : 
   10894             : #if RK4_ENABLED
   10895             :     recursive module subroutine setSortedArrCusComMerger_D1_RK4(array, isSorted, method)
   10896             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10897             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_RK4
   10898             : #endif
   10899             :         use pm_kind, only: RKC => RK4
   10900             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10901             :         procedure(logical(LK))                                  :: isSorted
   10902             :         type(merger_type)       , intent(in)                    :: method
   10903             :     end subroutine
   10904             : #endif
   10905             : 
   10906             : #if RK3_ENABLED
   10907             :     recursive module subroutine setSortedArrCusComMerger_D1_RK3(array, isSorted, method)
   10908             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10909             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_RK3
   10910             : #endif
   10911             :         use pm_kind, only: RKC => RK3
   10912             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10913             :         procedure(logical(LK))                                  :: isSorted
   10914             :         type(merger_type)       , intent(in)                    :: method
   10915             :     end subroutine
   10916             : #endif
   10917             : 
   10918             : #if RK2_ENABLED
   10919             :     recursive module subroutine setSortedArrCusComMerger_D1_RK2(array, isSorted, method)
   10920             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10921             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_RK2
   10922             : #endif
   10923             :         use pm_kind, only: RKC => RK2
   10924             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10925             :         procedure(logical(LK))                                  :: isSorted
   10926             :         type(merger_type)       , intent(in)                    :: method
   10927             :     end subroutine
   10928             : #endif
   10929             : 
   10930             : #if RK1_ENABLED
   10931             :     recursive module subroutine setSortedArrCusComMerger_D1_RK1(array, isSorted, method)
   10932             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10933             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_RK1
   10934             : #endif
   10935             :         use pm_kind, only: RKC => RK1
   10936             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   10937             :         procedure(logical(LK))                                  :: isSorted
   10938             :         type(merger_type)       , intent(in)                    :: method
   10939             :     end subroutine
   10940             : #endif
   10941             : 
   10942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   10943             : 
   10944             : #if SK5_ENABLED
   10945             :     recursive module subroutine setSortedArrCusComMerger_D1_PSSK5(array, isSorted, method)
   10946             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10947             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_PSSK5
   10948             : #endif
   10949             :         use pm_kind, only: SKC => SK5
   10950             :         use pm_container, only: css_pdt
   10951             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10952             :         procedure(logical(LK))                                  :: isSorted
   10953             :         type(merger_type)       , intent(in)                    :: method
   10954             :     end subroutine
   10955             : #endif
   10956             : 
   10957             : #if SK4_ENABLED
   10958             :     recursive module subroutine setSortedArrCusComMerger_D1_PSSK4(array, isSorted, method)
   10959             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10960             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_PSSK4
   10961             : #endif
   10962             :         use pm_kind, only: SKC => SK4
   10963             :         use pm_container, only: css_pdt
   10964             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10965             :         procedure(logical(LK))                                  :: isSorted
   10966             :         type(merger_type)       , intent(in)                    :: method
   10967             :     end subroutine
   10968             : #endif
   10969             : 
   10970             : #if SK3_ENABLED
   10971             :     recursive module subroutine setSortedArrCusComMerger_D1_PSSK3(array, isSorted, method)
   10972             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10973             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_PSSK3
   10974             : #endif
   10975             :         use pm_kind, only: SKC => SK3
   10976             :         use pm_container, only: css_pdt
   10977             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10978             :         procedure(logical(LK))                                  :: isSorted
   10979             :         type(merger_type)       , intent(in)                    :: method
   10980             :     end subroutine
   10981             : #endif
   10982             : 
   10983             : #if SK2_ENABLED
   10984             :     recursive module subroutine setSortedArrCusComMerger_D1_PSSK2(array, isSorted, method)
   10985             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10986             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_PSSK2
   10987             : #endif
   10988             :         use pm_kind, only: SKC => SK2
   10989             :         use pm_container, only: css_pdt
   10990             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   10991             :         procedure(logical(LK))                                  :: isSorted
   10992             :         type(merger_type)       , intent(in)                    :: method
   10993             :     end subroutine
   10994             : #endif
   10995             : 
   10996             : #if SK1_ENABLED
   10997             :     recursive module subroutine setSortedArrCusComMerger_D1_PSSK1(array, isSorted, method)
   10998             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   10999             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_PSSK1
   11000             : #endif
   11001             :         use pm_kind, only: SKC => SK1
   11002             :         use pm_container, only: css_pdt
   11003             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11004             :         procedure(logical(LK))                                  :: isSorted
   11005             :         type(merger_type)       , intent(in)                    :: method
   11006             :     end subroutine
   11007             : #endif
   11008             : 
   11009             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11010             : 
   11011             :     recursive module subroutine setSortedArrCusComMerger_D1_BSSK(array, isSorted, method)
   11012             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11013             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComMerger_D1_BSSK
   11014             : #endif
   11015             :         use pm_kind, only: SKC => SK
   11016             :         use pm_container, only: css_type
   11017             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   11018             :         procedure(logical(LK))                                  :: isSorted
   11019             :         type(merger_type)       , intent(in)                    :: method
   11020             :     end subroutine
   11021             : 
   11022             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11023             : 
   11024             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11025             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11026             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11027             : 
   11028             :     end interface
   11029             : 
   11030             :     ! setSortedArrCusComSelection
   11031             : 
   11032             :     interface setSorted
   11033             : 
   11034             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11035             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11036             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11037             : 
   11038             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11039             : 
   11040             : #if SK5_ENABLED
   11041             :     module subroutine setSortedArrCusComSelection_D0_SK5(array, isSorted, method)
   11042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11043             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D0_SK5
   11044             : #endif
   11045             :         use pm_kind, only: SKC => SK5
   11046             :         character(*,SKC)        , intent(inout)                 :: array
   11047             :         procedure(logical(LK))                                  :: isSorted
   11048             :         type(selection_type)    , intent(in)                    :: method
   11049             :     end subroutine
   11050             : #endif
   11051             : 
   11052             : #if SK4_ENABLED
   11053             :     module subroutine setSortedArrCusComSelection_D0_SK4(array, isSorted, method)
   11054             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11055             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D0_SK4
   11056             : #endif
   11057             :         use pm_kind, only: SKC => SK4
   11058             :         character(*,SKC)        , intent(inout)                 :: array
   11059             :         procedure(logical(LK))                                  :: isSorted
   11060             :         type(selection_type)    , intent(in)                    :: method
   11061             :     end subroutine
   11062             : #endif
   11063             : 
   11064             : #if SK3_ENABLED
   11065             :     module subroutine setSortedArrCusComSelection_D0_SK3(array, isSorted, method)
   11066             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11067             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D0_SK3
   11068             : #endif
   11069             :         use pm_kind, only: SKC => SK3
   11070             :         character(*,SKC)        , intent(inout)                 :: array
   11071             :         procedure(logical(LK))                                  :: isSorted
   11072             :         type(selection_type)    , intent(in)                    :: method
   11073             :     end subroutine
   11074             : #endif
   11075             : 
   11076             : #if SK2_ENABLED
   11077             :     module subroutine setSortedArrCusComSelection_D0_SK2(array, isSorted, method)
   11078             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11079             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D0_SK2
   11080             : #endif
   11081             :         use pm_kind, only: SKC => SK2
   11082             :         character(*,SKC)        , intent(inout)                 :: array
   11083             :         procedure(logical(LK))                                  :: isSorted
   11084             :         type(selection_type)    , intent(in)                    :: method
   11085             :     end subroutine
   11086             : #endif
   11087             : 
   11088             : #if SK1_ENABLED
   11089             :     module subroutine setSortedArrCusComSelection_D0_SK1(array, isSorted, method)
   11090             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11091             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D0_SK1
   11092             : #endif
   11093             :         use pm_kind, only: SKC => SK1
   11094             :         character(*,SKC)        , intent(inout)                 :: array
   11095             :         procedure(logical(LK))                                  :: isSorted
   11096             :         type(selection_type)    , intent(in)                    :: method
   11097             :     end subroutine
   11098             : #endif
   11099             : 
   11100             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11101             : 
   11102             : #if SK5_ENABLED
   11103             :     module subroutine setSortedArrCusComSelection_D1_SK5(array, isSorted, method)
   11104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_SK5
   11106             : #endif
   11107             :         use pm_kind, only: SKC => SK5
   11108             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11109             :         procedure(logical(LK))                                  :: isSorted
   11110             :         type(selection_type)    , intent(in)                    :: method
   11111             :     end subroutine
   11112             : #endif
   11113             : 
   11114             : #if SK4_ENABLED
   11115             :     module subroutine setSortedArrCusComSelection_D1_SK4(array, isSorted, method)
   11116             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11117             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_SK4
   11118             : #endif
   11119             :         use pm_kind, only: SKC => SK4
   11120             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11121             :         procedure(logical(LK))                                  :: isSorted
   11122             :         type(selection_type)    , intent(in)                    :: method
   11123             :     end subroutine
   11124             : #endif
   11125             : 
   11126             : #if SK3_ENABLED
   11127             :     module subroutine setSortedArrCusComSelection_D1_SK3(array, isSorted, method)
   11128             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11129             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_SK3
   11130             : #endif
   11131             :         use pm_kind, only: SKC => SK3
   11132             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11133             :         procedure(logical(LK))                                  :: isSorted
   11134             :         type(selection_type)    , intent(in)                    :: method
   11135             :     end subroutine
   11136             : #endif
   11137             : 
   11138             : #if SK2_ENABLED
   11139             :     module subroutine setSortedArrCusComSelection_D1_SK2(array, isSorted, method)
   11140             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11141             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_SK2
   11142             : #endif
   11143             :         use pm_kind, only: SKC => SK2
   11144             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11145             :         procedure(logical(LK))                                  :: isSorted
   11146             :         type(selection_type)    , intent(in)                    :: method
   11147             :     end subroutine
   11148             : #endif
   11149             : 
   11150             : #if SK1_ENABLED
   11151             :     module subroutine setSortedArrCusComSelection_D1_SK1(array, isSorted, method)
   11152             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11153             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_SK1
   11154             : #endif
   11155             :         use pm_kind, only: SKC => SK1
   11156             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11157             :         procedure(logical(LK))                                  :: isSorted
   11158             :         type(selection_type)    , intent(in)                    :: method
   11159             :     end subroutine
   11160             : #endif
   11161             : 
   11162             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11163             : 
   11164             : #if IK5_ENABLED
   11165             :     module subroutine setSortedArrCusComSelection_D1_IK5(array, isSorted, method)
   11166             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11167             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_IK5
   11168             : #endif
   11169             :         use pm_kind, only: IKC => IK5
   11170             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11171             :         procedure(logical(LK))                                  :: isSorted
   11172             :         type(selection_type)    , intent(in)                    :: method
   11173             :     end subroutine
   11174             : #endif
   11175             : 
   11176             : #if IK4_ENABLED
   11177             :     module subroutine setSortedArrCusComSelection_D1_IK4(array, isSorted, method)
   11178             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11179             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_IK4
   11180             : #endif
   11181             :         use pm_kind, only: IKC => IK4
   11182             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11183             :         procedure(logical(LK))                                  :: isSorted
   11184             :         type(selection_type)    , intent(in)                    :: method
   11185             :     end subroutine
   11186             : #endif
   11187             : 
   11188             : #if IK3_ENABLED
   11189             :     module subroutine setSortedArrCusComSelection_D1_IK3(array, isSorted, method)
   11190             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11191             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_IK3
   11192             : #endif
   11193             :         use pm_kind, only: IKC => IK3
   11194             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11195             :         procedure(logical(LK))                                  :: isSorted
   11196             :         type(selection_type)    , intent(in)                    :: method
   11197             :     end subroutine
   11198             : #endif
   11199             : 
   11200             : #if IK2_ENABLED
   11201             :     module subroutine setSortedArrCusComSelection_D1_IK2(array, isSorted, method)
   11202             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11203             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_IK2
   11204             : #endif
   11205             :         use pm_kind, only: IKC => IK2
   11206             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11207             :         procedure(logical(LK))                                  :: isSorted
   11208             :         type(selection_type)    , intent(in)                    :: method
   11209             :     end subroutine
   11210             : #endif
   11211             : 
   11212             : #if IK1_ENABLED
   11213             :     module subroutine setSortedArrCusComSelection_D1_IK1(array, isSorted, method)
   11214             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11215             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_IK1
   11216             : #endif
   11217             :         use pm_kind, only: IKC => IK1
   11218             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11219             :         procedure(logical(LK))                                  :: isSorted
   11220             :         type(selection_type)    , intent(in)                    :: method
   11221             :     end subroutine
   11222             : #endif
   11223             : 
   11224             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11225             : 
   11226             : #if LK5_ENABLED
   11227             :     module subroutine setSortedArrCusComSelection_D1_LK5(array, isSorted, method)
   11228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11229             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_LK5
   11230             : #endif
   11231             :         use pm_kind, only: LKC => LK5
   11232             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11233             :         procedure(logical(LK))                                  :: isSorted
   11234             :         type(selection_type)    , intent(in)                    :: method
   11235             :     end subroutine
   11236             : #endif
   11237             : 
   11238             : #if LK4_ENABLED
   11239             :     module subroutine setSortedArrCusComSelection_D1_LK4(array, isSorted, method)
   11240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11241             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_LK4
   11242             : #endif
   11243             :         use pm_kind, only: LKC => LK4
   11244             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11245             :         procedure(logical(LK))                                  :: isSorted
   11246             :         type(selection_type)    , intent(in)                    :: method
   11247             :     end subroutine
   11248             : #endif
   11249             : 
   11250             : #if LK3_ENABLED
   11251             :     module subroutine setSortedArrCusComSelection_D1_LK3(array, isSorted, method)
   11252             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11253             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_LK3
   11254             : #endif
   11255             :         use pm_kind, only: LKC => LK3
   11256             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11257             :         procedure(logical(LK))                                  :: isSorted
   11258             :         type(selection_type)    , intent(in)                    :: method
   11259             :     end subroutine
   11260             : #endif
   11261             : 
   11262             : #if LK2_ENABLED
   11263             :     module subroutine setSortedArrCusComSelection_D1_LK2(array, isSorted, method)
   11264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11265             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_LK2
   11266             : #endif
   11267             :         use pm_kind, only: LKC => LK2
   11268             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11269             :         procedure(logical(LK))                                  :: isSorted
   11270             :         type(selection_type)    , intent(in)                    :: method
   11271             :     end subroutine
   11272             : #endif
   11273             : 
   11274             : #if LK1_ENABLED
   11275             :     module subroutine setSortedArrCusComSelection_D1_LK1(array, isSorted, method)
   11276             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11277             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_LK1
   11278             : #endif
   11279             :         use pm_kind, only: LKC => LK1
   11280             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11281             :         procedure(logical(LK))                                  :: isSorted
   11282             :         type(selection_type)    , intent(in)                    :: method
   11283             :     end subroutine
   11284             : #endif
   11285             : 
   11286             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11287             : 
   11288             : #if CK5_ENABLED
   11289             :     module subroutine setSortedArrCusComSelection_D1_CK5(array, isSorted, method)
   11290             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11291             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_CK5
   11292             : #endif
   11293             :         use pm_kind, only: CKC => CK5
   11294             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11295             :         procedure(logical(LK))                                  :: isSorted
   11296             :         type(selection_type)    , intent(in)                    :: method
   11297             :     end subroutine
   11298             : #endif
   11299             : 
   11300             : #if CK4_ENABLED
   11301             :     module subroutine setSortedArrCusComSelection_D1_CK4(array, isSorted, method)
   11302             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11303             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_CK4
   11304             : #endif
   11305             :         use pm_kind, only: CKC => CK4
   11306             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11307             :         procedure(logical(LK))                                  :: isSorted
   11308             :         type(selection_type)    , intent(in)                    :: method
   11309             :     end subroutine
   11310             : #endif
   11311             : 
   11312             : #if CK3_ENABLED
   11313             :     module subroutine setSortedArrCusComSelection_D1_CK3(array, isSorted, method)
   11314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11315             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_CK3
   11316             : #endif
   11317             :         use pm_kind, only: CKC => CK3
   11318             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11319             :         procedure(logical(LK))                                  :: isSorted
   11320             :         type(selection_type)    , intent(in)                    :: method
   11321             :     end subroutine
   11322             : #endif
   11323             : 
   11324             : #if CK2_ENABLED
   11325             :     module subroutine setSortedArrCusComSelection_D1_CK2(array, isSorted, method)
   11326             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11327             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_CK2
   11328             : #endif
   11329             :         use pm_kind, only: CKC => CK2
   11330             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11331             :         procedure(logical(LK))                                  :: isSorted
   11332             :         type(selection_type)    , intent(in)                    :: method
   11333             :     end subroutine
   11334             : #endif
   11335             : 
   11336             : #if CK1_ENABLED
   11337             :     module subroutine setSortedArrCusComSelection_D1_CK1(array, isSorted, method)
   11338             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11339             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_CK1
   11340             : #endif
   11341             :         use pm_kind, only: CKC => CK1
   11342             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11343             :         procedure(logical(LK))                                  :: isSorted
   11344             :         type(selection_type)    , intent(in)                    :: method
   11345             :     end subroutine
   11346             : #endif
   11347             : 
   11348             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11349             : 
   11350             : #if RK5_ENABLED
   11351             :     module subroutine setSortedArrCusComSelection_D1_RK5(array, isSorted, method)
   11352             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11353             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_RK5
   11354             : #endif
   11355             :         use pm_kind, only: RKC => RK5
   11356             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11357             :         procedure(logical(LK))                                  :: isSorted
   11358             :         type(selection_type)    , intent(in)                    :: method
   11359             :     end subroutine
   11360             : #endif
   11361             : 
   11362             : #if RK4_ENABLED
   11363             :     module subroutine setSortedArrCusComSelection_D1_RK4(array, isSorted, method)
   11364             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11365             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_RK4
   11366             : #endif
   11367             :         use pm_kind, only: RKC => RK4
   11368             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11369             :         procedure(logical(LK))                                  :: isSorted
   11370             :         type(selection_type)    , intent(in)                    :: method
   11371             :     end subroutine
   11372             : #endif
   11373             : 
   11374             : #if RK3_ENABLED
   11375             :     module subroutine setSortedArrCusComSelection_D1_RK3(array, isSorted, method)
   11376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11377             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_RK3
   11378             : #endif
   11379             :         use pm_kind, only: RKC => RK3
   11380             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11381             :         procedure(logical(LK))                                  :: isSorted
   11382             :         type(selection_type)    , intent(in)                    :: method
   11383             :     end subroutine
   11384             : #endif
   11385             : 
   11386             : #if RK2_ENABLED
   11387             :     module subroutine setSortedArrCusComSelection_D1_RK2(array, isSorted, method)
   11388             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11389             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_RK2
   11390             : #endif
   11391             :         use pm_kind, only: RKC => RK2
   11392             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11393             :         procedure(logical(LK))                                  :: isSorted
   11394             :         type(selection_type)    , intent(in)                    :: method
   11395             :     end subroutine
   11396             : #endif
   11397             : 
   11398             : #if RK1_ENABLED
   11399             :     module subroutine setSortedArrCusComSelection_D1_RK1(array, isSorted, method)
   11400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11401             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_RK1
   11402             : #endif
   11403             :         use pm_kind, only: RKC => RK1
   11404             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11405             :         procedure(logical(LK))                                  :: isSorted
   11406             :         type(selection_type)    , intent(in)                    :: method
   11407             :     end subroutine
   11408             : #endif
   11409             : 
   11410             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11411             : 
   11412             : #if SK5_ENABLED
   11413             :     module subroutine setSortedArrCusComSelection_D1_PSSK5(array, isSorted, method)
   11414             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11415             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_PSSK5
   11416             : #endif
   11417             :         use pm_kind, only: SKC => SK5
   11418             :         use pm_container, only: css_pdt
   11419             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11420             :         procedure(logical(LK))                                  :: isSorted
   11421             :         type(selection_type)    , intent(in)                    :: method
   11422             :     end subroutine
   11423             : #endif
   11424             : 
   11425             : #if SK4_ENABLED
   11426             :     module subroutine setSortedArrCusComSelection_D1_PSSK4(array, isSorted, method)
   11427             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11428             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_PSSK4
   11429             : #endif
   11430             :         use pm_kind, only: SKC => SK4
   11431             :         use pm_container, only: css_pdt
   11432             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11433             :         procedure(logical(LK))                                  :: isSorted
   11434             :         type(selection_type)    , intent(in)                    :: method
   11435             :     end subroutine
   11436             : #endif
   11437             : 
   11438             : #if SK3_ENABLED
   11439             :     module subroutine setSortedArrCusComSelection_D1_PSSK3(array, isSorted, method)
   11440             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11441             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_PSSK3
   11442             : #endif
   11443             :         use pm_kind, only: SKC => SK3
   11444             :         use pm_container, only: css_pdt
   11445             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11446             :         procedure(logical(LK))                                  :: isSorted
   11447             :         type(selection_type)    , intent(in)                    :: method
   11448             :     end subroutine
   11449             : #endif
   11450             : 
   11451             : #if SK2_ENABLED
   11452             :     module subroutine setSortedArrCusComSelection_D1_PSSK2(array, isSorted, method)
   11453             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11454             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_PSSK2
   11455             : #endif
   11456             :         use pm_kind, only: SKC => SK2
   11457             :         use pm_container, only: css_pdt
   11458             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11459             :         procedure(logical(LK))                                  :: isSorted
   11460             :         type(selection_type)    , intent(in)                    :: method
   11461             :     end subroutine
   11462             : #endif
   11463             : 
   11464             : #if SK1_ENABLED
   11465             :     module subroutine setSortedArrCusComSelection_D1_PSSK1(array, isSorted, method)
   11466             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11467             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_PSSK1
   11468             : #endif
   11469             :         use pm_kind, only: SKC => SK1
   11470             :         use pm_container, only: css_pdt
   11471             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11472             :         procedure(logical(LK))                                  :: isSorted
   11473             :         type(selection_type)    , intent(in)                    :: method
   11474             :     end subroutine
   11475             : #endif
   11476             : 
   11477             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11478             : 
   11479             :     module subroutine setSortedArrCusComSelection_D1_BSSK(array, isSorted, method)
   11480             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11481             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComSelection_D1_BSSK
   11482             : #endif
   11483             :         use pm_kind, only: SKC => SK
   11484             :         use pm_container, only: css_type
   11485             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   11486             :         procedure(logical(LK))                                  :: isSorted
   11487             :         type(selection_type)    , intent(in)                    :: method
   11488             :     end subroutine
   11489             : 
   11490             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11491             : 
   11492             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11493             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11494             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11495             : 
   11496             :     end interface
   11497             : 
   11498             :     ! setSortedArrCusComShell
   11499             : 
   11500             :     interface setSorted
   11501             : 
   11502             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11503             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11504             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11505             : 
   11506             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11507             : 
   11508             : #if SK5_ENABLED
   11509             :     module subroutine setSortedArrCusComShell_D0_SK5(array, isSorted, method)
   11510             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11511             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D0_SK5
   11512             : #endif
   11513             :         use pm_kind, only: SKC => SK5
   11514             :         character(*,SKC)        , intent(inout)                 :: array
   11515             :         procedure(logical(LK))                                  :: isSorted
   11516             :         type(shell_type)        , intent(in)                    :: method
   11517             :     end subroutine
   11518             : #endif
   11519             : 
   11520             : #if SK4_ENABLED
   11521             :     module subroutine setSortedArrCusComShell_D0_SK4(array, isSorted, method)
   11522             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11523             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D0_SK4
   11524             : #endif
   11525             :         use pm_kind, only: SKC => SK4
   11526             :         character(*,SKC)        , intent(inout)                 :: array
   11527             :         procedure(logical(LK))                                  :: isSorted
   11528             :         type(shell_type)        , intent(in)                    :: method
   11529             :     end subroutine
   11530             : #endif
   11531             : 
   11532             : #if SK3_ENABLED
   11533             :     module subroutine setSortedArrCusComShell_D0_SK3(array, isSorted, method)
   11534             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11535             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D0_SK3
   11536             : #endif
   11537             :         use pm_kind, only: SKC => SK3
   11538             :         character(*,SKC)        , intent(inout)                 :: array
   11539             :         procedure(logical(LK))                                  :: isSorted
   11540             :         type(shell_type)        , intent(in)                    :: method
   11541             :     end subroutine
   11542             : #endif
   11543             : 
   11544             : #if SK2_ENABLED
   11545             :     module subroutine setSortedArrCusComShell_D0_SK2(array, isSorted, method)
   11546             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11547             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D0_SK2
   11548             : #endif
   11549             :         use pm_kind, only: SKC => SK2
   11550             :         character(*,SKC)        , intent(inout)                 :: array
   11551             :         procedure(logical(LK))                                  :: isSorted
   11552             :         type(shell_type)        , intent(in)                    :: method
   11553             :     end subroutine
   11554             : #endif
   11555             : 
   11556             : #if SK1_ENABLED
   11557             :     module subroutine setSortedArrCusComShell_D0_SK1(array, isSorted, method)
   11558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D0_SK1
   11560             : #endif
   11561             :         use pm_kind, only: SKC => SK1
   11562             :         character(*,SKC)        , intent(inout)                 :: array
   11563             :         procedure(logical(LK))                                  :: isSorted
   11564             :         type(shell_type)        , intent(in)                    :: method
   11565             :     end subroutine
   11566             : #endif
   11567             : 
   11568             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11569             : 
   11570             : #if SK5_ENABLED
   11571             :     module subroutine setSortedArrCusComShell_D1_SK5(array, isSorted, method)
   11572             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11573             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_SK5
   11574             : #endif
   11575             :         use pm_kind, only: SKC => SK5
   11576             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11577             :         procedure(logical(LK))                                  :: isSorted
   11578             :         type(shell_type)        , intent(in)                    :: method
   11579             :     end subroutine
   11580             : #endif
   11581             : 
   11582             : #if SK4_ENABLED
   11583             :     module subroutine setSortedArrCusComShell_D1_SK4(array, isSorted, method)
   11584             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11585             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_SK4
   11586             : #endif
   11587             :         use pm_kind, only: SKC => SK4
   11588             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11589             :         procedure(logical(LK))                                  :: isSorted
   11590             :         type(shell_type)        , intent(in)                    :: method
   11591             :     end subroutine
   11592             : #endif
   11593             : 
   11594             : #if SK3_ENABLED
   11595             :     module subroutine setSortedArrCusComShell_D1_SK3(array, isSorted, method)
   11596             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11597             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_SK3
   11598             : #endif
   11599             :         use pm_kind, only: SKC => SK3
   11600             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11601             :         procedure(logical(LK))                                  :: isSorted
   11602             :         type(shell_type)        , intent(in)                    :: method
   11603             :     end subroutine
   11604             : #endif
   11605             : 
   11606             : #if SK2_ENABLED
   11607             :     module subroutine setSortedArrCusComShell_D1_SK2(array, isSorted, method)
   11608             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11609             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_SK2
   11610             : #endif
   11611             :         use pm_kind, only: SKC => SK2
   11612             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11613             :         procedure(logical(LK))                                  :: isSorted
   11614             :         type(shell_type)        , intent(in)                    :: method
   11615             :     end subroutine
   11616             : #endif
   11617             : 
   11618             : #if SK1_ENABLED
   11619             :     module subroutine setSortedArrCusComShell_D1_SK1(array, isSorted, method)
   11620             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11621             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_SK1
   11622             : #endif
   11623             :         use pm_kind, only: SKC => SK1
   11624             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   11625             :         procedure(logical(LK))                                  :: isSorted
   11626             :         type(shell_type)        , intent(in)                    :: method
   11627             :     end subroutine
   11628             : #endif
   11629             : 
   11630             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11631             : 
   11632             : #if IK5_ENABLED
   11633             :     module subroutine setSortedArrCusComShell_D1_IK5(array, isSorted, method)
   11634             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11635             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_IK5
   11636             : #endif
   11637             :         use pm_kind, only: IKC => IK5
   11638             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11639             :         procedure(logical(LK))                                  :: isSorted
   11640             :         type(shell_type)        , intent(in)                    :: method
   11641             :     end subroutine
   11642             : #endif
   11643             : 
   11644             : #if IK4_ENABLED
   11645             :     module subroutine setSortedArrCusComShell_D1_IK4(array, isSorted, method)
   11646             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11647             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_IK4
   11648             : #endif
   11649             :         use pm_kind, only: IKC => IK4
   11650             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11651             :         procedure(logical(LK))                                  :: isSorted
   11652             :         type(shell_type)        , intent(in)                    :: method
   11653             :     end subroutine
   11654             : #endif
   11655             : 
   11656             : #if IK3_ENABLED
   11657             :     module subroutine setSortedArrCusComShell_D1_IK3(array, isSorted, method)
   11658             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11659             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_IK3
   11660             : #endif
   11661             :         use pm_kind, only: IKC => IK3
   11662             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11663             :         procedure(logical(LK))                                  :: isSorted
   11664             :         type(shell_type)        , intent(in)                    :: method
   11665             :     end subroutine
   11666             : #endif
   11667             : 
   11668             : #if IK2_ENABLED
   11669             :     module subroutine setSortedArrCusComShell_D1_IK2(array, isSorted, method)
   11670             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11671             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_IK2
   11672             : #endif
   11673             :         use pm_kind, only: IKC => IK2
   11674             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11675             :         procedure(logical(LK))                                  :: isSorted
   11676             :         type(shell_type)        , intent(in)                    :: method
   11677             :     end subroutine
   11678             : #endif
   11679             : 
   11680             : #if IK1_ENABLED
   11681             :     module subroutine setSortedArrCusComShell_D1_IK1(array, isSorted, method)
   11682             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11683             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_IK1
   11684             : #endif
   11685             :         use pm_kind, only: IKC => IK1
   11686             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   11687             :         procedure(logical(LK))                                  :: isSorted
   11688             :         type(shell_type)        , intent(in)                    :: method
   11689             :     end subroutine
   11690             : #endif
   11691             : 
   11692             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11693             : 
   11694             : #if LK5_ENABLED
   11695             :     module subroutine setSortedArrCusComShell_D1_LK5(array, isSorted, method)
   11696             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11697             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_LK5
   11698             : #endif
   11699             :         use pm_kind, only: LKC => LK5
   11700             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11701             :         procedure(logical(LK))                                  :: isSorted
   11702             :         type(shell_type)        , intent(in)                    :: method
   11703             :     end subroutine
   11704             : #endif
   11705             : 
   11706             : #if LK4_ENABLED
   11707             :     module subroutine setSortedArrCusComShell_D1_LK4(array, isSorted, method)
   11708             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11709             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_LK4
   11710             : #endif
   11711             :         use pm_kind, only: LKC => LK4
   11712             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11713             :         procedure(logical(LK))                                  :: isSorted
   11714             :         type(shell_type)        , intent(in)                    :: method
   11715             :     end subroutine
   11716             : #endif
   11717             : 
   11718             : #if LK3_ENABLED
   11719             :     module subroutine setSortedArrCusComShell_D1_LK3(array, isSorted, method)
   11720             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11721             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_LK3
   11722             : #endif
   11723             :         use pm_kind, only: LKC => LK3
   11724             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11725             :         procedure(logical(LK))                                  :: isSorted
   11726             :         type(shell_type)        , intent(in)                    :: method
   11727             :     end subroutine
   11728             : #endif
   11729             : 
   11730             : #if LK2_ENABLED
   11731             :     module subroutine setSortedArrCusComShell_D1_LK2(array, isSorted, method)
   11732             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11733             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_LK2
   11734             : #endif
   11735             :         use pm_kind, only: LKC => LK2
   11736             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11737             :         procedure(logical(LK))                                  :: isSorted
   11738             :         type(shell_type)        , intent(in)                    :: method
   11739             :     end subroutine
   11740             : #endif
   11741             : 
   11742             : #if LK1_ENABLED
   11743             :     module subroutine setSortedArrCusComShell_D1_LK1(array, isSorted, method)
   11744             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11745             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_LK1
   11746             : #endif
   11747             :         use pm_kind, only: LKC => LK1
   11748             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   11749             :         procedure(logical(LK))                                  :: isSorted
   11750             :         type(shell_type)        , intent(in)                    :: method
   11751             :     end subroutine
   11752             : #endif
   11753             : 
   11754             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11755             : 
   11756             : #if CK5_ENABLED
   11757             :     module subroutine setSortedArrCusComShell_D1_CK5(array, isSorted, method)
   11758             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11759             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_CK5
   11760             : #endif
   11761             :         use pm_kind, only: CKC => CK5
   11762             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11763             :         procedure(logical(LK))                                  :: isSorted
   11764             :         type(shell_type)        , intent(in)                    :: method
   11765             :     end subroutine
   11766             : #endif
   11767             : 
   11768             : #if CK4_ENABLED
   11769             :     module subroutine setSortedArrCusComShell_D1_CK4(array, isSorted, method)
   11770             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11771             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_CK4
   11772             : #endif
   11773             :         use pm_kind, only: CKC => CK4
   11774             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11775             :         procedure(logical(LK))                                  :: isSorted
   11776             :         type(shell_type)        , intent(in)                    :: method
   11777             :     end subroutine
   11778             : #endif
   11779             : 
   11780             : #if CK3_ENABLED
   11781             :     module subroutine setSortedArrCusComShell_D1_CK3(array, isSorted, method)
   11782             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11783             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_CK3
   11784             : #endif
   11785             :         use pm_kind, only: CKC => CK3
   11786             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11787             :         procedure(logical(LK))                                  :: isSorted
   11788             :         type(shell_type)        , intent(in)                    :: method
   11789             :     end subroutine
   11790             : #endif
   11791             : 
   11792             : #if CK2_ENABLED
   11793             :     module subroutine setSortedArrCusComShell_D1_CK2(array, isSorted, method)
   11794             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11795             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_CK2
   11796             : #endif
   11797             :         use pm_kind, only: CKC => CK2
   11798             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11799             :         procedure(logical(LK))                                  :: isSorted
   11800             :         type(shell_type)        , intent(in)                    :: method
   11801             :     end subroutine
   11802             : #endif
   11803             : 
   11804             : #if CK1_ENABLED
   11805             :     module subroutine setSortedArrCusComShell_D1_CK1(array, isSorted, method)
   11806             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11807             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_CK1
   11808             : #endif
   11809             :         use pm_kind, only: CKC => CK1
   11810             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   11811             :         procedure(logical(LK))                                  :: isSorted
   11812             :         type(shell_type)        , intent(in)                    :: method
   11813             :     end subroutine
   11814             : #endif
   11815             : 
   11816             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11817             : 
   11818             : #if RK5_ENABLED
   11819             :     module subroutine setSortedArrCusComShell_D1_RK5(array, isSorted, method)
   11820             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11821             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_RK5
   11822             : #endif
   11823             :         use pm_kind, only: RKC => RK5
   11824             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11825             :         procedure(logical(LK))                                  :: isSorted
   11826             :         type(shell_type)        , intent(in)                    :: method
   11827             :     end subroutine
   11828             : #endif
   11829             : 
   11830             : #if RK4_ENABLED
   11831             :     module subroutine setSortedArrCusComShell_D1_RK4(array, isSorted, method)
   11832             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11833             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_RK4
   11834             : #endif
   11835             :         use pm_kind, only: RKC => RK4
   11836             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11837             :         procedure(logical(LK))                                  :: isSorted
   11838             :         type(shell_type)        , intent(in)                    :: method
   11839             :     end subroutine
   11840             : #endif
   11841             : 
   11842             : #if RK3_ENABLED
   11843             :     module subroutine setSortedArrCusComShell_D1_RK3(array, isSorted, method)
   11844             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11845             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_RK3
   11846             : #endif
   11847             :         use pm_kind, only: RKC => RK3
   11848             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11849             :         procedure(logical(LK))                                  :: isSorted
   11850             :         type(shell_type)        , intent(in)                    :: method
   11851             :     end subroutine
   11852             : #endif
   11853             : 
   11854             : #if RK2_ENABLED
   11855             :     module subroutine setSortedArrCusComShell_D1_RK2(array, isSorted, method)
   11856             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11857             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_RK2
   11858             : #endif
   11859             :         use pm_kind, only: RKC => RK2
   11860             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11861             :         procedure(logical(LK))                                  :: isSorted
   11862             :         type(shell_type)        , intent(in)                    :: method
   11863             :     end subroutine
   11864             : #endif
   11865             : 
   11866             : #if RK1_ENABLED
   11867             :     module subroutine setSortedArrCusComShell_D1_RK1(array, isSorted, method)
   11868             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11869             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_RK1
   11870             : #endif
   11871             :         use pm_kind, only: RKC => RK1
   11872             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   11873             :         procedure(logical(LK))                                  :: isSorted
   11874             :         type(shell_type)        , intent(in)                    :: method
   11875             :     end subroutine
   11876             : #endif
   11877             : 
   11878             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11879             : 
   11880             : #if SK5_ENABLED
   11881             :     module subroutine setSortedArrCusComShell_D1_PSSK5(array, isSorted, method)
   11882             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11883             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_PSSK5
   11884             : #endif
   11885             :         use pm_kind, only: SKC => SK5
   11886             :         use pm_container, only: css_pdt
   11887             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11888             :         procedure(logical(LK))                                  :: isSorted
   11889             :         type(shell_type)        , intent(in)                    :: method
   11890             :     end subroutine
   11891             : #endif
   11892             : 
   11893             : #if SK4_ENABLED
   11894             :     module subroutine setSortedArrCusComShell_D1_PSSK4(array, isSorted, method)
   11895             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11896             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_PSSK4
   11897             : #endif
   11898             :         use pm_kind, only: SKC => SK4
   11899             :         use pm_container, only: css_pdt
   11900             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11901             :         procedure(logical(LK))                                  :: isSorted
   11902             :         type(shell_type)        , intent(in)                    :: method
   11903             :     end subroutine
   11904             : #endif
   11905             : 
   11906             : #if SK3_ENABLED
   11907             :     module subroutine setSortedArrCusComShell_D1_PSSK3(array, isSorted, method)
   11908             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11909             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_PSSK3
   11910             : #endif
   11911             :         use pm_kind, only: SKC => SK3
   11912             :         use pm_container, only: css_pdt
   11913             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11914             :         procedure(logical(LK))                                  :: isSorted
   11915             :         type(shell_type)        , intent(in)                    :: method
   11916             :     end subroutine
   11917             : #endif
   11918             : 
   11919             : #if SK2_ENABLED
   11920             :     module subroutine setSortedArrCusComShell_D1_PSSK2(array, isSorted, method)
   11921             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11922             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_PSSK2
   11923             : #endif
   11924             :         use pm_kind, only: SKC => SK2
   11925             :         use pm_container, only: css_pdt
   11926             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11927             :         procedure(logical(LK))                                  :: isSorted
   11928             :         type(shell_type)        , intent(in)                    :: method
   11929             :     end subroutine
   11930             : #endif
   11931             : 
   11932             : #if SK1_ENABLED
   11933             :     module subroutine setSortedArrCusComShell_D1_PSSK1(array, isSorted, method)
   11934             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11935             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_PSSK1
   11936             : #endif
   11937             :         use pm_kind, only: SKC => SK1
   11938             :         use pm_container, only: css_pdt
   11939             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   11940             :         procedure(logical(LK))                                  :: isSorted
   11941             :         type(shell_type)        , intent(in)                    :: method
   11942             :     end subroutine
   11943             : #endif
   11944             : 
   11945             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11946             : 
   11947             :     module subroutine setSortedArrCusComShell_D1_BSSK(array, isSorted, method)
   11948             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11949             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrCusComShell_D1_BSSK
   11950             : #endif
   11951             :         use pm_kind, only: SKC => SK
   11952             :         use pm_container, only: css_type
   11953             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   11954             :         procedure(logical(LK))                                  :: isSorted
   11955             :         type(shell_type)        , intent(in)                    :: method
   11956             :     end subroutine
   11957             : 
   11958             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11959             : 
   11960             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11961             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11962             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11963             : 
   11964             :     end interface
   11965             : 
   11966             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11967             : 
   11968             :     ! setSortedArrDefComDef
   11969             : 
   11970             :     interface setSorted
   11971             : 
   11972             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11973             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11974             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11975             : 
   11976             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   11977             : 
   11978             : #if SK5_ENABLED
   11979             :     pure module subroutine setSortedArrDefComDef_D0_SK5(array)
   11980             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11981             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D0_SK5
   11982             : #endif
   11983             :         use pm_kind, only: SKC => SK5
   11984             :         character(*,SKC)        , intent(inout)                 :: array
   11985             :     end subroutine
   11986             : #endif
   11987             : 
   11988             : #if SK4_ENABLED
   11989             :     pure module subroutine setSortedArrDefComDef_D0_SK4(array)
   11990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   11991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D0_SK4
   11992             : #endif
   11993             :         use pm_kind, only: SKC => SK4
   11994             :         character(*,SKC)        , intent(inout)                 :: array
   11995             :     end subroutine
   11996             : #endif
   11997             : 
   11998             : #if SK3_ENABLED
   11999             :     pure module subroutine setSortedArrDefComDef_D0_SK3(array)
   12000             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12001             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D0_SK3
   12002             : #endif
   12003             :         use pm_kind, only: SKC => SK3
   12004             :         character(*,SKC)        , intent(inout)                 :: array
   12005             :     end subroutine
   12006             : #endif
   12007             : 
   12008             : #if SK2_ENABLED
   12009             :     pure module subroutine setSortedArrDefComDef_D0_SK2(array)
   12010             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12011             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D0_SK2
   12012             : #endif
   12013             :         use pm_kind, only: SKC => SK2
   12014             :         character(*,SKC)        , intent(inout)                 :: array
   12015             :     end subroutine
   12016             : #endif
   12017             : 
   12018             : #if SK1_ENABLED
   12019             :     pure module subroutine setSortedArrDefComDef_D0_SK1(array)
   12020             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12021             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D0_SK1
   12022             : #endif
   12023             :         use pm_kind, only: SKC => SK1
   12024             :         character(*,SKC)        , intent(inout)                 :: array
   12025             :     end subroutine
   12026             : #endif
   12027             : 
   12028             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12029             : 
   12030             : #if SK5_ENABLED
   12031             :     pure module subroutine setSortedArrDefComDef_D1_SK5(array)
   12032             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12033             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_SK5
   12034             : #endif
   12035             :         use pm_kind, only: SKC => SK5
   12036             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12037             :     end subroutine
   12038             : #endif
   12039             : 
   12040             : #if SK4_ENABLED
   12041             :     pure module subroutine setSortedArrDefComDef_D1_SK4(array)
   12042             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12043             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_SK4
   12044             : #endif
   12045             :         use pm_kind, only: SKC => SK4
   12046             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12047             :     end subroutine
   12048             : #endif
   12049             : 
   12050             : #if SK3_ENABLED
   12051             :     pure module subroutine setSortedArrDefComDef_D1_SK3(array)
   12052             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12053             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_SK3
   12054             : #endif
   12055             :         use pm_kind, only: SKC => SK3
   12056             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12057             :     end subroutine
   12058             : #endif
   12059             : 
   12060             : #if SK2_ENABLED
   12061             :     pure module subroutine setSortedArrDefComDef_D1_SK2(array)
   12062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12063             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_SK2
   12064             : #endif
   12065             :         use pm_kind, only: SKC => SK2
   12066             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12067             :     end subroutine
   12068             : #endif
   12069             : 
   12070             : #if SK1_ENABLED
   12071             :     pure module subroutine setSortedArrDefComDef_D1_SK1(array)
   12072             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12073             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_SK1
   12074             : #endif
   12075             :         use pm_kind, only: SKC => SK1
   12076             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12077             :     end subroutine
   12078             : #endif
   12079             : 
   12080             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12081             : 
   12082             : #if IK5_ENABLED
   12083             :     pure module subroutine setSortedArrDefComDef_D1_IK5(array)
   12084             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12085             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_IK5
   12086             : #endif
   12087             :         use pm_kind, only: IKC => IK5
   12088             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12089             :     end subroutine
   12090             : #endif
   12091             : 
   12092             : #if IK4_ENABLED
   12093             :     pure module subroutine setSortedArrDefComDef_D1_IK4(array)
   12094             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12095             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_IK4
   12096             : #endif
   12097             :         use pm_kind, only: IKC => IK4
   12098             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12099             :     end subroutine
   12100             : #endif
   12101             : 
   12102             : #if IK3_ENABLED
   12103             :     pure module subroutine setSortedArrDefComDef_D1_IK3(array)
   12104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_IK3
   12106             : #endif
   12107             :         use pm_kind, only: IKC => IK3
   12108             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12109             :     end subroutine
   12110             : #endif
   12111             : 
   12112             : #if IK2_ENABLED
   12113             :     pure module subroutine setSortedArrDefComDef_D1_IK2(array)
   12114             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12115             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_IK2
   12116             : #endif
   12117             :         use pm_kind, only: IKC => IK2
   12118             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12119             :     end subroutine
   12120             : #endif
   12121             : 
   12122             : #if IK1_ENABLED
   12123             :     pure module subroutine setSortedArrDefComDef_D1_IK1(array)
   12124             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12125             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_IK1
   12126             : #endif
   12127             :         use pm_kind, only: IKC => IK1
   12128             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12129             :     end subroutine
   12130             : #endif
   12131             : 
   12132             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12133             : 
   12134             : #if LK5_ENABLED
   12135             :     pure module subroutine setSortedArrDefComDef_D1_LK5(array)
   12136             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12137             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_LK5
   12138             : #endif
   12139             :         use pm_kind, only: LKC => LK5
   12140             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12141             :     end subroutine
   12142             : #endif
   12143             : 
   12144             : #if LK4_ENABLED
   12145             :     pure module subroutine setSortedArrDefComDef_D1_LK4(array)
   12146             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12147             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_LK4
   12148             : #endif
   12149             :         use pm_kind, only: LKC => LK4
   12150             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12151             :     end subroutine
   12152             : #endif
   12153             : 
   12154             : #if LK3_ENABLED
   12155             :     pure module subroutine setSortedArrDefComDef_D1_LK3(array)
   12156             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12157             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_LK3
   12158             : #endif
   12159             :         use pm_kind, only: LKC => LK3
   12160             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12161             :     end subroutine
   12162             : #endif
   12163             : 
   12164             : #if LK2_ENABLED
   12165             :     pure module subroutine setSortedArrDefComDef_D1_LK2(array)
   12166             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12167             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_LK2
   12168             : #endif
   12169             :         use pm_kind, only: LKC => LK2
   12170             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12171             :     end subroutine
   12172             : #endif
   12173             : 
   12174             : #if LK1_ENABLED
   12175             :     pure module subroutine setSortedArrDefComDef_D1_LK1(array)
   12176             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12177             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_LK1
   12178             : #endif
   12179             :         use pm_kind, only: LKC => LK1
   12180             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12181             :     end subroutine
   12182             : #endif
   12183             : 
   12184             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12185             : 
   12186             : #if CK5_ENABLED
   12187             :     pure module subroutine setSortedArrDefComDef_D1_CK5(array)
   12188             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12189             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_CK5
   12190             : #endif
   12191             :         use pm_kind, only: CKC => CK5
   12192             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12193             :     end subroutine
   12194             : #endif
   12195             : 
   12196             : #if CK4_ENABLED
   12197             :     pure module subroutine setSortedArrDefComDef_D1_CK4(array)
   12198             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12199             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_CK4
   12200             : #endif
   12201             :         use pm_kind, only: CKC => CK4
   12202             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12203             :     end subroutine
   12204             : #endif
   12205             : 
   12206             : #if CK3_ENABLED
   12207             :     pure module subroutine setSortedArrDefComDef_D1_CK3(array)
   12208             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12209             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_CK3
   12210             : #endif
   12211             :         use pm_kind, only: CKC => CK3
   12212             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12213             :     end subroutine
   12214             : #endif
   12215             : 
   12216             : #if CK2_ENABLED
   12217             :     pure module subroutine setSortedArrDefComDef_D1_CK2(array)
   12218             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12219             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_CK2
   12220             : #endif
   12221             :         use pm_kind, only: CKC => CK2
   12222             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12223             :     end subroutine
   12224             : #endif
   12225             : 
   12226             : #if CK1_ENABLED
   12227             :     pure module subroutine setSortedArrDefComDef_D1_CK1(array)
   12228             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12229             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_CK1
   12230             : #endif
   12231             :         use pm_kind, only: CKC => CK1
   12232             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12233             :     end subroutine
   12234             : #endif
   12235             : 
   12236             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12237             : 
   12238             : #if RK5_ENABLED
   12239             :     pure module subroutine setSortedArrDefComDef_D1_RK5(array)
   12240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12241             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_RK5
   12242             : #endif
   12243             :         use pm_kind, only: RKC => RK5
   12244             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12245             :     end subroutine
   12246             : #endif
   12247             : 
   12248             : #if RK4_ENABLED
   12249             :     pure module subroutine setSortedArrDefComDef_D1_RK4(array)
   12250             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12251             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_RK4
   12252             : #endif
   12253             :         use pm_kind, only: RKC => RK4
   12254             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12255             :     end subroutine
   12256             : #endif
   12257             : 
   12258             : #if RK3_ENABLED
   12259             :     pure module subroutine setSortedArrDefComDef_D1_RK3(array)
   12260             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12261             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_RK3
   12262             : #endif
   12263             :         use pm_kind, only: RKC => RK3
   12264             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12265             :     end subroutine
   12266             : #endif
   12267             : 
   12268             : #if RK2_ENABLED
   12269             :     pure module subroutine setSortedArrDefComDef_D1_RK2(array)
   12270             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12271             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_RK2
   12272             : #endif
   12273             :         use pm_kind, only: RKC => RK2
   12274             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12275             :     end subroutine
   12276             : #endif
   12277             : 
   12278             : #if RK1_ENABLED
   12279             :     pure module subroutine setSortedArrDefComDef_D1_RK1(array)
   12280             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12281             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_RK1
   12282             : #endif
   12283             :         use pm_kind, only: RKC => RK1
   12284             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12285             :     end subroutine
   12286             : #endif
   12287             : 
   12288             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12289             : 
   12290             : #if SK5_ENABLED
   12291             :     pure module subroutine setSortedArrDefComDef_D1_PSSK5(array)
   12292             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12293             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_PSSK5
   12294             : #endif
   12295             :         use pm_kind, only: SKC => SK5
   12296             :         use pm_container, only: css_pdt
   12297             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12298             :     end subroutine
   12299             : #endif
   12300             : 
   12301             : #if SK4_ENABLED
   12302             :     pure module subroutine setSortedArrDefComDef_D1_PSSK4(array)
   12303             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12304             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_PSSK4
   12305             : #endif
   12306             :         use pm_kind, only: SKC => SK4
   12307             :         use pm_container, only: css_pdt
   12308             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12309             :     end subroutine
   12310             : #endif
   12311             : 
   12312             : #if SK3_ENABLED
   12313             :     pure module subroutine setSortedArrDefComDef_D1_PSSK3(array)
   12314             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12315             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_PSSK3
   12316             : #endif
   12317             :         use pm_kind, only: SKC => SK3
   12318             :         use pm_container, only: css_pdt
   12319             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12320             :     end subroutine
   12321             : #endif
   12322             : 
   12323             : #if SK2_ENABLED
   12324             :     pure module subroutine setSortedArrDefComDef_D1_PSSK2(array)
   12325             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12326             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_PSSK2
   12327             : #endif
   12328             :         use pm_kind, only: SKC => SK2
   12329             :         use pm_container, only: css_pdt
   12330             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12331             :     end subroutine
   12332             : #endif
   12333             : 
   12334             : #if SK1_ENABLED
   12335             :     pure module subroutine setSortedArrDefComDef_D1_PSSK1(array)
   12336             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12337             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_PSSK1
   12338             : #endif
   12339             :         use pm_kind, only: SKC => SK1
   12340             :         use pm_container, only: css_pdt
   12341             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12342             :     end subroutine
   12343             : #endif
   12344             : 
   12345             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12346             : 
   12347             :     pure module subroutine setSortedArrDefComDef_D1_BSSK(array)
   12348             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12349             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComDef_D1_BSSK
   12350             : #endif
   12351             :         use pm_kind, only: SKC => SK
   12352             :         use pm_container, only: css_type
   12353             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   12354             :     end subroutine
   12355             : 
   12356             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12357             : 
   12358             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12359             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12360             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12361             : 
   12362             :     end interface
   12363             : 
   12364             :     ! setSortedArrDefComQsorti
   12365             : 
   12366             :     interface setSorted
   12367             : 
   12368             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12369             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12370             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12371             : 
   12372             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12373             : 
   12374             : #if SK5_ENABLED
   12375             :     pure module subroutine setSortedArrDefComQsorti_D0_SK5(array, method)
   12376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12377             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D0_SK5
   12378             : #endif
   12379             :         use pm_kind, only: SKC => SK5
   12380             :         character(*,SKC)        , intent(inout)                 :: array
   12381             :         type(qsorti_type)       , intent(in)                    :: method
   12382             :     end subroutine
   12383             : #endif
   12384             : 
   12385             : #if SK4_ENABLED
   12386             :     pure module subroutine setSortedArrDefComQsorti_D0_SK4(array, method)
   12387             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12388             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D0_SK4
   12389             : #endif
   12390             :         use pm_kind, only: SKC => SK4
   12391             :         character(*,SKC)        , intent(inout)                 :: array
   12392             :         type(qsorti_type)       , intent(in)                    :: method
   12393             :     end subroutine
   12394             : #endif
   12395             : 
   12396             : #if SK3_ENABLED
   12397             :     pure module subroutine setSortedArrDefComQsorti_D0_SK3(array, method)
   12398             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12399             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D0_SK3
   12400             : #endif
   12401             :         use pm_kind, only: SKC => SK3
   12402             :         character(*,SKC)        , intent(inout)                 :: array
   12403             :         type(qsorti_type)       , intent(in)                    :: method
   12404             :     end subroutine
   12405             : #endif
   12406             : 
   12407             : #if SK2_ENABLED
   12408             :     pure module subroutine setSortedArrDefComQsorti_D0_SK2(array, method)
   12409             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12410             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D0_SK2
   12411             : #endif
   12412             :         use pm_kind, only: SKC => SK2
   12413             :         character(*,SKC)        , intent(inout)                 :: array
   12414             :         type(qsorti_type)       , intent(in)                    :: method
   12415             :     end subroutine
   12416             : #endif
   12417             : 
   12418             : #if SK1_ENABLED
   12419             :     pure module subroutine setSortedArrDefComQsorti_D0_SK1(array, method)
   12420             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12421             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D0_SK1
   12422             : #endif
   12423             :         use pm_kind, only: SKC => SK1
   12424             :         character(*,SKC)        , intent(inout)                 :: array
   12425             :         type(qsorti_type)       , intent(in)                    :: method
   12426             :     end subroutine
   12427             : #endif
   12428             : 
   12429             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12430             : 
   12431             : #if SK5_ENABLED
   12432             :     pure module subroutine setSortedArrDefComQsorti_D1_SK5(array, method)
   12433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12434             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_SK5
   12435             : #endif
   12436             :         use pm_kind, only: SKC => SK5
   12437             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12438             :         type(qsorti_type)       , intent(in)                    :: method
   12439             :     end subroutine
   12440             : #endif
   12441             : 
   12442             : #if SK4_ENABLED
   12443             :     pure module subroutine setSortedArrDefComQsorti_D1_SK4(array, method)
   12444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12445             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_SK4
   12446             : #endif
   12447             :         use pm_kind, only: SKC => SK4
   12448             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12449             :         type(qsorti_type)       , intent(in)                    :: method
   12450             :     end subroutine
   12451             : #endif
   12452             : 
   12453             : #if SK3_ENABLED
   12454             :     pure module subroutine setSortedArrDefComQsorti_D1_SK3(array, method)
   12455             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12456             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_SK3
   12457             : #endif
   12458             :         use pm_kind, only: SKC => SK3
   12459             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12460             :         type(qsorti_type)       , intent(in)                    :: method
   12461             :     end subroutine
   12462             : #endif
   12463             : 
   12464             : #if SK2_ENABLED
   12465             :     pure module subroutine setSortedArrDefComQsorti_D1_SK2(array, method)
   12466             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12467             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_SK2
   12468             : #endif
   12469             :         use pm_kind, only: SKC => SK2
   12470             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12471             :         type(qsorti_type)       , intent(in)                    :: method
   12472             :     end subroutine
   12473             : #endif
   12474             : 
   12475             : #if SK1_ENABLED
   12476             :     pure module subroutine setSortedArrDefComQsorti_D1_SK1(array, method)
   12477             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12478             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_SK1
   12479             : #endif
   12480             :         use pm_kind, only: SKC => SK1
   12481             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12482             :         type(qsorti_type)       , intent(in)                    :: method
   12483             :     end subroutine
   12484             : #endif
   12485             : 
   12486             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12487             : 
   12488             : #if IK5_ENABLED
   12489             :     pure module subroutine setSortedArrDefComQsorti_D1_IK5(array, method)
   12490             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12491             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_IK5
   12492             : #endif
   12493             :         use pm_kind, only: IKC => IK5
   12494             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12495             :         type(qsorti_type)       , intent(in)                    :: method
   12496             :     end subroutine
   12497             : #endif
   12498             : 
   12499             : #if IK4_ENABLED
   12500             :     pure module subroutine setSortedArrDefComQsorti_D1_IK4(array, method)
   12501             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12502             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_IK4
   12503             : #endif
   12504             :         use pm_kind, only: IKC => IK4
   12505             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12506             :         type(qsorti_type)       , intent(in)                    :: method
   12507             :     end subroutine
   12508             : #endif
   12509             : 
   12510             : #if IK3_ENABLED
   12511             :     pure module subroutine setSortedArrDefComQsorti_D1_IK3(array, method)
   12512             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12513             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_IK3
   12514             : #endif
   12515             :         use pm_kind, only: IKC => IK3
   12516             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12517             :         type(qsorti_type)       , intent(in)                    :: method
   12518             :     end subroutine
   12519             : #endif
   12520             : 
   12521             : #if IK2_ENABLED
   12522             :     pure module subroutine setSortedArrDefComQsorti_D1_IK2(array, method)
   12523             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12524             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_IK2
   12525             : #endif
   12526             :         use pm_kind, only: IKC => IK2
   12527             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12528             :         type(qsorti_type)       , intent(in)                    :: method
   12529             :     end subroutine
   12530             : #endif
   12531             : 
   12532             : #if IK1_ENABLED
   12533             :     pure module subroutine setSortedArrDefComQsorti_D1_IK1(array, method)
   12534             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12535             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_IK1
   12536             : #endif
   12537             :         use pm_kind, only: IKC => IK1
   12538             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12539             :         type(qsorti_type)       , intent(in)                    :: method
   12540             :     end subroutine
   12541             : #endif
   12542             : 
   12543             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12544             : 
   12545             : #if LK5_ENABLED
   12546             :     pure module subroutine setSortedArrDefComQsorti_D1_LK5(array, method)
   12547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12548             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_LK5
   12549             : #endif
   12550             :         use pm_kind, only: LKC => LK5
   12551             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12552             :         type(qsorti_type)       , intent(in)                    :: method
   12553             :     end subroutine
   12554             : #endif
   12555             : 
   12556             : #if LK4_ENABLED
   12557             :     pure module subroutine setSortedArrDefComQsorti_D1_LK4(array, method)
   12558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_LK4
   12560             : #endif
   12561             :         use pm_kind, only: LKC => LK4
   12562             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12563             :         type(qsorti_type)       , intent(in)                    :: method
   12564             :     end subroutine
   12565             : #endif
   12566             : 
   12567             : #if LK3_ENABLED
   12568             :     pure module subroutine setSortedArrDefComQsorti_D1_LK3(array, method)
   12569             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12570             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_LK3
   12571             : #endif
   12572             :         use pm_kind, only: LKC => LK3
   12573             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12574             :         type(qsorti_type)       , intent(in)                    :: method
   12575             :     end subroutine
   12576             : #endif
   12577             : 
   12578             : #if LK2_ENABLED
   12579             :     pure module subroutine setSortedArrDefComQsorti_D1_LK2(array, method)
   12580             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12581             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_LK2
   12582             : #endif
   12583             :         use pm_kind, only: LKC => LK2
   12584             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12585             :         type(qsorti_type)       , intent(in)                    :: method
   12586             :     end subroutine
   12587             : #endif
   12588             : 
   12589             : #if LK1_ENABLED
   12590             :     pure module subroutine setSortedArrDefComQsorti_D1_LK1(array, method)
   12591             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12592             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_LK1
   12593             : #endif
   12594             :         use pm_kind, only: LKC => LK1
   12595             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12596             :         type(qsorti_type)       , intent(in)                    :: method
   12597             :     end subroutine
   12598             : #endif
   12599             : 
   12600             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12601             : 
   12602             : #if CK5_ENABLED
   12603             :     pure module subroutine setSortedArrDefComQsorti_D1_CK5(array, method)
   12604             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12605             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_CK5
   12606             : #endif
   12607             :         use pm_kind, only: CKC => CK5
   12608             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12609             :         type(qsorti_type)       , intent(in)                    :: method
   12610             :     end subroutine
   12611             : #endif
   12612             : 
   12613             : #if CK4_ENABLED
   12614             :     pure module subroutine setSortedArrDefComQsorti_D1_CK4(array, method)
   12615             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12616             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_CK4
   12617             : #endif
   12618             :         use pm_kind, only: CKC => CK4
   12619             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12620             :         type(qsorti_type)       , intent(in)                    :: method
   12621             :     end subroutine
   12622             : #endif
   12623             : 
   12624             : #if CK3_ENABLED
   12625             :     pure module subroutine setSortedArrDefComQsorti_D1_CK3(array, method)
   12626             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12627             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_CK3
   12628             : #endif
   12629             :         use pm_kind, only: CKC => CK3
   12630             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12631             :         type(qsorti_type)       , intent(in)                    :: method
   12632             :     end subroutine
   12633             : #endif
   12634             : 
   12635             : #if CK2_ENABLED
   12636             :     pure module subroutine setSortedArrDefComQsorti_D1_CK2(array, method)
   12637             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12638             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_CK2
   12639             : #endif
   12640             :         use pm_kind, only: CKC => CK2
   12641             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12642             :         type(qsorti_type)       , intent(in)                    :: method
   12643             :     end subroutine
   12644             : #endif
   12645             : 
   12646             : #if CK1_ENABLED
   12647             :     pure module subroutine setSortedArrDefComQsorti_D1_CK1(array, method)
   12648             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12649             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_CK1
   12650             : #endif
   12651             :         use pm_kind, only: CKC => CK1
   12652             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   12653             :         type(qsorti_type)       , intent(in)                    :: method
   12654             :     end subroutine
   12655             : #endif
   12656             : 
   12657             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12658             : 
   12659             : #if RK5_ENABLED
   12660             :     pure module subroutine setSortedArrDefComQsorti_D1_RK5(array, method)
   12661             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12662             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_RK5
   12663             : #endif
   12664             :         use pm_kind, only: RKC => RK5
   12665             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12666             :         type(qsorti_type)       , intent(in)                    :: method
   12667             :     end subroutine
   12668             : #endif
   12669             : 
   12670             : #if RK4_ENABLED
   12671             :     pure module subroutine setSortedArrDefComQsorti_D1_RK4(array, method)
   12672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_RK4
   12674             : #endif
   12675             :         use pm_kind, only: RKC => RK4
   12676             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12677             :         type(qsorti_type)       , intent(in)                    :: method
   12678             :     end subroutine
   12679             : #endif
   12680             : 
   12681             : #if RK3_ENABLED
   12682             :     pure module subroutine setSortedArrDefComQsorti_D1_RK3(array, method)
   12683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12684             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_RK3
   12685             : #endif
   12686             :         use pm_kind, only: RKC => RK3
   12687             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12688             :         type(qsorti_type)       , intent(in)                    :: method
   12689             :     end subroutine
   12690             : #endif
   12691             : 
   12692             : #if RK2_ENABLED
   12693             :     pure module subroutine setSortedArrDefComQsorti_D1_RK2(array, method)
   12694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12695             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_RK2
   12696             : #endif
   12697             :         use pm_kind, only: RKC => RK2
   12698             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12699             :         type(qsorti_type)       , intent(in)                    :: method
   12700             :     end subroutine
   12701             : #endif
   12702             : 
   12703             : #if RK1_ENABLED
   12704             :     pure module subroutine setSortedArrDefComQsorti_D1_RK1(array, method)
   12705             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12706             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_RK1
   12707             : #endif
   12708             :         use pm_kind, only: RKC => RK1
   12709             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   12710             :         type(qsorti_type)       , intent(in)                    :: method
   12711             :     end subroutine
   12712             : #endif
   12713             : 
   12714             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12715             : 
   12716             : #if SK5_ENABLED
   12717             :     pure module subroutine setSortedArrDefComQsorti_D1_PSSK5(array, method)
   12718             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12719             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_PSSK5
   12720             : #endif
   12721             :         use pm_kind, only: SKC => SK5
   12722             :         use pm_container, only: css_pdt
   12723             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12724             :         type(qsorti_type)       , intent(in)                    :: method
   12725             :     end subroutine
   12726             : #endif
   12727             : 
   12728             : #if SK4_ENABLED
   12729             :     pure module subroutine setSortedArrDefComQsorti_D1_PSSK4(array, method)
   12730             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12731             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_PSSK4
   12732             : #endif
   12733             :         use pm_kind, only: SKC => SK4
   12734             :         use pm_container, only: css_pdt
   12735             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12736             :         type(qsorti_type)       , intent(in)                    :: method
   12737             :     end subroutine
   12738             : #endif
   12739             : 
   12740             : #if SK3_ENABLED
   12741             :     pure module subroutine setSortedArrDefComQsorti_D1_PSSK3(array, method)
   12742             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12743             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_PSSK3
   12744             : #endif
   12745             :         use pm_kind, only: SKC => SK3
   12746             :         use pm_container, only: css_pdt
   12747             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12748             :         type(qsorti_type)       , intent(in)                    :: method
   12749             :     end subroutine
   12750             : #endif
   12751             : 
   12752             : #if SK2_ENABLED
   12753             :     pure module subroutine setSortedArrDefComQsorti_D1_PSSK2(array, method)
   12754             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12755             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_PSSK2
   12756             : #endif
   12757             :         use pm_kind, only: SKC => SK2
   12758             :         use pm_container, only: css_pdt
   12759             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12760             :         type(qsorti_type)       , intent(in)                    :: method
   12761             :     end subroutine
   12762             : #endif
   12763             : 
   12764             : #if SK1_ENABLED
   12765             :     pure module subroutine setSortedArrDefComQsorti_D1_PSSK1(array, method)
   12766             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12767             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_PSSK1
   12768             : #endif
   12769             :         use pm_kind, only: SKC => SK1
   12770             :         use pm_container, only: css_pdt
   12771             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   12772             :         type(qsorti_type)       , intent(in)                    :: method
   12773             :     end subroutine
   12774             : #endif
   12775             : 
   12776             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12777             : 
   12778             :     pure module subroutine setSortedArrDefComQsorti_D1_BSSK(array, method)
   12779             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12780             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsorti_D1_BSSK
   12781             : #endif
   12782             :         use pm_kind, only: SKC => SK
   12783             :         use pm_container, only: css_type
   12784             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   12785             :         type(qsorti_type)       , intent(in)                    :: method
   12786             :     end subroutine
   12787             : 
   12788             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12789             : 
   12790             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12791             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12792             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12793             : 
   12794             :     end interface
   12795             : 
   12796             :     ! setSortedArrDefComQsortr
   12797             : 
   12798             :     interface setSorted
   12799             : 
   12800             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12801             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12802             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12803             : 
   12804             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12805             : 
   12806             : #if SK5_ENABLED
   12807             :     pure recursive module subroutine setSortedArrDefComQsortr_D0_SK5(array, method)
   12808             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12809             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D0_SK5
   12810             : #endif
   12811             :         use pm_kind, only: SKC => SK5
   12812             :         character(*,SKC)        , intent(inout)                 :: array
   12813             :         type(qsortr_type)       , intent(in)                    :: method
   12814             :     end subroutine
   12815             : #endif
   12816             : 
   12817             : #if SK4_ENABLED
   12818             :     pure recursive module subroutine setSortedArrDefComQsortr_D0_SK4(array, method)
   12819             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12820             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D0_SK4
   12821             : #endif
   12822             :         use pm_kind, only: SKC => SK4
   12823             :         character(*,SKC)        , intent(inout)                 :: array
   12824             :         type(qsortr_type)       , intent(in)                    :: method
   12825             :     end subroutine
   12826             : #endif
   12827             : 
   12828             : #if SK3_ENABLED
   12829             :     pure recursive module subroutine setSortedArrDefComQsortr_D0_SK3(array, method)
   12830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12831             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D0_SK3
   12832             : #endif
   12833             :         use pm_kind, only: SKC => SK3
   12834             :         character(*,SKC)        , intent(inout)                 :: array
   12835             :         type(qsortr_type)       , intent(in)                    :: method
   12836             :     end subroutine
   12837             : #endif
   12838             : 
   12839             : #if SK2_ENABLED
   12840             :     pure recursive module subroutine setSortedArrDefComQsortr_D0_SK2(array, method)
   12841             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12842             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D0_SK2
   12843             : #endif
   12844             :         use pm_kind, only: SKC => SK2
   12845             :         character(*,SKC)        , intent(inout)                 :: array
   12846             :         type(qsortr_type)       , intent(in)                    :: method
   12847             :     end subroutine
   12848             : #endif
   12849             : 
   12850             : #if SK1_ENABLED
   12851             :     pure recursive module subroutine setSortedArrDefComQsortr_D0_SK1(array, method)
   12852             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12853             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D0_SK1
   12854             : #endif
   12855             :         use pm_kind, only: SKC => SK1
   12856             :         character(*,SKC)        , intent(inout)                 :: array
   12857             :         type(qsortr_type)       , intent(in)                    :: method
   12858             :     end subroutine
   12859             : #endif
   12860             : 
   12861             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12862             : 
   12863             : #if SK5_ENABLED
   12864             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_SK5(array, method)
   12865             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12866             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_SK5
   12867             : #endif
   12868             :         use pm_kind, only: SKC => SK5
   12869             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12870             :         type(qsortr_type)       , intent(in)                    :: method
   12871             :     end subroutine
   12872             : #endif
   12873             : 
   12874             : #if SK4_ENABLED
   12875             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_SK4(array, method)
   12876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12877             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_SK4
   12878             : #endif
   12879             :         use pm_kind, only: SKC => SK4
   12880             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12881             :         type(qsortr_type)       , intent(in)                    :: method
   12882             :     end subroutine
   12883             : #endif
   12884             : 
   12885             : #if SK3_ENABLED
   12886             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_SK3(array, method)
   12887             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12888             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_SK3
   12889             : #endif
   12890             :         use pm_kind, only: SKC => SK3
   12891             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12892             :         type(qsortr_type)       , intent(in)                    :: method
   12893             :     end subroutine
   12894             : #endif
   12895             : 
   12896             : #if SK2_ENABLED
   12897             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_SK2(array, method)
   12898             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12899             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_SK2
   12900             : #endif
   12901             :         use pm_kind, only: SKC => SK2
   12902             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12903             :         type(qsortr_type)       , intent(in)                    :: method
   12904             :     end subroutine
   12905             : #endif
   12906             : 
   12907             : #if SK1_ENABLED
   12908             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_SK1(array, method)
   12909             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12910             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_SK1
   12911             : #endif
   12912             :         use pm_kind, only: SKC => SK1
   12913             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   12914             :         type(qsortr_type)       , intent(in)                    :: method
   12915             :     end subroutine
   12916             : #endif
   12917             : 
   12918             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12919             : 
   12920             : #if IK5_ENABLED
   12921             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_IK5(array, method)
   12922             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12923             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_IK5
   12924             : #endif
   12925             :         use pm_kind, only: IKC => IK5
   12926             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12927             :         type(qsortr_type)       , intent(in)                    :: method
   12928             :     end subroutine
   12929             : #endif
   12930             : 
   12931             : #if IK4_ENABLED
   12932             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_IK4(array, method)
   12933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12934             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_IK4
   12935             : #endif
   12936             :         use pm_kind, only: IKC => IK4
   12937             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12938             :         type(qsortr_type)       , intent(in)                    :: method
   12939             :     end subroutine
   12940             : #endif
   12941             : 
   12942             : #if IK3_ENABLED
   12943             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_IK3(array, method)
   12944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12945             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_IK3
   12946             : #endif
   12947             :         use pm_kind, only: IKC => IK3
   12948             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12949             :         type(qsortr_type)       , intent(in)                    :: method
   12950             :     end subroutine
   12951             : #endif
   12952             : 
   12953             : #if IK2_ENABLED
   12954             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_IK2(array, method)
   12955             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12956             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_IK2
   12957             : #endif
   12958             :         use pm_kind, only: IKC => IK2
   12959             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12960             :         type(qsortr_type)       , intent(in)                    :: method
   12961             :     end subroutine
   12962             : #endif
   12963             : 
   12964             : #if IK1_ENABLED
   12965             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_IK1(array, method)
   12966             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12967             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_IK1
   12968             : #endif
   12969             :         use pm_kind, only: IKC => IK1
   12970             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   12971             :         type(qsortr_type)       , intent(in)                    :: method
   12972             :     end subroutine
   12973             : #endif
   12974             : 
   12975             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   12976             : 
   12977             : #if LK5_ENABLED
   12978             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_LK5(array, method)
   12979             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12980             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_LK5
   12981             : #endif
   12982             :         use pm_kind, only: LKC => LK5
   12983             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12984             :         type(qsortr_type)       , intent(in)                    :: method
   12985             :     end subroutine
   12986             : #endif
   12987             : 
   12988             : #if LK4_ENABLED
   12989             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_LK4(array, method)
   12990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   12991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_LK4
   12992             : #endif
   12993             :         use pm_kind, only: LKC => LK4
   12994             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   12995             :         type(qsortr_type)       , intent(in)                    :: method
   12996             :     end subroutine
   12997             : #endif
   12998             : 
   12999             : #if LK3_ENABLED
   13000             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_LK3(array, method)
   13001             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13002             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_LK3
   13003             : #endif
   13004             :         use pm_kind, only: LKC => LK3
   13005             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13006             :         type(qsortr_type)       , intent(in)                    :: method
   13007             :     end subroutine
   13008             : #endif
   13009             : 
   13010             : #if LK2_ENABLED
   13011             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_LK2(array, method)
   13012             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13013             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_LK2
   13014             : #endif
   13015             :         use pm_kind, only: LKC => LK2
   13016             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13017             :         type(qsortr_type)       , intent(in)                    :: method
   13018             :     end subroutine
   13019             : #endif
   13020             : 
   13021             : #if LK1_ENABLED
   13022             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_LK1(array, method)
   13023             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13024             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_LK1
   13025             : #endif
   13026             :         use pm_kind, only: LKC => LK1
   13027             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13028             :         type(qsortr_type)       , intent(in)                    :: method
   13029             :     end subroutine
   13030             : #endif
   13031             : 
   13032             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13033             : 
   13034             : #if CK5_ENABLED
   13035             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_CK5(array, method)
   13036             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13037             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_CK5
   13038             : #endif
   13039             :         use pm_kind, only: CKC => CK5
   13040             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13041             :         type(qsortr_type)       , intent(in)                    :: method
   13042             :     end subroutine
   13043             : #endif
   13044             : 
   13045             : #if CK4_ENABLED
   13046             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_CK4(array, method)
   13047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13048             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_CK4
   13049             : #endif
   13050             :         use pm_kind, only: CKC => CK4
   13051             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13052             :         type(qsortr_type)       , intent(in)                    :: method
   13053             :     end subroutine
   13054             : #endif
   13055             : 
   13056             : #if CK3_ENABLED
   13057             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_CK3(array, method)
   13058             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13059             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_CK3
   13060             : #endif
   13061             :         use pm_kind, only: CKC => CK3
   13062             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13063             :         type(qsortr_type)       , intent(in)                    :: method
   13064             :     end subroutine
   13065             : #endif
   13066             : 
   13067             : #if CK2_ENABLED
   13068             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_CK2(array, method)
   13069             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13070             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_CK2
   13071             : #endif
   13072             :         use pm_kind, only: CKC => CK2
   13073             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13074             :         type(qsortr_type)       , intent(in)                    :: method
   13075             :     end subroutine
   13076             : #endif
   13077             : 
   13078             : #if CK1_ENABLED
   13079             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_CK1(array, method)
   13080             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13081             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_CK1
   13082             : #endif
   13083             :         use pm_kind, only: CKC => CK1
   13084             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13085             :         type(qsortr_type)       , intent(in)                    :: method
   13086             :     end subroutine
   13087             : #endif
   13088             : 
   13089             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13090             : 
   13091             : #if RK5_ENABLED
   13092             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_RK5(array, method)
   13093             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13094             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_RK5
   13095             : #endif
   13096             :         use pm_kind, only: RKC => RK5
   13097             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13098             :         type(qsortr_type)       , intent(in)                    :: method
   13099             :     end subroutine
   13100             : #endif
   13101             : 
   13102             : #if RK4_ENABLED
   13103             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_RK4(array, method)
   13104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_RK4
   13106             : #endif
   13107             :         use pm_kind, only: RKC => RK4
   13108             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13109             :         type(qsortr_type)       , intent(in)                    :: method
   13110             :     end subroutine
   13111             : #endif
   13112             : 
   13113             : #if RK3_ENABLED
   13114             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_RK3(array, method)
   13115             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13116             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_RK3
   13117             : #endif
   13118             :         use pm_kind, only: RKC => RK3
   13119             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13120             :         type(qsortr_type)       , intent(in)                    :: method
   13121             :     end subroutine
   13122             : #endif
   13123             : 
   13124             : #if RK2_ENABLED
   13125             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_RK2(array, method)
   13126             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13127             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_RK2
   13128             : #endif
   13129             :         use pm_kind, only: RKC => RK2
   13130             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13131             :         type(qsortr_type)       , intent(in)                    :: method
   13132             :     end subroutine
   13133             : #endif
   13134             : 
   13135             : #if RK1_ENABLED
   13136             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_RK1(array, method)
   13137             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13138             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_RK1
   13139             : #endif
   13140             :         use pm_kind, only: RKC => RK1
   13141             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13142             :         type(qsortr_type)       , intent(in)                    :: method
   13143             :     end subroutine
   13144             : #endif
   13145             : 
   13146             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13147             : 
   13148             : #if SK5_ENABLED
   13149             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_PSSK5(array, method)
   13150             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13151             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_PSSK5
   13152             : #endif
   13153             :         use pm_kind, only: SKC => SK5
   13154             :         use pm_container, only: css_pdt
   13155             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13156             :         type(qsortr_type)       , intent(in)                    :: method
   13157             :     end subroutine
   13158             : #endif
   13159             : 
   13160             : #if SK4_ENABLED
   13161             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_PSSK4(array, method)
   13162             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13163             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_PSSK4
   13164             : #endif
   13165             :         use pm_kind, only: SKC => SK4
   13166             :         use pm_container, only: css_pdt
   13167             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13168             :         type(qsortr_type)       , intent(in)                    :: method
   13169             :     end subroutine
   13170             : #endif
   13171             : 
   13172             : #if SK3_ENABLED
   13173             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_PSSK3(array, method)
   13174             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13175             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_PSSK3
   13176             : #endif
   13177             :         use pm_kind, only: SKC => SK3
   13178             :         use pm_container, only: css_pdt
   13179             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13180             :         type(qsortr_type)       , intent(in)                    :: method
   13181             :     end subroutine
   13182             : #endif
   13183             : 
   13184             : #if SK2_ENABLED
   13185             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_PSSK2(array, method)
   13186             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13187             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_PSSK2
   13188             : #endif
   13189             :         use pm_kind, only: SKC => SK2
   13190             :         use pm_container, only: css_pdt
   13191             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13192             :         type(qsortr_type)       , intent(in)                    :: method
   13193             :     end subroutine
   13194             : #endif
   13195             : 
   13196             : #if SK1_ENABLED
   13197             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_PSSK1(array, method)
   13198             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13199             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_PSSK1
   13200             : #endif
   13201             :         use pm_kind, only: SKC => SK1
   13202             :         use pm_container, only: css_pdt
   13203             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13204             :         type(qsortr_type)       , intent(in)                    :: method
   13205             :     end subroutine
   13206             : #endif
   13207             : 
   13208             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13209             : 
   13210             :     pure recursive module subroutine setSortedArrDefComQsortr_D1_BSSK(array, method)
   13211             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13212             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortr_D1_BSSK
   13213             : #endif
   13214             :         use pm_kind, only: SKC => SK
   13215             :         use pm_container, only: css_type
   13216             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   13217             :         type(qsortr_type)       , intent(in)                    :: method
   13218             :     end subroutine
   13219             : 
   13220             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13221             : 
   13222             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13223             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13224             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13225             : 
   13226             :     end interface
   13227             : 
   13228             :     ! setSortedArrDefComQsortrdp
   13229             : 
   13230             :     interface setSorted
   13231             : 
   13232             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13233             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13234             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13235             : 
   13236             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13237             : 
   13238             : #if SK5_ENABLED
   13239             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D0_SK5(array, method)
   13240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13241             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D0_SK5
   13242             : #endif
   13243             :         use pm_kind, only: SKC => SK5
   13244             :         character(*,SKC)        , intent(inout)                 :: array
   13245             :         type(qsortrdp_type)     , intent(in)                    :: method
   13246             :     end subroutine
   13247             : #endif
   13248             : 
   13249             : #if SK4_ENABLED
   13250             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D0_SK4(array, method)
   13251             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13252             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D0_SK4
   13253             : #endif
   13254             :         use pm_kind, only: SKC => SK4
   13255             :         character(*,SKC)        , intent(inout)                 :: array
   13256             :         type(qsortrdp_type)     , intent(in)                    :: method
   13257             :     end subroutine
   13258             : #endif
   13259             : 
   13260             : #if SK3_ENABLED
   13261             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D0_SK3(array, method)
   13262             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13263             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D0_SK3
   13264             : #endif
   13265             :         use pm_kind, only: SKC => SK3
   13266             :         character(*,SKC)        , intent(inout)                 :: array
   13267             :         type(qsortrdp_type)     , intent(in)                    :: method
   13268             :     end subroutine
   13269             : #endif
   13270             : 
   13271             : #if SK2_ENABLED
   13272             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D0_SK2(array, method)
   13273             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13274             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D0_SK2
   13275             : #endif
   13276             :         use pm_kind, only: SKC => SK2
   13277             :         character(*,SKC)        , intent(inout)                 :: array
   13278             :         type(qsortrdp_type)     , intent(in)                    :: method
   13279             :     end subroutine
   13280             : #endif
   13281             : 
   13282             : #if SK1_ENABLED
   13283             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D0_SK1(array, method)
   13284             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13285             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D0_SK1
   13286             : #endif
   13287             :         use pm_kind, only: SKC => SK1
   13288             :         character(*,SKC)        , intent(inout)                 :: array
   13289             :         type(qsortrdp_type)     , intent(in)                    :: method
   13290             :     end subroutine
   13291             : #endif
   13292             : 
   13293             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13294             : 
   13295             : #if SK5_ENABLED
   13296             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_SK5(array, method)
   13297             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13298             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_SK5
   13299             : #endif
   13300             :         use pm_kind, only: SKC => SK5
   13301             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13302             :         type(qsortrdp_type)     , intent(in)                    :: method
   13303             :     end subroutine
   13304             : #endif
   13305             : 
   13306             : #if SK4_ENABLED
   13307             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_SK4(array, method)
   13308             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13309             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_SK4
   13310             : #endif
   13311             :         use pm_kind, only: SKC => SK4
   13312             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13313             :         type(qsortrdp_type)     , intent(in)                    :: method
   13314             :     end subroutine
   13315             : #endif
   13316             : 
   13317             : #if SK3_ENABLED
   13318             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_SK3(array, method)
   13319             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13320             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_SK3
   13321             : #endif
   13322             :         use pm_kind, only: SKC => SK3
   13323             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13324             :         type(qsortrdp_type)     , intent(in)                    :: method
   13325             :     end subroutine
   13326             : #endif
   13327             : 
   13328             : #if SK2_ENABLED
   13329             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_SK2(array, method)
   13330             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13331             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_SK2
   13332             : #endif
   13333             :         use pm_kind, only: SKC => SK2
   13334             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13335             :         type(qsortrdp_type)     , intent(in)                    :: method
   13336             :     end subroutine
   13337             : #endif
   13338             : 
   13339             : #if SK1_ENABLED
   13340             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_SK1(array, method)
   13341             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13342             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_SK1
   13343             : #endif
   13344             :         use pm_kind, only: SKC => SK1
   13345             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13346             :         type(qsortrdp_type)     , intent(in)                    :: method
   13347             :     end subroutine
   13348             : #endif
   13349             : 
   13350             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13351             : 
   13352             : #if IK5_ENABLED
   13353             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_IK5(array, method)
   13354             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13355             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_IK5
   13356             : #endif
   13357             :         use pm_kind, only: IKC => IK5
   13358             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13359             :         type(qsortrdp_type)     , intent(in)                    :: method
   13360             :     end subroutine
   13361             : #endif
   13362             : 
   13363             : #if IK4_ENABLED
   13364             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_IK4(array, method)
   13365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13366             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_IK4
   13367             : #endif
   13368             :         use pm_kind, only: IKC => IK4
   13369             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13370             :         type(qsortrdp_type)     , intent(in)                    :: method
   13371             :     end subroutine
   13372             : #endif
   13373             : 
   13374             : #if IK3_ENABLED
   13375             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_IK3(array, method)
   13376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13377             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_IK3
   13378             : #endif
   13379             :         use pm_kind, only: IKC => IK3
   13380             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13381             :         type(qsortrdp_type)     , intent(in)                    :: method
   13382             :     end subroutine
   13383             : #endif
   13384             : 
   13385             : #if IK2_ENABLED
   13386             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_IK2(array, method)
   13387             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13388             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_IK2
   13389             : #endif
   13390             :         use pm_kind, only: IKC => IK2
   13391             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13392             :         type(qsortrdp_type)     , intent(in)                    :: method
   13393             :     end subroutine
   13394             : #endif
   13395             : 
   13396             : #if IK1_ENABLED
   13397             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_IK1(array, method)
   13398             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13399             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_IK1
   13400             : #endif
   13401             :         use pm_kind, only: IKC => IK1
   13402             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13403             :         type(qsortrdp_type)     , intent(in)                    :: method
   13404             :     end subroutine
   13405             : #endif
   13406             : 
   13407             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13408             : 
   13409             : #if LK5_ENABLED
   13410             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_LK5(array, method)
   13411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13412             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_LK5
   13413             : #endif
   13414             :         use pm_kind, only: LKC => LK5
   13415             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13416             :         type(qsortrdp_type)     , intent(in)                    :: method
   13417             :     end subroutine
   13418             : #endif
   13419             : 
   13420             : #if LK4_ENABLED
   13421             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_LK4(array, method)
   13422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13423             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_LK4
   13424             : #endif
   13425             :         use pm_kind, only: LKC => LK4
   13426             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13427             :         type(qsortrdp_type)     , intent(in)                    :: method
   13428             :     end subroutine
   13429             : #endif
   13430             : 
   13431             : #if LK3_ENABLED
   13432             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_LK3(array, method)
   13433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13434             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_LK3
   13435             : #endif
   13436             :         use pm_kind, only: LKC => LK3
   13437             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13438             :         type(qsortrdp_type)     , intent(in)                    :: method
   13439             :     end subroutine
   13440             : #endif
   13441             : 
   13442             : #if LK2_ENABLED
   13443             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_LK2(array, method)
   13444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13445             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_LK2
   13446             : #endif
   13447             :         use pm_kind, only: LKC => LK2
   13448             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13449             :         type(qsortrdp_type)     , intent(in)                    :: method
   13450             :     end subroutine
   13451             : #endif
   13452             : 
   13453             : #if LK1_ENABLED
   13454             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_LK1(array, method)
   13455             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13456             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_LK1
   13457             : #endif
   13458             :         use pm_kind, only: LKC => LK1
   13459             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13460             :         type(qsortrdp_type)     , intent(in)                    :: method
   13461             :     end subroutine
   13462             : #endif
   13463             : 
   13464             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13465             : 
   13466             : #if CK5_ENABLED
   13467             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_CK5(array, method)
   13468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13469             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_CK5
   13470             : #endif
   13471             :         use pm_kind, only: CKC => CK5
   13472             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13473             :         type(qsortrdp_type)     , intent(in)                    :: method
   13474             :     end subroutine
   13475             : #endif
   13476             : 
   13477             : #if CK4_ENABLED
   13478             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_CK4(array, method)
   13479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13480             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_CK4
   13481             : #endif
   13482             :         use pm_kind, only: CKC => CK4
   13483             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13484             :         type(qsortrdp_type)     , intent(in)                    :: method
   13485             :     end subroutine
   13486             : #endif
   13487             : 
   13488             : #if CK3_ENABLED
   13489             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_CK3(array, method)
   13490             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13491             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_CK3
   13492             : #endif
   13493             :         use pm_kind, only: CKC => CK3
   13494             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13495             :         type(qsortrdp_type)     , intent(in)                    :: method
   13496             :     end subroutine
   13497             : #endif
   13498             : 
   13499             : #if CK2_ENABLED
   13500             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_CK2(array, method)
   13501             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13502             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_CK2
   13503             : #endif
   13504             :         use pm_kind, only: CKC => CK2
   13505             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13506             :         type(qsortrdp_type)     , intent(in)                    :: method
   13507             :     end subroutine
   13508             : #endif
   13509             : 
   13510             : #if CK1_ENABLED
   13511             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_CK1(array, method)
   13512             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13513             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_CK1
   13514             : #endif
   13515             :         use pm_kind, only: CKC => CK1
   13516             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13517             :         type(qsortrdp_type)     , intent(in)                    :: method
   13518             :     end subroutine
   13519             : #endif
   13520             : 
   13521             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13522             : 
   13523             : #if RK5_ENABLED
   13524             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_RK5(array, method)
   13525             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13526             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_RK5
   13527             : #endif
   13528             :         use pm_kind, only: RKC => RK5
   13529             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13530             :         type(qsortrdp_type)     , intent(in)                    :: method
   13531             :     end subroutine
   13532             : #endif
   13533             : 
   13534             : #if RK4_ENABLED
   13535             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_RK4(array, method)
   13536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13537             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_RK4
   13538             : #endif
   13539             :         use pm_kind, only: RKC => RK4
   13540             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13541             :         type(qsortrdp_type)     , intent(in)                    :: method
   13542             :     end subroutine
   13543             : #endif
   13544             : 
   13545             : #if RK3_ENABLED
   13546             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_RK3(array, method)
   13547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13548             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_RK3
   13549             : #endif
   13550             :         use pm_kind, only: RKC => RK3
   13551             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13552             :         type(qsortrdp_type)     , intent(in)                    :: method
   13553             :     end subroutine
   13554             : #endif
   13555             : 
   13556             : #if RK2_ENABLED
   13557             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_RK2(array, method)
   13558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_RK2
   13560             : #endif
   13561             :         use pm_kind, only: RKC => RK2
   13562             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13563             :         type(qsortrdp_type)     , intent(in)                    :: method
   13564             :     end subroutine
   13565             : #endif
   13566             : 
   13567             : #if RK1_ENABLED
   13568             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_RK1(array, method)
   13569             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13570             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_RK1
   13571             : #endif
   13572             :         use pm_kind, only: RKC => RK1
   13573             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13574             :         type(qsortrdp_type)     , intent(in)                    :: method
   13575             :     end subroutine
   13576             : #endif
   13577             : 
   13578             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13579             : 
   13580             : #if SK5_ENABLED
   13581             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_PSSK5(array, method)
   13582             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13583             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_PSSK5
   13584             : #endif
   13585             :         use pm_kind, only: SKC => SK5
   13586             :         use pm_container, only: css_pdt
   13587             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13588             :         type(qsortrdp_type)     , intent(in)                    :: method
   13589             :     end subroutine
   13590             : #endif
   13591             : 
   13592             : #if SK4_ENABLED
   13593             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_PSSK4(array, method)
   13594             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13595             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_PSSK4
   13596             : #endif
   13597             :         use pm_kind, only: SKC => SK4
   13598             :         use pm_container, only: css_pdt
   13599             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13600             :         type(qsortrdp_type)     , intent(in)                    :: method
   13601             :     end subroutine
   13602             : #endif
   13603             : 
   13604             : #if SK3_ENABLED
   13605             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_PSSK3(array, method)
   13606             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13607             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_PSSK3
   13608             : #endif
   13609             :         use pm_kind, only: SKC => SK3
   13610             :         use pm_container, only: css_pdt
   13611             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13612             :         type(qsortrdp_type)     , intent(in)                    :: method
   13613             :     end subroutine
   13614             : #endif
   13615             : 
   13616             : #if SK2_ENABLED
   13617             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_PSSK2(array, method)
   13618             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13619             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_PSSK2
   13620             : #endif
   13621             :         use pm_kind, only: SKC => SK2
   13622             :         use pm_container, only: css_pdt
   13623             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13624             :         type(qsortrdp_type)     , intent(in)                    :: method
   13625             :     end subroutine
   13626             : #endif
   13627             : 
   13628             : #if SK1_ENABLED
   13629             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_PSSK1(array, method)
   13630             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13631             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_PSSK1
   13632             : #endif
   13633             :         use pm_kind, only: SKC => SK1
   13634             :         use pm_container, only: css_pdt
   13635             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   13636             :         type(qsortrdp_type)     , intent(in)                    :: method
   13637             :     end subroutine
   13638             : #endif
   13639             : 
   13640             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13641             : 
   13642             :     pure recursive module subroutine setSortedArrDefComQsortrdp_D1_BSSK(array, method)
   13643             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13644             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComQsortrdp_D1_BSSK
   13645             : #endif
   13646             :         use pm_kind, only: SKC => SK
   13647             :         use pm_container, only: css_type
   13648             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   13649             :         type(qsortrdp_type)     , intent(in)                    :: method
   13650             :     end subroutine
   13651             : 
   13652             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13653             : 
   13654             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13655             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13656             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13657             : 
   13658             :     end interface
   13659             : 
   13660             :     ! setSortedArrDefComBubble
   13661             : 
   13662             :     interface setSorted
   13663             : 
   13664             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13665             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13666             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13667             : 
   13668             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13669             : 
   13670             : #if SK5_ENABLED
   13671             :     pure module subroutine setSortedArrDefComBubble_D0_SK5(array, method)
   13672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D0_SK5
   13674             : #endif
   13675             :         use pm_kind, only: SKC => SK5
   13676             :         character(*,SKC)        , intent(inout)                 :: array
   13677             :         type(bubble_type)       , intent(in)                    :: method
   13678             :     end subroutine
   13679             : #endif
   13680             : 
   13681             : #if SK4_ENABLED
   13682             :     pure module subroutine setSortedArrDefComBubble_D0_SK4(array, method)
   13683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13684             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D0_SK4
   13685             : #endif
   13686             :         use pm_kind, only: SKC => SK4
   13687             :         character(*,SKC)        , intent(inout)                 :: array
   13688             :         type(bubble_type)       , intent(in)                    :: method
   13689             :     end subroutine
   13690             : #endif
   13691             : 
   13692             : #if SK3_ENABLED
   13693             :     pure module subroutine setSortedArrDefComBubble_D0_SK3(array, method)
   13694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13695             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D0_SK3
   13696             : #endif
   13697             :         use pm_kind, only: SKC => SK3
   13698             :         character(*,SKC)        , intent(inout)                 :: array
   13699             :         type(bubble_type)       , intent(in)                    :: method
   13700             :     end subroutine
   13701             : #endif
   13702             : 
   13703             : #if SK2_ENABLED
   13704             :     pure module subroutine setSortedArrDefComBubble_D0_SK2(array, method)
   13705             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13706             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D0_SK2
   13707             : #endif
   13708             :         use pm_kind, only: SKC => SK2
   13709             :         character(*,SKC)        , intent(inout)                 :: array
   13710             :         type(bubble_type)       , intent(in)                    :: method
   13711             :     end subroutine
   13712             : #endif
   13713             : 
   13714             : #if SK1_ENABLED
   13715             :     pure module subroutine setSortedArrDefComBubble_D0_SK1(array, method)
   13716             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13717             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D0_SK1
   13718             : #endif
   13719             :         use pm_kind, only: SKC => SK1
   13720             :         character(*,SKC)        , intent(inout)                 :: array
   13721             :         type(bubble_type)       , intent(in)                    :: method
   13722             :     end subroutine
   13723             : #endif
   13724             : 
   13725             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13726             : 
   13727             : #if SK5_ENABLED
   13728             :     pure module subroutine setSortedArrDefComBubble_D1_SK5(array, method)
   13729             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13730             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_SK5
   13731             : #endif
   13732             :         use pm_kind, only: SKC => SK5
   13733             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13734             :         type(bubble_type)       , intent(in)                    :: method
   13735             :     end subroutine
   13736             : #endif
   13737             : 
   13738             : #if SK4_ENABLED
   13739             :     pure module subroutine setSortedArrDefComBubble_D1_SK4(array, method)
   13740             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13741             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_SK4
   13742             : #endif
   13743             :         use pm_kind, only: SKC => SK4
   13744             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13745             :         type(bubble_type)       , intent(in)                    :: method
   13746             :     end subroutine
   13747             : #endif
   13748             : 
   13749             : #if SK3_ENABLED
   13750             :     pure module subroutine setSortedArrDefComBubble_D1_SK3(array, method)
   13751             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13752             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_SK3
   13753             : #endif
   13754             :         use pm_kind, only: SKC => SK3
   13755             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13756             :         type(bubble_type)       , intent(in)                    :: method
   13757             :     end subroutine
   13758             : #endif
   13759             : 
   13760             : #if SK2_ENABLED
   13761             :     pure module subroutine setSortedArrDefComBubble_D1_SK2(array, method)
   13762             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13763             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_SK2
   13764             : #endif
   13765             :         use pm_kind, only: SKC => SK2
   13766             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13767             :         type(bubble_type)       , intent(in)                    :: method
   13768             :     end subroutine
   13769             : #endif
   13770             : 
   13771             : #if SK1_ENABLED
   13772             :     pure module subroutine setSortedArrDefComBubble_D1_SK1(array, method)
   13773             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13774             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_SK1
   13775             : #endif
   13776             :         use pm_kind, only: SKC => SK1
   13777             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   13778             :         type(bubble_type)       , intent(in)                    :: method
   13779             :     end subroutine
   13780             : #endif
   13781             : 
   13782             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13783             : 
   13784             : #if IK5_ENABLED
   13785             :     pure module subroutine setSortedArrDefComBubble_D1_IK5(array, method)
   13786             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13787             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_IK5
   13788             : #endif
   13789             :         use pm_kind, only: IKC => IK5
   13790             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13791             :         type(bubble_type)       , intent(in)                    :: method
   13792             :     end subroutine
   13793             : #endif
   13794             : 
   13795             : #if IK4_ENABLED
   13796             :     pure module subroutine setSortedArrDefComBubble_D1_IK4(array, method)
   13797             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13798             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_IK4
   13799             : #endif
   13800             :         use pm_kind, only: IKC => IK4
   13801             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13802             :         type(bubble_type)       , intent(in)                    :: method
   13803             :     end subroutine
   13804             : #endif
   13805             : 
   13806             : #if IK3_ENABLED
   13807             :     pure module subroutine setSortedArrDefComBubble_D1_IK3(array, method)
   13808             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13809             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_IK3
   13810             : #endif
   13811             :         use pm_kind, only: IKC => IK3
   13812             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13813             :         type(bubble_type)       , intent(in)                    :: method
   13814             :     end subroutine
   13815             : #endif
   13816             : 
   13817             : #if IK2_ENABLED
   13818             :     pure module subroutine setSortedArrDefComBubble_D1_IK2(array, method)
   13819             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13820             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_IK2
   13821             : #endif
   13822             :         use pm_kind, only: IKC => IK2
   13823             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13824             :         type(bubble_type)       , intent(in)                    :: method
   13825             :     end subroutine
   13826             : #endif
   13827             : 
   13828             : #if IK1_ENABLED
   13829             :     pure module subroutine setSortedArrDefComBubble_D1_IK1(array, method)
   13830             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13831             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_IK1
   13832             : #endif
   13833             :         use pm_kind, only: IKC => IK1
   13834             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   13835             :         type(bubble_type)       , intent(in)                    :: method
   13836             :     end subroutine
   13837             : #endif
   13838             : 
   13839             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13840             : 
   13841             : #if LK5_ENABLED
   13842             :     pure module subroutine setSortedArrDefComBubble_D1_LK5(array, method)
   13843             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13844             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_LK5
   13845             : #endif
   13846             :         use pm_kind, only: LKC => LK5
   13847             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13848             :         type(bubble_type)       , intent(in)                    :: method
   13849             :     end subroutine
   13850             : #endif
   13851             : 
   13852             : #if LK4_ENABLED
   13853             :     pure module subroutine setSortedArrDefComBubble_D1_LK4(array, method)
   13854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_LK4
   13856             : #endif
   13857             :         use pm_kind, only: LKC => LK4
   13858             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13859             :         type(bubble_type)       , intent(in)                    :: method
   13860             :     end subroutine
   13861             : #endif
   13862             : 
   13863             : #if LK3_ENABLED
   13864             :     pure module subroutine setSortedArrDefComBubble_D1_LK3(array, method)
   13865             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13866             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_LK3
   13867             : #endif
   13868             :         use pm_kind, only: LKC => LK3
   13869             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13870             :         type(bubble_type)       , intent(in)                    :: method
   13871             :     end subroutine
   13872             : #endif
   13873             : 
   13874             : #if LK2_ENABLED
   13875             :     pure module subroutine setSortedArrDefComBubble_D1_LK2(array, method)
   13876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13877             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_LK2
   13878             : #endif
   13879             :         use pm_kind, only: LKC => LK2
   13880             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13881             :         type(bubble_type)       , intent(in)                    :: method
   13882             :     end subroutine
   13883             : #endif
   13884             : 
   13885             : #if LK1_ENABLED
   13886             :     pure module subroutine setSortedArrDefComBubble_D1_LK1(array, method)
   13887             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13888             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_LK1
   13889             : #endif
   13890             :         use pm_kind, only: LKC => LK1
   13891             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   13892             :         type(bubble_type)       , intent(in)                    :: method
   13893             :     end subroutine
   13894             : #endif
   13895             : 
   13896             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13897             : 
   13898             : #if CK5_ENABLED
   13899             :     pure module subroutine setSortedArrDefComBubble_D1_CK5(array, method)
   13900             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13901             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_CK5
   13902             : #endif
   13903             :         use pm_kind, only: CKC => CK5
   13904             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13905             :         type(bubble_type)       , intent(in)                    :: method
   13906             :     end subroutine
   13907             : #endif
   13908             : 
   13909             : #if CK4_ENABLED
   13910             :     pure module subroutine setSortedArrDefComBubble_D1_CK4(array, method)
   13911             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13912             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_CK4
   13913             : #endif
   13914             :         use pm_kind, only: CKC => CK4
   13915             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13916             :         type(bubble_type)       , intent(in)                    :: method
   13917             :     end subroutine
   13918             : #endif
   13919             : 
   13920             : #if CK3_ENABLED
   13921             :     pure module subroutine setSortedArrDefComBubble_D1_CK3(array, method)
   13922             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13923             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_CK3
   13924             : #endif
   13925             :         use pm_kind, only: CKC => CK3
   13926             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13927             :         type(bubble_type)       , intent(in)                    :: method
   13928             :     end subroutine
   13929             : #endif
   13930             : 
   13931             : #if CK2_ENABLED
   13932             :     pure module subroutine setSortedArrDefComBubble_D1_CK2(array, method)
   13933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13934             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_CK2
   13935             : #endif
   13936             :         use pm_kind, only: CKC => CK2
   13937             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13938             :         type(bubble_type)       , intent(in)                    :: method
   13939             :     end subroutine
   13940             : #endif
   13941             : 
   13942             : #if CK1_ENABLED
   13943             :     pure module subroutine setSortedArrDefComBubble_D1_CK1(array, method)
   13944             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13945             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_CK1
   13946             : #endif
   13947             :         use pm_kind, only: CKC => CK1
   13948             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   13949             :         type(bubble_type)       , intent(in)                    :: method
   13950             :     end subroutine
   13951             : #endif
   13952             : 
   13953             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   13954             : 
   13955             : #if RK5_ENABLED
   13956             :     pure module subroutine setSortedArrDefComBubble_D1_RK5(array, method)
   13957             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13958             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_RK5
   13959             : #endif
   13960             :         use pm_kind, only: RKC => RK5
   13961             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13962             :         type(bubble_type)       , intent(in)                    :: method
   13963             :     end subroutine
   13964             : #endif
   13965             : 
   13966             : #if RK4_ENABLED
   13967             :     pure module subroutine setSortedArrDefComBubble_D1_RK4(array, method)
   13968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13969             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_RK4
   13970             : #endif
   13971             :         use pm_kind, only: RKC => RK4
   13972             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13973             :         type(bubble_type)       , intent(in)                    :: method
   13974             :     end subroutine
   13975             : #endif
   13976             : 
   13977             : #if RK3_ENABLED
   13978             :     pure module subroutine setSortedArrDefComBubble_D1_RK3(array, method)
   13979             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13980             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_RK3
   13981             : #endif
   13982             :         use pm_kind, only: RKC => RK3
   13983             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13984             :         type(bubble_type)       , intent(in)                    :: method
   13985             :     end subroutine
   13986             : #endif
   13987             : 
   13988             : #if RK2_ENABLED
   13989             :     pure module subroutine setSortedArrDefComBubble_D1_RK2(array, method)
   13990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   13991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_RK2
   13992             : #endif
   13993             :         use pm_kind, only: RKC => RK2
   13994             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   13995             :         type(bubble_type)       , intent(in)                    :: method
   13996             :     end subroutine
   13997             : #endif
   13998             : 
   13999             : #if RK1_ENABLED
   14000             :     pure module subroutine setSortedArrDefComBubble_D1_RK1(array, method)
   14001             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14002             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_RK1
   14003             : #endif
   14004             :         use pm_kind, only: RKC => RK1
   14005             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14006             :         type(bubble_type)       , intent(in)                    :: method
   14007             :     end subroutine
   14008             : #endif
   14009             : 
   14010             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14011             : 
   14012             : #if SK5_ENABLED
   14013             :     pure module subroutine setSortedArrDefComBubble_D1_PSSK5(array, method)
   14014             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14015             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_PSSK5
   14016             : #endif
   14017             :         use pm_kind, only: SKC => SK5
   14018             :         use pm_container, only: css_pdt
   14019             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14020             :         type(bubble_type)       , intent(in)                    :: method
   14021             :     end subroutine
   14022             : #endif
   14023             : 
   14024             : #if SK4_ENABLED
   14025             :     pure module subroutine setSortedArrDefComBubble_D1_PSSK4(array, method)
   14026             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14027             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_PSSK4
   14028             : #endif
   14029             :         use pm_kind, only: SKC => SK4
   14030             :         use pm_container, only: css_pdt
   14031             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14032             :         type(bubble_type)       , intent(in)                    :: method
   14033             :     end subroutine
   14034             : #endif
   14035             : 
   14036             : #if SK3_ENABLED
   14037             :     pure module subroutine setSortedArrDefComBubble_D1_PSSK3(array, method)
   14038             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14039             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_PSSK3
   14040             : #endif
   14041             :         use pm_kind, only: SKC => SK3
   14042             :         use pm_container, only: css_pdt
   14043             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14044             :         type(bubble_type)       , intent(in)                    :: method
   14045             :     end subroutine
   14046             : #endif
   14047             : 
   14048             : #if SK2_ENABLED
   14049             :     pure module subroutine setSortedArrDefComBubble_D1_PSSK2(array, method)
   14050             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14051             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_PSSK2
   14052             : #endif
   14053             :         use pm_kind, only: SKC => SK2
   14054             :         use pm_container, only: css_pdt
   14055             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14056             :         type(bubble_type)       , intent(in)                    :: method
   14057             :     end subroutine
   14058             : #endif
   14059             : 
   14060             : #if SK1_ENABLED
   14061             :     pure module subroutine setSortedArrDefComBubble_D1_PSSK1(array, method)
   14062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14063             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_PSSK1
   14064             : #endif
   14065             :         use pm_kind, only: SKC => SK1
   14066             :         use pm_container, only: css_pdt
   14067             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14068             :         type(bubble_type)       , intent(in)                    :: method
   14069             :     end subroutine
   14070             : #endif
   14071             : 
   14072             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14073             : 
   14074             :     pure module subroutine setSortedArrDefComBubble_D1_BSSK(array, method)
   14075             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14076             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComBubble_D1_BSSK
   14077             : #endif
   14078             :         use pm_kind, only: SKC => SK
   14079             :         use pm_container, only: css_type
   14080             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   14081             :         type(bubble_type)       , intent(in)                    :: method
   14082             :     end subroutine
   14083             : 
   14084             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14085             : 
   14086             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14087             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14088             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14089             : 
   14090             :     end interface
   14091             : 
   14092             :     ! setSortedArrDefComHeapi
   14093             : 
   14094             :     interface setSorted
   14095             : 
   14096             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14097             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14098             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14099             : 
   14100             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14101             : 
   14102             : #if SK5_ENABLED
   14103             :     pure module subroutine setSortedArrDefComHeapi_D0_SK5(array, method)
   14104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D0_SK5
   14106             : #endif
   14107             :         use pm_kind, only: SKC => SK5
   14108             :         character(*,SKC)        , intent(inout)                 :: array
   14109             :         type(heapi_type)        , intent(in)                    :: method
   14110             :     end subroutine
   14111             : #endif
   14112             : 
   14113             : #if SK4_ENABLED
   14114             :     pure module subroutine setSortedArrDefComHeapi_D0_SK4(array, method)
   14115             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14116             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D0_SK4
   14117             : #endif
   14118             :         use pm_kind, only: SKC => SK4
   14119             :         character(*,SKC)        , intent(inout)                 :: array
   14120             :         type(heapi_type)        , intent(in)                    :: method
   14121             :     end subroutine
   14122             : #endif
   14123             : 
   14124             : #if SK3_ENABLED
   14125             :     pure module subroutine setSortedArrDefComHeapi_D0_SK3(array, method)
   14126             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14127             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D0_SK3
   14128             : #endif
   14129             :         use pm_kind, only: SKC => SK3
   14130             :         character(*,SKC)        , intent(inout)                 :: array
   14131             :         type(heapi_type)        , intent(in)                    :: method
   14132             :     end subroutine
   14133             : #endif
   14134             : 
   14135             : #if SK2_ENABLED
   14136             :     pure module subroutine setSortedArrDefComHeapi_D0_SK2(array, method)
   14137             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14138             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D0_SK2
   14139             : #endif
   14140             :         use pm_kind, only: SKC => SK2
   14141             :         character(*,SKC)        , intent(inout)                 :: array
   14142             :         type(heapi_type)        , intent(in)                    :: method
   14143             :     end subroutine
   14144             : #endif
   14145             : 
   14146             : #if SK1_ENABLED
   14147             :     pure module subroutine setSortedArrDefComHeapi_D0_SK1(array, method)
   14148             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14149             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D0_SK1
   14150             : #endif
   14151             :         use pm_kind, only: SKC => SK1
   14152             :         character(*,SKC)        , intent(inout)                 :: array
   14153             :         type(heapi_type)        , intent(in)                    :: method
   14154             :     end subroutine
   14155             : #endif
   14156             : 
   14157             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14158             : 
   14159             : #if SK5_ENABLED
   14160             :     pure module subroutine setSortedArrDefComHeapi_D1_SK5(array, method)
   14161             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14162             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_SK5
   14163             : #endif
   14164             :         use pm_kind, only: SKC => SK5
   14165             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14166             :         type(heapi_type)        , intent(in)                    :: method
   14167             :     end subroutine
   14168             : #endif
   14169             : 
   14170             : #if SK4_ENABLED
   14171             :     pure module subroutine setSortedArrDefComHeapi_D1_SK4(array, method)
   14172             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14173             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_SK4
   14174             : #endif
   14175             :         use pm_kind, only: SKC => SK4
   14176             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14177             :         type(heapi_type)        , intent(in)                    :: method
   14178             :     end subroutine
   14179             : #endif
   14180             : 
   14181             : #if SK3_ENABLED
   14182             :     pure module subroutine setSortedArrDefComHeapi_D1_SK3(array, method)
   14183             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14184             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_SK3
   14185             : #endif
   14186             :         use pm_kind, only: SKC => SK3
   14187             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14188             :         type(heapi_type)        , intent(in)                    :: method
   14189             :     end subroutine
   14190             : #endif
   14191             : 
   14192             : #if SK2_ENABLED
   14193             :     pure module subroutine setSortedArrDefComHeapi_D1_SK2(array, method)
   14194             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14195             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_SK2
   14196             : #endif
   14197             :         use pm_kind, only: SKC => SK2
   14198             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14199             :         type(heapi_type)        , intent(in)                    :: method
   14200             :     end subroutine
   14201             : #endif
   14202             : 
   14203             : #if SK1_ENABLED
   14204             :     pure module subroutine setSortedArrDefComHeapi_D1_SK1(array, method)
   14205             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14206             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_SK1
   14207             : #endif
   14208             :         use pm_kind, only: SKC => SK1
   14209             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14210             :         type(heapi_type)        , intent(in)                    :: method
   14211             :     end subroutine
   14212             : #endif
   14213             : 
   14214             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14215             : 
   14216             : #if IK5_ENABLED
   14217             :     pure module subroutine setSortedArrDefComHeapi_D1_IK5(array, method)
   14218             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14219             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_IK5
   14220             : #endif
   14221             :         use pm_kind, only: IKC => IK5
   14222             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14223             :         type(heapi_type)        , intent(in)                    :: method
   14224             :     end subroutine
   14225             : #endif
   14226             : 
   14227             : #if IK4_ENABLED
   14228             :     pure module subroutine setSortedArrDefComHeapi_D1_IK4(array, method)
   14229             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14230             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_IK4
   14231             : #endif
   14232             :         use pm_kind, only: IKC => IK4
   14233             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14234             :         type(heapi_type)        , intent(in)                    :: method
   14235             :     end subroutine
   14236             : #endif
   14237             : 
   14238             : #if IK3_ENABLED
   14239             :     pure module subroutine setSortedArrDefComHeapi_D1_IK3(array, method)
   14240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14241             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_IK3
   14242             : #endif
   14243             :         use pm_kind, only: IKC => IK3
   14244             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14245             :         type(heapi_type)        , intent(in)                    :: method
   14246             :     end subroutine
   14247             : #endif
   14248             : 
   14249             : #if IK2_ENABLED
   14250             :     pure module subroutine setSortedArrDefComHeapi_D1_IK2(array, method)
   14251             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14252             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_IK2
   14253             : #endif
   14254             :         use pm_kind, only: IKC => IK2
   14255             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14256             :         type(heapi_type)        , intent(in)                    :: method
   14257             :     end subroutine
   14258             : #endif
   14259             : 
   14260             : #if IK1_ENABLED
   14261             :     pure module subroutine setSortedArrDefComHeapi_D1_IK1(array, method)
   14262             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14263             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_IK1
   14264             : #endif
   14265             :         use pm_kind, only: IKC => IK1
   14266             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14267             :         type(heapi_type)        , intent(in)                    :: method
   14268             :     end subroutine
   14269             : #endif
   14270             : 
   14271             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14272             : 
   14273             : #if LK5_ENABLED
   14274             :     pure module subroutine setSortedArrDefComHeapi_D1_LK5(array, method)
   14275             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14276             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_LK5
   14277             : #endif
   14278             :         use pm_kind, only: LKC => LK5
   14279             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14280             :         type(heapi_type)        , intent(in)                    :: method
   14281             :     end subroutine
   14282             : #endif
   14283             : 
   14284             : #if LK4_ENABLED
   14285             :     pure module subroutine setSortedArrDefComHeapi_D1_LK4(array, method)
   14286             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14287             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_LK4
   14288             : #endif
   14289             :         use pm_kind, only: LKC => LK4
   14290             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14291             :         type(heapi_type)        , intent(in)                    :: method
   14292             :     end subroutine
   14293             : #endif
   14294             : 
   14295             : #if LK3_ENABLED
   14296             :     pure module subroutine setSortedArrDefComHeapi_D1_LK3(array, method)
   14297             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14298             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_LK3
   14299             : #endif
   14300             :         use pm_kind, only: LKC => LK3
   14301             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14302             :         type(heapi_type)        , intent(in)                    :: method
   14303             :     end subroutine
   14304             : #endif
   14305             : 
   14306             : #if LK2_ENABLED
   14307             :     pure module subroutine setSortedArrDefComHeapi_D1_LK2(array, method)
   14308             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14309             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_LK2
   14310             : #endif
   14311             :         use pm_kind, only: LKC => LK2
   14312             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14313             :         type(heapi_type)        , intent(in)                    :: method
   14314             :     end subroutine
   14315             : #endif
   14316             : 
   14317             : #if LK1_ENABLED
   14318             :     pure module subroutine setSortedArrDefComHeapi_D1_LK1(array, method)
   14319             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14320             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_LK1
   14321             : #endif
   14322             :         use pm_kind, only: LKC => LK1
   14323             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14324             :         type(heapi_type)        , intent(in)                    :: method
   14325             :     end subroutine
   14326             : #endif
   14327             : 
   14328             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14329             : 
   14330             : #if CK5_ENABLED
   14331             :     pure module subroutine setSortedArrDefComHeapi_D1_CK5(array, method)
   14332             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14333             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_CK5
   14334             : #endif
   14335             :         use pm_kind, only: CKC => CK5
   14336             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14337             :         type(heapi_type)        , intent(in)                    :: method
   14338             :     end subroutine
   14339             : #endif
   14340             : 
   14341             : #if CK4_ENABLED
   14342             :     pure module subroutine setSortedArrDefComHeapi_D1_CK4(array, method)
   14343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14344             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_CK4
   14345             : #endif
   14346             :         use pm_kind, only: CKC => CK4
   14347             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14348             :         type(heapi_type)        , intent(in)                    :: method
   14349             :     end subroutine
   14350             : #endif
   14351             : 
   14352             : #if CK3_ENABLED
   14353             :     pure module subroutine setSortedArrDefComHeapi_D1_CK3(array, method)
   14354             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14355             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_CK3
   14356             : #endif
   14357             :         use pm_kind, only: CKC => CK3
   14358             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14359             :         type(heapi_type)        , intent(in)                    :: method
   14360             :     end subroutine
   14361             : #endif
   14362             : 
   14363             : #if CK2_ENABLED
   14364             :     pure module subroutine setSortedArrDefComHeapi_D1_CK2(array, method)
   14365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14366             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_CK2
   14367             : #endif
   14368             :         use pm_kind, only: CKC => CK2
   14369             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14370             :         type(heapi_type)        , intent(in)                    :: method
   14371             :     end subroutine
   14372             : #endif
   14373             : 
   14374             : #if CK1_ENABLED
   14375             :     pure module subroutine setSortedArrDefComHeapi_D1_CK1(array, method)
   14376             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14377             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_CK1
   14378             : #endif
   14379             :         use pm_kind, only: CKC => CK1
   14380             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14381             :         type(heapi_type)        , intent(in)                    :: method
   14382             :     end subroutine
   14383             : #endif
   14384             : 
   14385             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14386             : 
   14387             : #if RK5_ENABLED
   14388             :     pure module subroutine setSortedArrDefComHeapi_D1_RK5(array, method)
   14389             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14390             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_RK5
   14391             : #endif
   14392             :         use pm_kind, only: RKC => RK5
   14393             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14394             :         type(heapi_type)        , intent(in)                    :: method
   14395             :     end subroutine
   14396             : #endif
   14397             : 
   14398             : #if RK4_ENABLED
   14399             :     pure module subroutine setSortedArrDefComHeapi_D1_RK4(array, method)
   14400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14401             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_RK4
   14402             : #endif
   14403             :         use pm_kind, only: RKC => RK4
   14404             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14405             :         type(heapi_type)        , intent(in)                    :: method
   14406             :     end subroutine
   14407             : #endif
   14408             : 
   14409             : #if RK3_ENABLED
   14410             :     pure module subroutine setSortedArrDefComHeapi_D1_RK3(array, method)
   14411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14412             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_RK3
   14413             : #endif
   14414             :         use pm_kind, only: RKC => RK3
   14415             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14416             :         type(heapi_type)        , intent(in)                    :: method
   14417             :     end subroutine
   14418             : #endif
   14419             : 
   14420             : #if RK2_ENABLED
   14421             :     pure module subroutine setSortedArrDefComHeapi_D1_RK2(array, method)
   14422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14423             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_RK2
   14424             : #endif
   14425             :         use pm_kind, only: RKC => RK2
   14426             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14427             :         type(heapi_type)        , intent(in)                    :: method
   14428             :     end subroutine
   14429             : #endif
   14430             : 
   14431             : #if RK1_ENABLED
   14432             :     pure module subroutine setSortedArrDefComHeapi_D1_RK1(array, method)
   14433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14434             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_RK1
   14435             : #endif
   14436             :         use pm_kind, only: RKC => RK1
   14437             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14438             :         type(heapi_type)        , intent(in)                    :: method
   14439             :     end subroutine
   14440             : #endif
   14441             : 
   14442             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14443             : 
   14444             : #if SK5_ENABLED
   14445             :     pure module subroutine setSortedArrDefComHeapi_D1_PSSK5(array, method)
   14446             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14447             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_PSSK5
   14448             : #endif
   14449             :         use pm_kind, only: SKC => SK5
   14450             :         use pm_container, only: css_pdt
   14451             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14452             :         type(heapi_type)        , intent(in)                    :: method
   14453             :     end subroutine
   14454             : #endif
   14455             : 
   14456             : #if SK4_ENABLED
   14457             :     pure module subroutine setSortedArrDefComHeapi_D1_PSSK4(array, method)
   14458             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14459             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_PSSK4
   14460             : #endif
   14461             :         use pm_kind, only: SKC => SK4
   14462             :         use pm_container, only: css_pdt
   14463             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14464             :         type(heapi_type)        , intent(in)                    :: method
   14465             :     end subroutine
   14466             : #endif
   14467             : 
   14468             : #if SK3_ENABLED
   14469             :     pure module subroutine setSortedArrDefComHeapi_D1_PSSK3(array, method)
   14470             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14471             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_PSSK3
   14472             : #endif
   14473             :         use pm_kind, only: SKC => SK3
   14474             :         use pm_container, only: css_pdt
   14475             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14476             :         type(heapi_type)        , intent(in)                    :: method
   14477             :     end subroutine
   14478             : #endif
   14479             : 
   14480             : #if SK2_ENABLED
   14481             :     pure module subroutine setSortedArrDefComHeapi_D1_PSSK2(array, method)
   14482             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14483             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_PSSK2
   14484             : #endif
   14485             :         use pm_kind, only: SKC => SK2
   14486             :         use pm_container, only: css_pdt
   14487             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14488             :         type(heapi_type)        , intent(in)                    :: method
   14489             :     end subroutine
   14490             : #endif
   14491             : 
   14492             : #if SK1_ENABLED
   14493             :     pure module subroutine setSortedArrDefComHeapi_D1_PSSK1(array, method)
   14494             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14495             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_PSSK1
   14496             : #endif
   14497             :         use pm_kind, only: SKC => SK1
   14498             :         use pm_container, only: css_pdt
   14499             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14500             :         type(heapi_type)        , intent(in)                    :: method
   14501             :     end subroutine
   14502             : #endif
   14503             : 
   14504             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14505             : 
   14506             :     pure module subroutine setSortedArrDefComHeapi_D1_BSSK(array, method)
   14507             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14508             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapi_D1_BSSK
   14509             : #endif
   14510             :         use pm_kind, only: SKC => SK
   14511             :         use pm_container, only: css_type
   14512             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   14513             :         type(heapi_type)        , intent(in)                    :: method
   14514             :     end subroutine
   14515             : 
   14516             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14517             : 
   14518             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14519             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14520             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14521             : 
   14522             :     end interface
   14523             : 
   14524             :     ! setSortedArrDefComHeapr
   14525             : 
   14526             :     interface setSorted
   14527             : 
   14528             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14529             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14530             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14531             : 
   14532             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14533             : 
   14534             : #if SK5_ENABLED
   14535             :     pure module subroutine setSortedArrDefComHeapr_D0_SK5(array, method)
   14536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14537             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D0_SK5
   14538             : #endif
   14539             :         use pm_kind, only: SKC => SK5
   14540             :         character(*,SKC)        , intent(inout)                 :: array
   14541             :         type(heapr_type)        , intent(in)                    :: method
   14542             :     end subroutine
   14543             : #endif
   14544             : 
   14545             : #if SK4_ENABLED
   14546             :     pure module subroutine setSortedArrDefComHeapr_D0_SK4(array, method)
   14547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14548             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D0_SK4
   14549             : #endif
   14550             :         use pm_kind, only: SKC => SK4
   14551             :         character(*,SKC)        , intent(inout)                 :: array
   14552             :         type(heapr_type)        , intent(in)                    :: method
   14553             :     end subroutine
   14554             : #endif
   14555             : 
   14556             : #if SK3_ENABLED
   14557             :     pure module subroutine setSortedArrDefComHeapr_D0_SK3(array, method)
   14558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D0_SK3
   14560             : #endif
   14561             :         use pm_kind, only: SKC => SK3
   14562             :         character(*,SKC)        , intent(inout)                 :: array
   14563             :         type(heapr_type)        , intent(in)                    :: method
   14564             :     end subroutine
   14565             : #endif
   14566             : 
   14567             : #if SK2_ENABLED
   14568             :     pure module subroutine setSortedArrDefComHeapr_D0_SK2(array, method)
   14569             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14570             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D0_SK2
   14571             : #endif
   14572             :         use pm_kind, only: SKC => SK2
   14573             :         character(*,SKC)        , intent(inout)                 :: array
   14574             :         type(heapr_type)        , intent(in)                    :: method
   14575             :     end subroutine
   14576             : #endif
   14577             : 
   14578             : #if SK1_ENABLED
   14579             :     pure module subroutine setSortedArrDefComHeapr_D0_SK1(array, method)
   14580             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14581             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D0_SK1
   14582             : #endif
   14583             :         use pm_kind, only: SKC => SK1
   14584             :         character(*,SKC)        , intent(inout)                 :: array
   14585             :         type(heapr_type)        , intent(in)                    :: method
   14586             :     end subroutine
   14587             : #endif
   14588             : 
   14589             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14590             : 
   14591             : #if SK5_ENABLED
   14592             :     pure module subroutine setSortedArrDefComHeapr_D1_SK5(array, method)
   14593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14594             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_SK5
   14595             : #endif
   14596             :         use pm_kind, only: SKC => SK5
   14597             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14598             :         type(heapr_type)        , intent(in)                    :: method
   14599             :     end subroutine
   14600             : #endif
   14601             : 
   14602             : #if SK4_ENABLED
   14603             :     pure module subroutine setSortedArrDefComHeapr_D1_SK4(array, method)
   14604             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14605             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_SK4
   14606             : #endif
   14607             :         use pm_kind, only: SKC => SK4
   14608             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14609             :         type(heapr_type)        , intent(in)                    :: method
   14610             :     end subroutine
   14611             : #endif
   14612             : 
   14613             : #if SK3_ENABLED
   14614             :     pure module subroutine setSortedArrDefComHeapr_D1_SK3(array, method)
   14615             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14616             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_SK3
   14617             : #endif
   14618             :         use pm_kind, only: SKC => SK3
   14619             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14620             :         type(heapr_type)        , intent(in)                    :: method
   14621             :     end subroutine
   14622             : #endif
   14623             : 
   14624             : #if SK2_ENABLED
   14625             :     pure module subroutine setSortedArrDefComHeapr_D1_SK2(array, method)
   14626             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14627             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_SK2
   14628             : #endif
   14629             :         use pm_kind, only: SKC => SK2
   14630             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14631             :         type(heapr_type)        , intent(in)                    :: method
   14632             :     end subroutine
   14633             : #endif
   14634             : 
   14635             : #if SK1_ENABLED
   14636             :     pure module subroutine setSortedArrDefComHeapr_D1_SK1(array, method)
   14637             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14638             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_SK1
   14639             : #endif
   14640             :         use pm_kind, only: SKC => SK1
   14641             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   14642             :         type(heapr_type)        , intent(in)                    :: method
   14643             :     end subroutine
   14644             : #endif
   14645             : 
   14646             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14647             : 
   14648             : #if IK5_ENABLED
   14649             :     pure module subroutine setSortedArrDefComHeapr_D1_IK5(array, method)
   14650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14651             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_IK5
   14652             : #endif
   14653             :         use pm_kind, only: IKC => IK5
   14654             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14655             :         type(heapr_type)        , intent(in)                    :: method
   14656             :     end subroutine
   14657             : #endif
   14658             : 
   14659             : #if IK4_ENABLED
   14660             :     pure module subroutine setSortedArrDefComHeapr_D1_IK4(array, method)
   14661             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14662             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_IK4
   14663             : #endif
   14664             :         use pm_kind, only: IKC => IK4
   14665             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14666             :         type(heapr_type)        , intent(in)                    :: method
   14667             :     end subroutine
   14668             : #endif
   14669             : 
   14670             : #if IK3_ENABLED
   14671             :     pure module subroutine setSortedArrDefComHeapr_D1_IK3(array, method)
   14672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_IK3
   14674             : #endif
   14675             :         use pm_kind, only: IKC => IK3
   14676             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14677             :         type(heapr_type)        , intent(in)                    :: method
   14678             :     end subroutine
   14679             : #endif
   14680             : 
   14681             : #if IK2_ENABLED
   14682             :     pure module subroutine setSortedArrDefComHeapr_D1_IK2(array, method)
   14683             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14684             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_IK2
   14685             : #endif
   14686             :         use pm_kind, only: IKC => IK2
   14687             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14688             :         type(heapr_type)        , intent(in)                    :: method
   14689             :     end subroutine
   14690             : #endif
   14691             : 
   14692             : #if IK1_ENABLED
   14693             :     pure module subroutine setSortedArrDefComHeapr_D1_IK1(array, method)
   14694             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14695             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_IK1
   14696             : #endif
   14697             :         use pm_kind, only: IKC => IK1
   14698             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   14699             :         type(heapr_type)        , intent(in)                    :: method
   14700             :     end subroutine
   14701             : #endif
   14702             : 
   14703             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14704             : 
   14705             : #if LK5_ENABLED
   14706             :     pure module subroutine setSortedArrDefComHeapr_D1_LK5(array, method)
   14707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14708             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_LK5
   14709             : #endif
   14710             :         use pm_kind, only: LKC => LK5
   14711             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14712             :         type(heapr_type)        , intent(in)                    :: method
   14713             :     end subroutine
   14714             : #endif
   14715             : 
   14716             : #if LK4_ENABLED
   14717             :     pure module subroutine setSortedArrDefComHeapr_D1_LK4(array, method)
   14718             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14719             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_LK4
   14720             : #endif
   14721             :         use pm_kind, only: LKC => LK4
   14722             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14723             :         type(heapr_type)        , intent(in)                    :: method
   14724             :     end subroutine
   14725             : #endif
   14726             : 
   14727             : #if LK3_ENABLED
   14728             :     pure module subroutine setSortedArrDefComHeapr_D1_LK3(array, method)
   14729             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14730             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_LK3
   14731             : #endif
   14732             :         use pm_kind, only: LKC => LK3
   14733             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14734             :         type(heapr_type)        , intent(in)                    :: method
   14735             :     end subroutine
   14736             : #endif
   14737             : 
   14738             : #if LK2_ENABLED
   14739             :     pure module subroutine setSortedArrDefComHeapr_D1_LK2(array, method)
   14740             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14741             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_LK2
   14742             : #endif
   14743             :         use pm_kind, only: LKC => LK2
   14744             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14745             :         type(heapr_type)        , intent(in)                    :: method
   14746             :     end subroutine
   14747             : #endif
   14748             : 
   14749             : #if LK1_ENABLED
   14750             :     pure module subroutine setSortedArrDefComHeapr_D1_LK1(array, method)
   14751             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14752             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_LK1
   14753             : #endif
   14754             :         use pm_kind, only: LKC => LK1
   14755             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   14756             :         type(heapr_type)        , intent(in)                    :: method
   14757             :     end subroutine
   14758             : #endif
   14759             : 
   14760             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14761             : 
   14762             : #if CK5_ENABLED
   14763             :     pure module subroutine setSortedArrDefComHeapr_D1_CK5(array, method)
   14764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14765             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_CK5
   14766             : #endif
   14767             :         use pm_kind, only: CKC => CK5
   14768             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14769             :         type(heapr_type)        , intent(in)                    :: method
   14770             :     end subroutine
   14771             : #endif
   14772             : 
   14773             : #if CK4_ENABLED
   14774             :     pure module subroutine setSortedArrDefComHeapr_D1_CK4(array, method)
   14775             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14776             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_CK4
   14777             : #endif
   14778             :         use pm_kind, only: CKC => CK4
   14779             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14780             :         type(heapr_type)        , intent(in)                    :: method
   14781             :     end subroutine
   14782             : #endif
   14783             : 
   14784             : #if CK3_ENABLED
   14785             :     pure module subroutine setSortedArrDefComHeapr_D1_CK3(array, method)
   14786             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14787             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_CK3
   14788             : #endif
   14789             :         use pm_kind, only: CKC => CK3
   14790             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14791             :         type(heapr_type)        , intent(in)                    :: method
   14792             :     end subroutine
   14793             : #endif
   14794             : 
   14795             : #if CK2_ENABLED
   14796             :     pure module subroutine setSortedArrDefComHeapr_D1_CK2(array, method)
   14797             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14798             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_CK2
   14799             : #endif
   14800             :         use pm_kind, only: CKC => CK2
   14801             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14802             :         type(heapr_type)        , intent(in)                    :: method
   14803             :     end subroutine
   14804             : #endif
   14805             : 
   14806             : #if CK1_ENABLED
   14807             :     pure module subroutine setSortedArrDefComHeapr_D1_CK1(array, method)
   14808             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14809             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_CK1
   14810             : #endif
   14811             :         use pm_kind, only: CKC => CK1
   14812             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   14813             :         type(heapr_type)        , intent(in)                    :: method
   14814             :     end subroutine
   14815             : #endif
   14816             : 
   14817             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14818             : 
   14819             : #if RK5_ENABLED
   14820             :     pure module subroutine setSortedArrDefComHeapr_D1_RK5(array, method)
   14821             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14822             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_RK5
   14823             : #endif
   14824             :         use pm_kind, only: RKC => RK5
   14825             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14826             :         type(heapr_type)        , intent(in)                    :: method
   14827             :     end subroutine
   14828             : #endif
   14829             : 
   14830             : #if RK4_ENABLED
   14831             :     pure module subroutine setSortedArrDefComHeapr_D1_RK4(array, method)
   14832             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14833             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_RK4
   14834             : #endif
   14835             :         use pm_kind, only: RKC => RK4
   14836             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14837             :         type(heapr_type)        , intent(in)                    :: method
   14838             :     end subroutine
   14839             : #endif
   14840             : 
   14841             : #if RK3_ENABLED
   14842             :     pure module subroutine setSortedArrDefComHeapr_D1_RK3(array, method)
   14843             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14844             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_RK3
   14845             : #endif
   14846             :         use pm_kind, only: RKC => RK3
   14847             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14848             :         type(heapr_type)        , intent(in)                    :: method
   14849             :     end subroutine
   14850             : #endif
   14851             : 
   14852             : #if RK2_ENABLED
   14853             :     pure module subroutine setSortedArrDefComHeapr_D1_RK2(array, method)
   14854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_RK2
   14856             : #endif
   14857             :         use pm_kind, only: RKC => RK2
   14858             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14859             :         type(heapr_type)        , intent(in)                    :: method
   14860             :     end subroutine
   14861             : #endif
   14862             : 
   14863             : #if RK1_ENABLED
   14864             :     pure module subroutine setSortedArrDefComHeapr_D1_RK1(array, method)
   14865             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14866             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_RK1
   14867             : #endif
   14868             :         use pm_kind, only: RKC => RK1
   14869             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   14870             :         type(heapr_type)        , intent(in)                    :: method
   14871             :     end subroutine
   14872             : #endif
   14873             : 
   14874             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14875             : 
   14876             : #if SK5_ENABLED
   14877             :     pure module subroutine setSortedArrDefComHeapr_D1_PSSK5(array, method)
   14878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14879             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_PSSK5
   14880             : #endif
   14881             :         use pm_kind, only: SKC => SK5
   14882             :         use pm_container, only: css_pdt
   14883             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14884             :         type(heapr_type)        , intent(in)                    :: method
   14885             :     end subroutine
   14886             : #endif
   14887             : 
   14888             : #if SK4_ENABLED
   14889             :     pure module subroutine setSortedArrDefComHeapr_D1_PSSK4(array, method)
   14890             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14891             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_PSSK4
   14892             : #endif
   14893             :         use pm_kind, only: SKC => SK4
   14894             :         use pm_container, only: css_pdt
   14895             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14896             :         type(heapr_type)        , intent(in)                    :: method
   14897             :     end subroutine
   14898             : #endif
   14899             : 
   14900             : #if SK3_ENABLED
   14901             :     pure module subroutine setSortedArrDefComHeapr_D1_PSSK3(array, method)
   14902             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14903             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_PSSK3
   14904             : #endif
   14905             :         use pm_kind, only: SKC => SK3
   14906             :         use pm_container, only: css_pdt
   14907             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14908             :         type(heapr_type)        , intent(in)                    :: method
   14909             :     end subroutine
   14910             : #endif
   14911             : 
   14912             : #if SK2_ENABLED
   14913             :     pure module subroutine setSortedArrDefComHeapr_D1_PSSK2(array, method)
   14914             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14915             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_PSSK2
   14916             : #endif
   14917             :         use pm_kind, only: SKC => SK2
   14918             :         use pm_container, only: css_pdt
   14919             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14920             :         type(heapr_type)        , intent(in)                    :: method
   14921             :     end subroutine
   14922             : #endif
   14923             : 
   14924             : #if SK1_ENABLED
   14925             :     pure module subroutine setSortedArrDefComHeapr_D1_PSSK1(array, method)
   14926             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14927             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_PSSK1
   14928             : #endif
   14929             :         use pm_kind, only: SKC => SK1
   14930             :         use pm_container, only: css_pdt
   14931             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   14932             :         type(heapr_type)        , intent(in)                    :: method
   14933             :     end subroutine
   14934             : #endif
   14935             : 
   14936             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14937             : 
   14938             :     pure module subroutine setSortedArrDefComHeapr_D1_BSSK(array, method)
   14939             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14940             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComHeapr_D1_BSSK
   14941             : #endif
   14942             :         use pm_kind, only: SKC => SK
   14943             :         use pm_container, only: css_type
   14944             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   14945             :         type(heapr_type)        , intent(in)                    :: method
   14946             :     end subroutine
   14947             : 
   14948             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14949             : 
   14950             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14951             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14952             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14953             : 
   14954             :     end interface
   14955             : 
   14956             :     ! setSortedArrDefComInsertionl
   14957             : 
   14958             :     interface setSorted
   14959             : 
   14960             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14961             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14962             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14963             : 
   14964             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   14965             : 
   14966             : #if SK5_ENABLED
   14967             :     pure module subroutine setSortedArrDefComInsertionl_D0_SK5(array, method)
   14968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14969             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D0_SK5
   14970             : #endif
   14971             :         use pm_kind, only: SKC => SK5
   14972             :         character(*,SKC)        , intent(inout)                 :: array
   14973             :         type(insertionl_type)   , intent(in)                    :: method
   14974             :     end subroutine
   14975             : #endif
   14976             : 
   14977             : #if SK4_ENABLED
   14978             :     pure module subroutine setSortedArrDefComInsertionl_D0_SK4(array, method)
   14979             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14980             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D0_SK4
   14981             : #endif
   14982             :         use pm_kind, only: SKC => SK4
   14983             :         character(*,SKC)        , intent(inout)                 :: array
   14984             :         type(insertionl_type)   , intent(in)                    :: method
   14985             :     end subroutine
   14986             : #endif
   14987             : 
   14988             : #if SK3_ENABLED
   14989             :     pure module subroutine setSortedArrDefComInsertionl_D0_SK3(array, method)
   14990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   14991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D0_SK3
   14992             : #endif
   14993             :         use pm_kind, only: SKC => SK3
   14994             :         character(*,SKC)        , intent(inout)                 :: array
   14995             :         type(insertionl_type)   , intent(in)                    :: method
   14996             :     end subroutine
   14997             : #endif
   14998             : 
   14999             : #if SK2_ENABLED
   15000             :     pure module subroutine setSortedArrDefComInsertionl_D0_SK2(array, method)
   15001             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15002             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D0_SK2
   15003             : #endif
   15004             :         use pm_kind, only: SKC => SK2
   15005             :         character(*,SKC)        , intent(inout)                 :: array
   15006             :         type(insertionl_type)   , intent(in)                    :: method
   15007             :     end subroutine
   15008             : #endif
   15009             : 
   15010             : #if SK1_ENABLED
   15011             :     pure module subroutine setSortedArrDefComInsertionl_D0_SK1(array, method)
   15012             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15013             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D0_SK1
   15014             : #endif
   15015             :         use pm_kind, only: SKC => SK1
   15016             :         character(*,SKC)        , intent(inout)                 :: array
   15017             :         type(insertionl_type)   , intent(in)                    :: method
   15018             :     end subroutine
   15019             : #endif
   15020             : 
   15021             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15022             : 
   15023             : #if SK5_ENABLED
   15024             :     pure module subroutine setSortedArrDefComInsertionl_D1_SK5(array, method)
   15025             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15026             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_SK5
   15027             : #endif
   15028             :         use pm_kind, only: SKC => SK5
   15029             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15030             :         type(insertionl_type)   , intent(in)                    :: method
   15031             :     end subroutine
   15032             : #endif
   15033             : 
   15034             : #if SK4_ENABLED
   15035             :     pure module subroutine setSortedArrDefComInsertionl_D1_SK4(array, method)
   15036             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15037             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_SK4
   15038             : #endif
   15039             :         use pm_kind, only: SKC => SK4
   15040             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15041             :         type(insertionl_type)   , intent(in)                    :: method
   15042             :     end subroutine
   15043             : #endif
   15044             : 
   15045             : #if SK3_ENABLED
   15046             :     pure module subroutine setSortedArrDefComInsertionl_D1_SK3(array, method)
   15047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15048             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_SK3
   15049             : #endif
   15050             :         use pm_kind, only: SKC => SK3
   15051             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15052             :         type(insertionl_type)   , intent(in)                    :: method
   15053             :     end subroutine
   15054             : #endif
   15055             : 
   15056             : #if SK2_ENABLED
   15057             :     pure module subroutine setSortedArrDefComInsertionl_D1_SK2(array, method)
   15058             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15059             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_SK2
   15060             : #endif
   15061             :         use pm_kind, only: SKC => SK2
   15062             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15063             :         type(insertionl_type)   , intent(in)                    :: method
   15064             :     end subroutine
   15065             : #endif
   15066             : 
   15067             : #if SK1_ENABLED
   15068             :     pure module subroutine setSortedArrDefComInsertionl_D1_SK1(array, method)
   15069             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15070             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_SK1
   15071             : #endif
   15072             :         use pm_kind, only: SKC => SK1
   15073             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15074             :         type(insertionl_type)   , intent(in)                    :: method
   15075             :     end subroutine
   15076             : #endif
   15077             : 
   15078             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15079             : 
   15080             : #if IK5_ENABLED
   15081             :     pure module subroutine setSortedArrDefComInsertionl_D1_IK5(array, method)
   15082             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15083             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_IK5
   15084             : #endif
   15085             :         use pm_kind, only: IKC => IK5
   15086             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15087             :         type(insertionl_type)   , intent(in)                    :: method
   15088             :     end subroutine
   15089             : #endif
   15090             : 
   15091             : #if IK4_ENABLED
   15092             :     pure module subroutine setSortedArrDefComInsertionl_D1_IK4(array, method)
   15093             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15094             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_IK4
   15095             : #endif
   15096             :         use pm_kind, only: IKC => IK4
   15097             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15098             :         type(insertionl_type)   , intent(in)                    :: method
   15099             :     end subroutine
   15100             : #endif
   15101             : 
   15102             : #if IK3_ENABLED
   15103             :     pure module subroutine setSortedArrDefComInsertionl_D1_IK3(array, method)
   15104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_IK3
   15106             : #endif
   15107             :         use pm_kind, only: IKC => IK3
   15108             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15109             :         type(insertionl_type)   , intent(in)                    :: method
   15110             :     end subroutine
   15111             : #endif
   15112             : 
   15113             : #if IK2_ENABLED
   15114             :     pure module subroutine setSortedArrDefComInsertionl_D1_IK2(array, method)
   15115             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15116             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_IK2
   15117             : #endif
   15118             :         use pm_kind, only: IKC => IK2
   15119             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15120             :         type(insertionl_type)   , intent(in)                    :: method
   15121             :     end subroutine
   15122             : #endif
   15123             : 
   15124             : #if IK1_ENABLED
   15125             :     pure module subroutine setSortedArrDefComInsertionl_D1_IK1(array, method)
   15126             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15127             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_IK1
   15128             : #endif
   15129             :         use pm_kind, only: IKC => IK1
   15130             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15131             :         type(insertionl_type)   , intent(in)                    :: method
   15132             :     end subroutine
   15133             : #endif
   15134             : 
   15135             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15136             : 
   15137             : #if LK5_ENABLED
   15138             :     pure module subroutine setSortedArrDefComInsertionl_D1_LK5(array, method)
   15139             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15140             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_LK5
   15141             : #endif
   15142             :         use pm_kind, only: LKC => LK5
   15143             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15144             :         type(insertionl_type)   , intent(in)                    :: method
   15145             :     end subroutine
   15146             : #endif
   15147             : 
   15148             : #if LK4_ENABLED
   15149             :     pure module subroutine setSortedArrDefComInsertionl_D1_LK4(array, method)
   15150             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15151             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_LK4
   15152             : #endif
   15153             :         use pm_kind, only: LKC => LK4
   15154             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15155             :         type(insertionl_type)   , intent(in)                    :: method
   15156             :     end subroutine
   15157             : #endif
   15158             : 
   15159             : #if LK3_ENABLED
   15160             :     pure module subroutine setSortedArrDefComInsertionl_D1_LK3(array, method)
   15161             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15162             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_LK3
   15163             : #endif
   15164             :         use pm_kind, only: LKC => LK3
   15165             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15166             :         type(insertionl_type)   , intent(in)                    :: method
   15167             :     end subroutine
   15168             : #endif
   15169             : 
   15170             : #if LK2_ENABLED
   15171             :     pure module subroutine setSortedArrDefComInsertionl_D1_LK2(array, method)
   15172             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15173             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_LK2
   15174             : #endif
   15175             :         use pm_kind, only: LKC => LK2
   15176             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15177             :         type(insertionl_type)   , intent(in)                    :: method
   15178             :     end subroutine
   15179             : #endif
   15180             : 
   15181             : #if LK1_ENABLED
   15182             :     pure module subroutine setSortedArrDefComInsertionl_D1_LK1(array, method)
   15183             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15184             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_LK1
   15185             : #endif
   15186             :         use pm_kind, only: LKC => LK1
   15187             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15188             :         type(insertionl_type)   , intent(in)                    :: method
   15189             :     end subroutine
   15190             : #endif
   15191             : 
   15192             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15193             : 
   15194             : #if CK5_ENABLED
   15195             :     pure module subroutine setSortedArrDefComInsertionl_D1_CK5(array, method)
   15196             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15197             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_CK5
   15198             : #endif
   15199             :         use pm_kind, only: CKC => CK5
   15200             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15201             :         type(insertionl_type)   , intent(in)                    :: method
   15202             :     end subroutine
   15203             : #endif
   15204             : 
   15205             : #if CK4_ENABLED
   15206             :     pure module subroutine setSortedArrDefComInsertionl_D1_CK4(array, method)
   15207             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15208             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_CK4
   15209             : #endif
   15210             :         use pm_kind, only: CKC => CK4
   15211             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15212             :         type(insertionl_type)   , intent(in)                    :: method
   15213             :     end subroutine
   15214             : #endif
   15215             : 
   15216             : #if CK3_ENABLED
   15217             :     pure module subroutine setSortedArrDefComInsertionl_D1_CK3(array, method)
   15218             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15219             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_CK3
   15220             : #endif
   15221             :         use pm_kind, only: CKC => CK3
   15222             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15223             :         type(insertionl_type)   , intent(in)                    :: method
   15224             :     end subroutine
   15225             : #endif
   15226             : 
   15227             : #if CK2_ENABLED
   15228             :     pure module subroutine setSortedArrDefComInsertionl_D1_CK2(array, method)
   15229             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15230             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_CK2
   15231             : #endif
   15232             :         use pm_kind, only: CKC => CK2
   15233             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15234             :         type(insertionl_type)   , intent(in)                    :: method
   15235             :     end subroutine
   15236             : #endif
   15237             : 
   15238             : #if CK1_ENABLED
   15239             :     pure module subroutine setSortedArrDefComInsertionl_D1_CK1(array, method)
   15240             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15241             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_CK1
   15242             : #endif
   15243             :         use pm_kind, only: CKC => CK1
   15244             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15245             :         type(insertionl_type)   , intent(in)                    :: method
   15246             :     end subroutine
   15247             : #endif
   15248             : 
   15249             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15250             : 
   15251             : #if RK5_ENABLED
   15252             :     pure module subroutine setSortedArrDefComInsertionl_D1_RK5(array, method)
   15253             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15254             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_RK5
   15255             : #endif
   15256             :         use pm_kind, only: RKC => RK5
   15257             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15258             :         type(insertionl_type)   , intent(in)                    :: method
   15259             :     end subroutine
   15260             : #endif
   15261             : 
   15262             : #if RK4_ENABLED
   15263             :     pure module subroutine setSortedArrDefComInsertionl_D1_RK4(array, method)
   15264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15265             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_RK4
   15266             : #endif
   15267             :         use pm_kind, only: RKC => RK4
   15268             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15269             :         type(insertionl_type)   , intent(in)                    :: method
   15270             :     end subroutine
   15271             : #endif
   15272             : 
   15273             : #if RK3_ENABLED
   15274             :     pure module subroutine setSortedArrDefComInsertionl_D1_RK3(array, method)
   15275             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15276             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_RK3
   15277             : #endif
   15278             :         use pm_kind, only: RKC => RK3
   15279             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15280             :         type(insertionl_type)   , intent(in)                    :: method
   15281             :     end subroutine
   15282             : #endif
   15283             : 
   15284             : #if RK2_ENABLED
   15285             :     pure module subroutine setSortedArrDefComInsertionl_D1_RK2(array, method)
   15286             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15287             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_RK2
   15288             : #endif
   15289             :         use pm_kind, only: RKC => RK2
   15290             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15291             :         type(insertionl_type)   , intent(in)                    :: method
   15292             :     end subroutine
   15293             : #endif
   15294             : 
   15295             : #if RK1_ENABLED
   15296             :     pure module subroutine setSortedArrDefComInsertionl_D1_RK1(array, method)
   15297             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15298             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_RK1
   15299             : #endif
   15300             :         use pm_kind, only: RKC => RK1
   15301             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15302             :         type(insertionl_type)   , intent(in)                    :: method
   15303             :     end subroutine
   15304             : #endif
   15305             : 
   15306             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15307             : 
   15308             : #if SK5_ENABLED
   15309             :     pure module subroutine setSortedArrDefComInsertionl_D1_PSSK5(array, method)
   15310             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15311             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_PSSK5
   15312             : #endif
   15313             :         use pm_kind, only: SKC => SK5
   15314             :         use pm_container, only: css_pdt
   15315             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15316             :         type(insertionl_type)   , intent(in)                    :: method
   15317             :     end subroutine
   15318             : #endif
   15319             : 
   15320             : #if SK4_ENABLED
   15321             :     pure module subroutine setSortedArrDefComInsertionl_D1_PSSK4(array, method)
   15322             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15323             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_PSSK4
   15324             : #endif
   15325             :         use pm_kind, only: SKC => SK4
   15326             :         use pm_container, only: css_pdt
   15327             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15328             :         type(insertionl_type)   , intent(in)                    :: method
   15329             :     end subroutine
   15330             : #endif
   15331             : 
   15332             : #if SK3_ENABLED
   15333             :     pure module subroutine setSortedArrDefComInsertionl_D1_PSSK3(array, method)
   15334             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15335             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_PSSK3
   15336             : #endif
   15337             :         use pm_kind, only: SKC => SK3
   15338             :         use pm_container, only: css_pdt
   15339             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15340             :         type(insertionl_type)   , intent(in)                    :: method
   15341             :     end subroutine
   15342             : #endif
   15343             : 
   15344             : #if SK2_ENABLED
   15345             :     pure module subroutine setSortedArrDefComInsertionl_D1_PSSK2(array, method)
   15346             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15347             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_PSSK2
   15348             : #endif
   15349             :         use pm_kind, only: SKC => SK2
   15350             :         use pm_container, only: css_pdt
   15351             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15352             :         type(insertionl_type)   , intent(in)                    :: method
   15353             :     end subroutine
   15354             : #endif
   15355             : 
   15356             : #if SK1_ENABLED
   15357             :     pure module subroutine setSortedArrDefComInsertionl_D1_PSSK1(array, method)
   15358             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15359             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_PSSK1
   15360             : #endif
   15361             :         use pm_kind, only: SKC => SK1
   15362             :         use pm_container, only: css_pdt
   15363             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15364             :         type(insertionl_type)   , intent(in)                    :: method
   15365             :     end subroutine
   15366             : #endif
   15367             : 
   15368             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15369             : 
   15370             :     pure module subroutine setSortedArrDefComInsertionl_D1_BSSK(array, method)
   15371             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15372             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionl_D1_BSSK
   15373             : #endif
   15374             :         use pm_kind, only: SKC => SK
   15375             :         use pm_container, only: css_type
   15376             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   15377             :         type(insertionl_type)   , intent(in)                    :: method
   15378             :     end subroutine
   15379             : 
   15380             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15381             : 
   15382             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15383             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15384             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15385             : 
   15386             :     end interface
   15387             : 
   15388             :     ! setSortedArrDefComInsertionb
   15389             : 
   15390             :     interface setSorted
   15391             : 
   15392             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15393             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15394             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15395             : 
   15396             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15397             : 
   15398             : #if SK5_ENABLED
   15399             :     pure module subroutine setSortedArrDefComInsertionb_D0_SK5(array, method)
   15400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15401             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D0_SK5
   15402             : #endif
   15403             :         use pm_kind, only: SKC => SK5
   15404             :         character(*,SKC)        , intent(inout)                 :: array
   15405             :         type(insertionb_type)   , intent(in)                    :: method
   15406             :     end subroutine
   15407             : #endif
   15408             : 
   15409             : #if SK4_ENABLED
   15410             :     pure module subroutine setSortedArrDefComInsertionb_D0_SK4(array, method)
   15411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15412             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D0_SK4
   15413             : #endif
   15414             :         use pm_kind, only: SKC => SK4
   15415             :         character(*,SKC)        , intent(inout)                 :: array
   15416             :         type(insertionb_type)   , intent(in)                    :: method
   15417             :     end subroutine
   15418             : #endif
   15419             : 
   15420             : #if SK3_ENABLED
   15421             :     pure module subroutine setSortedArrDefComInsertionb_D0_SK3(array, method)
   15422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15423             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D0_SK3
   15424             : #endif
   15425             :         use pm_kind, only: SKC => SK3
   15426             :         character(*,SKC)        , intent(inout)                 :: array
   15427             :         type(insertionb_type)   , intent(in)                    :: method
   15428             :     end subroutine
   15429             : #endif
   15430             : 
   15431             : #if SK2_ENABLED
   15432             :     pure module subroutine setSortedArrDefComInsertionb_D0_SK2(array, method)
   15433             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15434             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D0_SK2
   15435             : #endif
   15436             :         use pm_kind, only: SKC => SK2
   15437             :         character(*,SKC)        , intent(inout)                 :: array
   15438             :         type(insertionb_type)   , intent(in)                    :: method
   15439             :     end subroutine
   15440             : #endif
   15441             : 
   15442             : #if SK1_ENABLED
   15443             :     pure module subroutine setSortedArrDefComInsertionb_D0_SK1(array, method)
   15444             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15445             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D0_SK1
   15446             : #endif
   15447             :         use pm_kind, only: SKC => SK1
   15448             :         character(*,SKC)        , intent(inout)                 :: array
   15449             :         type(insertionb_type)   , intent(in)                    :: method
   15450             :     end subroutine
   15451             : #endif
   15452             : 
   15453             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15454             : 
   15455             : #if SK5_ENABLED
   15456             :     pure module subroutine setSortedArrDefComInsertionb_D1_SK5(array, method)
   15457             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15458             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_SK5
   15459             : #endif
   15460             :         use pm_kind, only: SKC => SK5
   15461             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15462             :         type(insertionb_type)   , intent(in)                    :: method
   15463             :     end subroutine
   15464             : #endif
   15465             : 
   15466             : #if SK4_ENABLED
   15467             :     pure module subroutine setSortedArrDefComInsertionb_D1_SK4(array, method)
   15468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15469             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_SK4
   15470             : #endif
   15471             :         use pm_kind, only: SKC => SK4
   15472             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15473             :         type(insertionb_type)   , intent(in)                    :: method
   15474             :     end subroutine
   15475             : #endif
   15476             : 
   15477             : #if SK3_ENABLED
   15478             :     pure module subroutine setSortedArrDefComInsertionb_D1_SK3(array, method)
   15479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15480             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_SK3
   15481             : #endif
   15482             :         use pm_kind, only: SKC => SK3
   15483             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15484             :         type(insertionb_type)   , intent(in)                    :: method
   15485             :     end subroutine
   15486             : #endif
   15487             : 
   15488             : #if SK2_ENABLED
   15489             :     pure module subroutine setSortedArrDefComInsertionb_D1_SK2(array, method)
   15490             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15491             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_SK2
   15492             : #endif
   15493             :         use pm_kind, only: SKC => SK2
   15494             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15495             :         type(insertionb_type)   , intent(in)                    :: method
   15496             :     end subroutine
   15497             : #endif
   15498             : 
   15499             : #if SK1_ENABLED
   15500             :     pure module subroutine setSortedArrDefComInsertionb_D1_SK1(array, method)
   15501             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15502             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_SK1
   15503             : #endif
   15504             :         use pm_kind, only: SKC => SK1
   15505             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15506             :         type(insertionb_type)   , intent(in)                    :: method
   15507             :     end subroutine
   15508             : #endif
   15509             : 
   15510             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15511             : 
   15512             : #if IK5_ENABLED
   15513             :     pure module subroutine setSortedArrDefComInsertionb_D1_IK5(array, method)
   15514             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15515             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_IK5
   15516             : #endif
   15517             :         use pm_kind, only: IKC => IK5
   15518             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15519             :         type(insertionb_type)   , intent(in)                    :: method
   15520             :     end subroutine
   15521             : #endif
   15522             : 
   15523             : #if IK4_ENABLED
   15524             :     pure module subroutine setSortedArrDefComInsertionb_D1_IK4(array, method)
   15525             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15526             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_IK4
   15527             : #endif
   15528             :         use pm_kind, only: IKC => IK4
   15529             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15530             :         type(insertionb_type)   , intent(in)                    :: method
   15531             :     end subroutine
   15532             : #endif
   15533             : 
   15534             : #if IK3_ENABLED
   15535             :     pure module subroutine setSortedArrDefComInsertionb_D1_IK3(array, method)
   15536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15537             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_IK3
   15538             : #endif
   15539             :         use pm_kind, only: IKC => IK3
   15540             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15541             :         type(insertionb_type)   , intent(in)                    :: method
   15542             :     end subroutine
   15543             : #endif
   15544             : 
   15545             : #if IK2_ENABLED
   15546             :     pure module subroutine setSortedArrDefComInsertionb_D1_IK2(array, method)
   15547             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15548             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_IK2
   15549             : #endif
   15550             :         use pm_kind, only: IKC => IK2
   15551             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15552             :         type(insertionb_type)   , intent(in)                    :: method
   15553             :     end subroutine
   15554             : #endif
   15555             : 
   15556             : #if IK1_ENABLED
   15557             :     pure module subroutine setSortedArrDefComInsertionb_D1_IK1(array, method)
   15558             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15559             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_IK1
   15560             : #endif
   15561             :         use pm_kind, only: IKC => IK1
   15562             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15563             :         type(insertionb_type)   , intent(in)                    :: method
   15564             :     end subroutine
   15565             : #endif
   15566             : 
   15567             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15568             : 
   15569             : #if LK5_ENABLED
   15570             :     pure module subroutine setSortedArrDefComInsertionb_D1_LK5(array, method)
   15571             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15572             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_LK5
   15573             : #endif
   15574             :         use pm_kind, only: LKC => LK5
   15575             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15576             :         type(insertionb_type)   , intent(in)                    :: method
   15577             :     end subroutine
   15578             : #endif
   15579             : 
   15580             : #if LK4_ENABLED
   15581             :     pure module subroutine setSortedArrDefComInsertionb_D1_LK4(array, method)
   15582             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15583             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_LK4
   15584             : #endif
   15585             :         use pm_kind, only: LKC => LK4
   15586             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15587             :         type(insertionb_type)   , intent(in)                    :: method
   15588             :     end subroutine
   15589             : #endif
   15590             : 
   15591             : #if LK3_ENABLED
   15592             :     pure module subroutine setSortedArrDefComInsertionb_D1_LK3(array, method)
   15593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15594             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_LK3
   15595             : #endif
   15596             :         use pm_kind, only: LKC => LK3
   15597             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15598             :         type(insertionb_type)   , intent(in)                    :: method
   15599             :     end subroutine
   15600             : #endif
   15601             : 
   15602             : #if LK2_ENABLED
   15603             :     pure module subroutine setSortedArrDefComInsertionb_D1_LK2(array, method)
   15604             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15605             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_LK2
   15606             : #endif
   15607             :         use pm_kind, only: LKC => LK2
   15608             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15609             :         type(insertionb_type)   , intent(in)                    :: method
   15610             :     end subroutine
   15611             : #endif
   15612             : 
   15613             : #if LK1_ENABLED
   15614             :     pure module subroutine setSortedArrDefComInsertionb_D1_LK1(array, method)
   15615             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15616             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_LK1
   15617             : #endif
   15618             :         use pm_kind, only: LKC => LK1
   15619             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   15620             :         type(insertionb_type)   , intent(in)                    :: method
   15621             :     end subroutine
   15622             : #endif
   15623             : 
   15624             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15625             : 
   15626             : #if CK5_ENABLED
   15627             :     pure module subroutine setSortedArrDefComInsertionb_D1_CK5(array, method)
   15628             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15629             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_CK5
   15630             : #endif
   15631             :         use pm_kind, only: CKC => CK5
   15632             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15633             :         type(insertionb_type)   , intent(in)                    :: method
   15634             :     end subroutine
   15635             : #endif
   15636             : 
   15637             : #if CK4_ENABLED
   15638             :     pure module subroutine setSortedArrDefComInsertionb_D1_CK4(array, method)
   15639             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15640             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_CK4
   15641             : #endif
   15642             :         use pm_kind, only: CKC => CK4
   15643             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15644             :         type(insertionb_type)   , intent(in)                    :: method
   15645             :     end subroutine
   15646             : #endif
   15647             : 
   15648             : #if CK3_ENABLED
   15649             :     pure module subroutine setSortedArrDefComInsertionb_D1_CK3(array, method)
   15650             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15651             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_CK3
   15652             : #endif
   15653             :         use pm_kind, only: CKC => CK3
   15654             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15655             :         type(insertionb_type)   , intent(in)                    :: method
   15656             :     end subroutine
   15657             : #endif
   15658             : 
   15659             : #if CK2_ENABLED
   15660             :     pure module subroutine setSortedArrDefComInsertionb_D1_CK2(array, method)
   15661             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15662             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_CK2
   15663             : #endif
   15664             :         use pm_kind, only: CKC => CK2
   15665             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15666             :         type(insertionb_type)   , intent(in)                    :: method
   15667             :     end subroutine
   15668             : #endif
   15669             : 
   15670             : #if CK1_ENABLED
   15671             :     pure module subroutine setSortedArrDefComInsertionb_D1_CK1(array, method)
   15672             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15673             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_CK1
   15674             : #endif
   15675             :         use pm_kind, only: CKC => CK1
   15676             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   15677             :         type(insertionb_type)   , intent(in)                    :: method
   15678             :     end subroutine
   15679             : #endif
   15680             : 
   15681             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15682             : 
   15683             : #if RK5_ENABLED
   15684             :     pure module subroutine setSortedArrDefComInsertionb_D1_RK5(array, method)
   15685             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15686             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_RK5
   15687             : #endif
   15688             :         use pm_kind, only: RKC => RK5
   15689             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15690             :         type(insertionb_type)   , intent(in)                    :: method
   15691             :     end subroutine
   15692             : #endif
   15693             : 
   15694             : #if RK4_ENABLED
   15695             :     pure module subroutine setSortedArrDefComInsertionb_D1_RK4(array, method)
   15696             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15697             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_RK4
   15698             : #endif
   15699             :         use pm_kind, only: RKC => RK4
   15700             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15701             :         type(insertionb_type)   , intent(in)                    :: method
   15702             :     end subroutine
   15703             : #endif
   15704             : 
   15705             : #if RK3_ENABLED
   15706             :     pure module subroutine setSortedArrDefComInsertionb_D1_RK3(array, method)
   15707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15708             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_RK3
   15709             : #endif
   15710             :         use pm_kind, only: RKC => RK3
   15711             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15712             :         type(insertionb_type)   , intent(in)                    :: method
   15713             :     end subroutine
   15714             : #endif
   15715             : 
   15716             : #if RK2_ENABLED
   15717             :     pure module subroutine setSortedArrDefComInsertionb_D1_RK2(array, method)
   15718             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15719             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_RK2
   15720             : #endif
   15721             :         use pm_kind, only: RKC => RK2
   15722             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15723             :         type(insertionb_type)   , intent(in)                    :: method
   15724             :     end subroutine
   15725             : #endif
   15726             : 
   15727             : #if RK1_ENABLED
   15728             :     pure module subroutine setSortedArrDefComInsertionb_D1_RK1(array, method)
   15729             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15730             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_RK1
   15731             : #endif
   15732             :         use pm_kind, only: RKC => RK1
   15733             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   15734             :         type(insertionb_type)   , intent(in)                    :: method
   15735             :     end subroutine
   15736             : #endif
   15737             : 
   15738             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15739             : 
   15740             : #if SK5_ENABLED
   15741             :     pure module subroutine setSortedArrDefComInsertionb_D1_PSSK5(array, method)
   15742             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15743             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_PSSK5
   15744             : #endif
   15745             :         use pm_kind, only: SKC => SK5
   15746             :         use pm_container, only: css_pdt
   15747             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15748             :         type(insertionb_type)   , intent(in)                    :: method
   15749             :     end subroutine
   15750             : #endif
   15751             : 
   15752             : #if SK4_ENABLED
   15753             :     pure module subroutine setSortedArrDefComInsertionb_D1_PSSK4(array, method)
   15754             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15755             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_PSSK4
   15756             : #endif
   15757             :         use pm_kind, only: SKC => SK4
   15758             :         use pm_container, only: css_pdt
   15759             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15760             :         type(insertionb_type)   , intent(in)                    :: method
   15761             :     end subroutine
   15762             : #endif
   15763             : 
   15764             : #if SK3_ENABLED
   15765             :     pure module subroutine setSortedArrDefComInsertionb_D1_PSSK3(array, method)
   15766             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15767             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_PSSK3
   15768             : #endif
   15769             :         use pm_kind, only: SKC => SK3
   15770             :         use pm_container, only: css_pdt
   15771             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15772             :         type(insertionb_type)   , intent(in)                    :: method
   15773             :     end subroutine
   15774             : #endif
   15775             : 
   15776             : #if SK2_ENABLED
   15777             :     pure module subroutine setSortedArrDefComInsertionb_D1_PSSK2(array, method)
   15778             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15779             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_PSSK2
   15780             : #endif
   15781             :         use pm_kind, only: SKC => SK2
   15782             :         use pm_container, only: css_pdt
   15783             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15784             :         type(insertionb_type)   , intent(in)                    :: method
   15785             :     end subroutine
   15786             : #endif
   15787             : 
   15788             : #if SK1_ENABLED
   15789             :     pure module subroutine setSortedArrDefComInsertionb_D1_PSSK1(array, method)
   15790             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15791             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_PSSK1
   15792             : #endif
   15793             :         use pm_kind, only: SKC => SK1
   15794             :         use pm_container, only: css_pdt
   15795             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   15796             :         type(insertionb_type)   , intent(in)                    :: method
   15797             :     end subroutine
   15798             : #endif
   15799             : 
   15800             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15801             : 
   15802             :     pure module subroutine setSortedArrDefComInsertionb_D1_BSSK(array, method)
   15803             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15804             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComInsertionb_D1_BSSK
   15805             : #endif
   15806             :         use pm_kind, only: SKC => SK
   15807             :         use pm_container, only: css_type
   15808             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   15809             :         type(insertionb_type)   , intent(in)                    :: method
   15810             :     end subroutine
   15811             : 
   15812             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15813             : 
   15814             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15815             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15816             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15817             : 
   15818             :     end interface
   15819             : 
   15820             :     ! setSortedArrDefComMerger
   15821             : 
   15822             :     interface setSorted
   15823             : 
   15824             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15825             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15826             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15827             : 
   15828             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15829             : 
   15830             : #if SK5_ENABLED
   15831             :     PURE recursive module subroutine setSortedArrDefComMerger_D0_SK5(array, method)
   15832             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15833             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D0_SK5
   15834             : #endif
   15835             :         use pm_kind, only: SKC => SK5
   15836             :         character(*,SKC)        , intent(inout)                 :: array
   15837             :         type(merger_type)       , intent(in)                    :: method
   15838             :     end subroutine
   15839             : #endif
   15840             : 
   15841             : #if SK4_ENABLED
   15842             :     PURE recursive module subroutine setSortedArrDefComMerger_D0_SK4(array, method)
   15843             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15844             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D0_SK4
   15845             : #endif
   15846             :         use pm_kind, only: SKC => SK4
   15847             :         character(*,SKC)        , intent(inout)                 :: array
   15848             :         type(merger_type)       , intent(in)                    :: method
   15849             :     end subroutine
   15850             : #endif
   15851             : 
   15852             : #if SK3_ENABLED
   15853             :     PURE recursive module subroutine setSortedArrDefComMerger_D0_SK3(array, method)
   15854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D0_SK3
   15856             : #endif
   15857             :         use pm_kind, only: SKC => SK3
   15858             :         character(*,SKC)        , intent(inout)                 :: array
   15859             :         type(merger_type)       , intent(in)                    :: method
   15860             :     end subroutine
   15861             : #endif
   15862             : 
   15863             : #if SK2_ENABLED
   15864             :     PURE recursive module subroutine setSortedArrDefComMerger_D0_SK2(array, method)
   15865             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15866             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D0_SK2
   15867             : #endif
   15868             :         use pm_kind, only: SKC => SK2
   15869             :         character(*,SKC)        , intent(inout)                 :: array
   15870             :         type(merger_type)       , intent(in)                    :: method
   15871             :     end subroutine
   15872             : #endif
   15873             : 
   15874             : #if SK1_ENABLED
   15875             :     PURE recursive module subroutine setSortedArrDefComMerger_D0_SK1(array, method)
   15876             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15877             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D0_SK1
   15878             : #endif
   15879             :         use pm_kind, only: SKC => SK1
   15880             :         character(*,SKC)        , intent(inout)                 :: array
   15881             :         type(merger_type)       , intent(in)                    :: method
   15882             :     end subroutine
   15883             : #endif
   15884             : 
   15885             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15886             : 
   15887             : #if SK5_ENABLED
   15888             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_SK5(array, method)
   15889             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15890             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_SK5
   15891             : #endif
   15892             :         use pm_kind, only: SKC => SK5
   15893             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15894             :         type(merger_type)       , intent(in)                    :: method
   15895             :     end subroutine
   15896             : #endif
   15897             : 
   15898             : #if SK4_ENABLED
   15899             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_SK4(array, method)
   15900             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15901             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_SK4
   15902             : #endif
   15903             :         use pm_kind, only: SKC => SK4
   15904             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15905             :         type(merger_type)       , intent(in)                    :: method
   15906             :     end subroutine
   15907             : #endif
   15908             : 
   15909             : #if SK3_ENABLED
   15910             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_SK3(array, method)
   15911             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15912             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_SK3
   15913             : #endif
   15914             :         use pm_kind, only: SKC => SK3
   15915             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15916             :         type(merger_type)       , intent(in)                    :: method
   15917             :     end subroutine
   15918             : #endif
   15919             : 
   15920             : #if SK2_ENABLED
   15921             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_SK2(array, method)
   15922             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15923             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_SK2
   15924             : #endif
   15925             :         use pm_kind, only: SKC => SK2
   15926             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15927             :         type(merger_type)       , intent(in)                    :: method
   15928             :     end subroutine
   15929             : #endif
   15930             : 
   15931             : #if SK1_ENABLED
   15932             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_SK1(array, method)
   15933             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15934             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_SK1
   15935             : #endif
   15936             :         use pm_kind, only: SKC => SK1
   15937             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   15938             :         type(merger_type)       , intent(in)                    :: method
   15939             :     end subroutine
   15940             : #endif
   15941             : 
   15942             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   15943             : 
   15944             : #if IK5_ENABLED
   15945             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_IK5(array, method)
   15946             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15947             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_IK5
   15948             : #endif
   15949             :         use pm_kind, only: IKC => IK5
   15950             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15951             :         type(merger_type)       , intent(in)                    :: method
   15952             :     end subroutine
   15953             : #endif
   15954             : 
   15955             : #if IK4_ENABLED
   15956             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_IK4(array, method)
   15957             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15958             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_IK4
   15959             : #endif
   15960             :         use pm_kind, only: IKC => IK4
   15961             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15962             :         type(merger_type)       , intent(in)                    :: method
   15963             :     end subroutine
   15964             : #endif
   15965             : 
   15966             : #if IK3_ENABLED
   15967             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_IK3(array, method)
   15968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15969             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_IK3
   15970             : #endif
   15971             :         use pm_kind, only: IKC => IK3
   15972             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15973             :         type(merger_type)       , intent(in)                    :: method
   15974             :     end subroutine
   15975             : #endif
   15976             : 
   15977             : #if IK2_ENABLED
   15978             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_IK2(array, method)
   15979             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15980             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_IK2
   15981             : #endif
   15982             :         use pm_kind, only: IKC => IK2
   15983             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15984             :         type(merger_type)       , intent(in)                    :: method
   15985             :     end subroutine
   15986             : #endif
   15987             : 
   15988             : #if IK1_ENABLED
   15989             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_IK1(array, method)
   15990             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   15991             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_IK1
   15992             : #endif
   15993             :         use pm_kind, only: IKC => IK1
   15994             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   15995             :         type(merger_type)       , intent(in)                    :: method
   15996             :     end subroutine
   15997             : #endif
   15998             : 
   15999             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16000             : 
   16001             : #if LK5_ENABLED
   16002             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_LK5(array, method)
   16003             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16004             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_LK5
   16005             : #endif
   16006             :         use pm_kind, only: LKC => LK5
   16007             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16008             :         type(merger_type)       , intent(in)                    :: method
   16009             :     end subroutine
   16010             : #endif
   16011             : 
   16012             : #if LK4_ENABLED
   16013             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_LK4(array, method)
   16014             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16015             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_LK4
   16016             : #endif
   16017             :         use pm_kind, only: LKC => LK4
   16018             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16019             :         type(merger_type)       , intent(in)                    :: method
   16020             :     end subroutine
   16021             : #endif
   16022             : 
   16023             : #if LK3_ENABLED
   16024             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_LK3(array, method)
   16025             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16026             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_LK3
   16027             : #endif
   16028             :         use pm_kind, only: LKC => LK3
   16029             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16030             :         type(merger_type)       , intent(in)                    :: method
   16031             :     end subroutine
   16032             : #endif
   16033             : 
   16034             : #if LK2_ENABLED
   16035             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_LK2(array, method)
   16036             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16037             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_LK2
   16038             : #endif
   16039             :         use pm_kind, only: LKC => LK2
   16040             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16041             :         type(merger_type)       , intent(in)                    :: method
   16042             :     end subroutine
   16043             : #endif
   16044             : 
   16045             : #if LK1_ENABLED
   16046             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_LK1(array, method)
   16047             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16048             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_LK1
   16049             : #endif
   16050             :         use pm_kind, only: LKC => LK1
   16051             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16052             :         type(merger_type)       , intent(in)                    :: method
   16053             :     end subroutine
   16054             : #endif
   16055             : 
   16056             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16057             : 
   16058             : #if CK5_ENABLED
   16059             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_CK5(array, method)
   16060             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16061             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_CK5
   16062             : #endif
   16063             :         use pm_kind, only: CKC => CK5
   16064             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16065             :         type(merger_type)       , intent(in)                    :: method
   16066             :     end subroutine
   16067             : #endif
   16068             : 
   16069             : #if CK4_ENABLED
   16070             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_CK4(array, method)
   16071             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16072             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_CK4
   16073             : #endif
   16074             :         use pm_kind, only: CKC => CK4
   16075             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16076             :         type(merger_type)       , intent(in)                    :: method
   16077             :     end subroutine
   16078             : #endif
   16079             : 
   16080             : #if CK3_ENABLED
   16081             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_CK3(array, method)
   16082             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16083             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_CK3
   16084             : #endif
   16085             :         use pm_kind, only: CKC => CK3
   16086             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16087             :         type(merger_type)       , intent(in)                    :: method
   16088             :     end subroutine
   16089             : #endif
   16090             : 
   16091             : #if CK2_ENABLED
   16092             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_CK2(array, method)
   16093             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16094             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_CK2
   16095             : #endif
   16096             :         use pm_kind, only: CKC => CK2
   16097             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16098             :         type(merger_type)       , intent(in)                    :: method
   16099             :     end subroutine
   16100             : #endif
   16101             : 
   16102             : #if CK1_ENABLED
   16103             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_CK1(array, method)
   16104             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16105             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_CK1
   16106             : #endif
   16107             :         use pm_kind, only: CKC => CK1
   16108             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16109             :         type(merger_type)       , intent(in)                    :: method
   16110             :     end subroutine
   16111             : #endif
   16112             : 
   16113             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16114             : 
   16115             : #if RK5_ENABLED
   16116             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_RK5(array, method)
   16117             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16118             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_RK5
   16119             : #endif
   16120             :         use pm_kind, only: RKC => RK5
   16121             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16122             :         type(merger_type)       , intent(in)                    :: method
   16123             :     end subroutine
   16124             : #endif
   16125             : 
   16126             : #if RK4_ENABLED
   16127             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_RK4(array, method)
   16128             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16129             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_RK4
   16130             : #endif
   16131             :         use pm_kind, only: RKC => RK4
   16132             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16133             :         type(merger_type)       , intent(in)                    :: method
   16134             :     end subroutine
   16135             : #endif
   16136             : 
   16137             : #if RK3_ENABLED
   16138             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_RK3(array, method)
   16139             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16140             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_RK3
   16141             : #endif
   16142             :         use pm_kind, only: RKC => RK3
   16143             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16144             :         type(merger_type)       , intent(in)                    :: method
   16145             :     end subroutine
   16146             : #endif
   16147             : 
   16148             : #if RK2_ENABLED
   16149             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_RK2(array, method)
   16150             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16151             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_RK2
   16152             : #endif
   16153             :         use pm_kind, only: RKC => RK2
   16154             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16155             :         type(merger_type)       , intent(in)                    :: method
   16156             :     end subroutine
   16157             : #endif
   16158             : 
   16159             : #if RK1_ENABLED
   16160             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_RK1(array, method)
   16161             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16162             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_RK1
   16163             : #endif
   16164             :         use pm_kind, only: RKC => RK1
   16165             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16166             :         type(merger_type)       , intent(in)                    :: method
   16167             :     end subroutine
   16168             : #endif
   16169             : 
   16170             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16171             : 
   16172             : #if SK5_ENABLED
   16173             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_PSSK5(array, method)
   16174             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16175             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_PSSK5
   16176             : #endif
   16177             :         use pm_kind, only: SKC => SK5
   16178             :         use pm_container, only: css_pdt
   16179             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16180             :         type(merger_type)       , intent(in)                    :: method
   16181             :     end subroutine
   16182             : #endif
   16183             : 
   16184             : #if SK4_ENABLED
   16185             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_PSSK4(array, method)
   16186             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16187             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_PSSK4
   16188             : #endif
   16189             :         use pm_kind, only: SKC => SK4
   16190             :         use pm_container, only: css_pdt
   16191             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16192             :         type(merger_type)       , intent(in)                    :: method
   16193             :     end subroutine
   16194             : #endif
   16195             : 
   16196             : #if SK3_ENABLED
   16197             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_PSSK3(array, method)
   16198             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16199             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_PSSK3
   16200             : #endif
   16201             :         use pm_kind, only: SKC => SK3
   16202             :         use pm_container, only: css_pdt
   16203             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16204             :         type(merger_type)       , intent(in)                    :: method
   16205             :     end subroutine
   16206             : #endif
   16207             : 
   16208             : #if SK2_ENABLED
   16209             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_PSSK2(array, method)
   16210             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16211             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_PSSK2
   16212             : #endif
   16213             :         use pm_kind, only: SKC => SK2
   16214             :         use pm_container, only: css_pdt
   16215             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16216             :         type(merger_type)       , intent(in)                    :: method
   16217             :     end subroutine
   16218             : #endif
   16219             : 
   16220             : #if SK1_ENABLED
   16221             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_PSSK1(array, method)
   16222             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16223             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_PSSK1
   16224             : #endif
   16225             :         use pm_kind, only: SKC => SK1
   16226             :         use pm_container, only: css_pdt
   16227             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16228             :         type(merger_type)       , intent(in)                    :: method
   16229             :     end subroutine
   16230             : #endif
   16231             : 
   16232             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16233             : 
   16234             :     PURE recursive module subroutine setSortedArrDefComMerger_D1_BSSK(array, method)
   16235             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16236             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComMerger_D1_BSSK
   16237             : #endif
   16238             :         use pm_kind, only: SKC => SK
   16239             :         use pm_container, only: css_type
   16240             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   16241             :         type(merger_type)       , intent(in)                    :: method
   16242             :     end subroutine
   16243             : 
   16244             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16245             : 
   16246             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16247             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16248             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16249             : 
   16250             :     end interface
   16251             : 
   16252             :     ! setSortedArrDefComSelection
   16253             : 
   16254             :     interface setSorted
   16255             : 
   16256             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16257             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16258             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16259             : 
   16260             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16261             : 
   16262             : #if SK5_ENABLED
   16263             :     pure module subroutine setSortedArrDefComSelection_D0_SK5(array, method)
   16264             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16265             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D0_SK5
   16266             : #endif
   16267             :         use pm_kind, only: SKC => SK5
   16268             :         character(*,SKC)        , intent(inout)                 :: array
   16269             :         type(selection_type)    , intent(in)                    :: method
   16270             :     end subroutine
   16271             : #endif
   16272             : 
   16273             : #if SK4_ENABLED
   16274             :     pure module subroutine setSortedArrDefComSelection_D0_SK4(array, method)
   16275             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16276             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D0_SK4
   16277             : #endif
   16278             :         use pm_kind, only: SKC => SK4
   16279             :         character(*,SKC)        , intent(inout)                 :: array
   16280             :         type(selection_type)    , intent(in)                    :: method
   16281             :     end subroutine
   16282             : #endif
   16283             : 
   16284             : #if SK3_ENABLED
   16285             :     pure module subroutine setSortedArrDefComSelection_D0_SK3(array, method)
   16286             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16287             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D0_SK3
   16288             : #endif
   16289             :         use pm_kind, only: SKC => SK3
   16290             :         character(*,SKC)        , intent(inout)                 :: array
   16291             :         type(selection_type)    , intent(in)                    :: method
   16292             :     end subroutine
   16293             : #endif
   16294             : 
   16295             : #if SK2_ENABLED
   16296             :     pure module subroutine setSortedArrDefComSelection_D0_SK2(array, method)
   16297             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16298             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D0_SK2
   16299             : #endif
   16300             :         use pm_kind, only: SKC => SK2
   16301             :         character(*,SKC)        , intent(inout)                 :: array
   16302             :         type(selection_type)    , intent(in)                    :: method
   16303             :     end subroutine
   16304             : #endif
   16305             : 
   16306             : #if SK1_ENABLED
   16307             :     pure module subroutine setSortedArrDefComSelection_D0_SK1(array, method)
   16308             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16309             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D0_SK1
   16310             : #endif
   16311             :         use pm_kind, only: SKC => SK1
   16312             :         character(*,SKC)        , intent(inout)                 :: array
   16313             :         type(selection_type)    , intent(in)                    :: method
   16314             :     end subroutine
   16315             : #endif
   16316             : 
   16317             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16318             : 
   16319             : #if SK5_ENABLED
   16320             :     pure module subroutine setSortedArrDefComSelection_D1_SK5(array, method)
   16321             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16322             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_SK5
   16323             : #endif
   16324             :         use pm_kind, only: SKC => SK5
   16325             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16326             :         type(selection_type)    , intent(in)                    :: method
   16327             :     end subroutine
   16328             : #endif
   16329             : 
   16330             : #if SK4_ENABLED
   16331             :     pure module subroutine setSortedArrDefComSelection_D1_SK4(array, method)
   16332             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16333             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_SK4
   16334             : #endif
   16335             :         use pm_kind, only: SKC => SK4
   16336             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16337             :         type(selection_type)    , intent(in)                    :: method
   16338             :     end subroutine
   16339             : #endif
   16340             : 
   16341             : #if SK3_ENABLED
   16342             :     pure module subroutine setSortedArrDefComSelection_D1_SK3(array, method)
   16343             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16344             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_SK3
   16345             : #endif
   16346             :         use pm_kind, only: SKC => SK3
   16347             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16348             :         type(selection_type)    , intent(in)                    :: method
   16349             :     end subroutine
   16350             : #endif
   16351             : 
   16352             : #if SK2_ENABLED
   16353             :     pure module subroutine setSortedArrDefComSelection_D1_SK2(array, method)
   16354             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16355             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_SK2
   16356             : #endif
   16357             :         use pm_kind, only: SKC => SK2
   16358             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16359             :         type(selection_type)    , intent(in)                    :: method
   16360             :     end subroutine
   16361             : #endif
   16362             : 
   16363             : #if SK1_ENABLED
   16364             :     pure module subroutine setSortedArrDefComSelection_D1_SK1(array, method)
   16365             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16366             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_SK1
   16367             : #endif
   16368             :         use pm_kind, only: SKC => SK1
   16369             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16370             :         type(selection_type)    , intent(in)                    :: method
   16371             :     end subroutine
   16372             : #endif
   16373             : 
   16374             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16375             : 
   16376             : #if IK5_ENABLED
   16377             :     pure module subroutine setSortedArrDefComSelection_D1_IK5(array, method)
   16378             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16379             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_IK5
   16380             : #endif
   16381             :         use pm_kind, only: IKC => IK5
   16382             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16383             :         type(selection_type)    , intent(in)                    :: method
   16384             :     end subroutine
   16385             : #endif
   16386             : 
   16387             : #if IK4_ENABLED
   16388             :     pure module subroutine setSortedArrDefComSelection_D1_IK4(array, method)
   16389             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16390             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_IK4
   16391             : #endif
   16392             :         use pm_kind, only: IKC => IK4
   16393             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16394             :         type(selection_type)    , intent(in)                    :: method
   16395             :     end subroutine
   16396             : #endif
   16397             : 
   16398             : #if IK3_ENABLED
   16399             :     pure module subroutine setSortedArrDefComSelection_D1_IK3(array, method)
   16400             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16401             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_IK3
   16402             : #endif
   16403             :         use pm_kind, only: IKC => IK3
   16404             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16405             :         type(selection_type)    , intent(in)                    :: method
   16406             :     end subroutine
   16407             : #endif
   16408             : 
   16409             : #if IK2_ENABLED
   16410             :     pure module subroutine setSortedArrDefComSelection_D1_IK2(array, method)
   16411             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16412             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_IK2
   16413             : #endif
   16414             :         use pm_kind, only: IKC => IK2
   16415             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16416             :         type(selection_type)    , intent(in)                    :: method
   16417             :     end subroutine
   16418             : #endif
   16419             : 
   16420             : #if IK1_ENABLED
   16421             :     pure module subroutine setSortedArrDefComSelection_D1_IK1(array, method)
   16422             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16423             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_IK1
   16424             : #endif
   16425             :         use pm_kind, only: IKC => IK1
   16426             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16427             :         type(selection_type)    , intent(in)                    :: method
   16428             :     end subroutine
   16429             : #endif
   16430             : 
   16431             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16432             : 
   16433             : #if LK5_ENABLED
   16434             :     pure module subroutine setSortedArrDefComSelection_D1_LK5(array, method)
   16435             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16436             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_LK5
   16437             : #endif
   16438             :         use pm_kind, only: LKC => LK5
   16439             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16440             :         type(selection_type)    , intent(in)                    :: method
   16441             :     end subroutine
   16442             : #endif
   16443             : 
   16444             : #if LK4_ENABLED
   16445             :     pure module subroutine setSortedArrDefComSelection_D1_LK4(array, method)
   16446             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16447             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_LK4
   16448             : #endif
   16449             :         use pm_kind, only: LKC => LK4
   16450             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16451             :         type(selection_type)    , intent(in)                    :: method
   16452             :     end subroutine
   16453             : #endif
   16454             : 
   16455             : #if LK3_ENABLED
   16456             :     pure module subroutine setSortedArrDefComSelection_D1_LK3(array, method)
   16457             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16458             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_LK3
   16459             : #endif
   16460             :         use pm_kind, only: LKC => LK3
   16461             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16462             :         type(selection_type)    , intent(in)                    :: method
   16463             :     end subroutine
   16464             : #endif
   16465             : 
   16466             : #if LK2_ENABLED
   16467             :     pure module subroutine setSortedArrDefComSelection_D1_LK2(array, method)
   16468             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16469             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_LK2
   16470             : #endif
   16471             :         use pm_kind, only: LKC => LK2
   16472             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16473             :         type(selection_type)    , intent(in)                    :: method
   16474             :     end subroutine
   16475             : #endif
   16476             : 
   16477             : #if LK1_ENABLED
   16478             :     pure module subroutine setSortedArrDefComSelection_D1_LK1(array, method)
   16479             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16480             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_LK1
   16481             : #endif
   16482             :         use pm_kind, only: LKC => LK1
   16483             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16484             :         type(selection_type)    , intent(in)                    :: method
   16485             :     end subroutine
   16486             : #endif
   16487             : 
   16488             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16489             : 
   16490             : #if CK5_ENABLED
   16491             :     pure module subroutine setSortedArrDefComSelection_D1_CK5(array, method)
   16492             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16493             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_CK5
   16494             : #endif
   16495             :         use pm_kind, only: CKC => CK5
   16496             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16497             :         type(selection_type)    , intent(in)                    :: method
   16498             :     end subroutine
   16499             : #endif
   16500             : 
   16501             : #if CK4_ENABLED
   16502             :     pure module subroutine setSortedArrDefComSelection_D1_CK4(array, method)
   16503             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16504             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_CK4
   16505             : #endif
   16506             :         use pm_kind, only: CKC => CK4
   16507             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16508             :         type(selection_type)    , intent(in)                    :: method
   16509             :     end subroutine
   16510             : #endif
   16511             : 
   16512             : #if CK3_ENABLED
   16513             :     pure module subroutine setSortedArrDefComSelection_D1_CK3(array, method)
   16514             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16515             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_CK3
   16516             : #endif
   16517             :         use pm_kind, only: CKC => CK3
   16518             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16519             :         type(selection_type)    , intent(in)                    :: method
   16520             :     end subroutine
   16521             : #endif
   16522             : 
   16523             : #if CK2_ENABLED
   16524             :     pure module subroutine setSortedArrDefComSelection_D1_CK2(array, method)
   16525             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16526             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_CK2
   16527             : #endif
   16528             :         use pm_kind, only: CKC => CK2
   16529             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16530             :         type(selection_type)    , intent(in)                    :: method
   16531             :     end subroutine
   16532             : #endif
   16533             : 
   16534             : #if CK1_ENABLED
   16535             :     pure module subroutine setSortedArrDefComSelection_D1_CK1(array, method)
   16536             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16537             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_CK1
   16538             : #endif
   16539             :         use pm_kind, only: CKC => CK1
   16540             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16541             :         type(selection_type)    , intent(in)                    :: method
   16542             :     end subroutine
   16543             : #endif
   16544             : 
   16545             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16546             : 
   16547             : #if RK5_ENABLED
   16548             :     pure module subroutine setSortedArrDefComSelection_D1_RK5(array, method)
   16549             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16550             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_RK5
   16551             : #endif
   16552             :         use pm_kind, only: RKC => RK5
   16553             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16554             :         type(selection_type)    , intent(in)                    :: method
   16555             :     end subroutine
   16556             : #endif
   16557             : 
   16558             : #if RK4_ENABLED
   16559             :     pure module subroutine setSortedArrDefComSelection_D1_RK4(array, method)
   16560             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16561             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_RK4
   16562             : #endif
   16563             :         use pm_kind, only: RKC => RK4
   16564             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16565             :         type(selection_type)    , intent(in)                    :: method
   16566             :     end subroutine
   16567             : #endif
   16568             : 
   16569             : #if RK3_ENABLED
   16570             :     pure module subroutine setSortedArrDefComSelection_D1_RK3(array, method)
   16571             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16572             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_RK3
   16573             : #endif
   16574             :         use pm_kind, only: RKC => RK3
   16575             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16576             :         type(selection_type)    , intent(in)                    :: method
   16577             :     end subroutine
   16578             : #endif
   16579             : 
   16580             : #if RK2_ENABLED
   16581             :     pure module subroutine setSortedArrDefComSelection_D1_RK2(array, method)
   16582             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16583             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_RK2
   16584             : #endif
   16585             :         use pm_kind, only: RKC => RK2
   16586             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16587             :         type(selection_type)    , intent(in)                    :: method
   16588             :     end subroutine
   16589             : #endif
   16590             : 
   16591             : #if RK1_ENABLED
   16592             :     pure module subroutine setSortedArrDefComSelection_D1_RK1(array, method)
   16593             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16594             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_RK1
   16595             : #endif
   16596             :         use pm_kind, only: RKC => RK1
   16597             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16598             :         type(selection_type)    , intent(in)                    :: method
   16599             :     end subroutine
   16600             : #endif
   16601             : 
   16602             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16603             : 
   16604             : #if SK5_ENABLED
   16605             :     pure module subroutine setSortedArrDefComSelection_D1_PSSK5(array, method)
   16606             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16607             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_PSSK5
   16608             : #endif
   16609             :         use pm_kind, only: SKC => SK5
   16610             :         use pm_container, only: css_pdt
   16611             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16612             :         type(selection_type)    , intent(in)                    :: method
   16613             :     end subroutine
   16614             : #endif
   16615             : 
   16616             : #if SK4_ENABLED
   16617             :     pure module subroutine setSortedArrDefComSelection_D1_PSSK4(array, method)
   16618             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16619             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_PSSK4
   16620             : #endif
   16621             :         use pm_kind, only: SKC => SK4
   16622             :         use pm_container, only: css_pdt
   16623             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16624             :         type(selection_type)    , intent(in)                    :: method
   16625             :     end subroutine
   16626             : #endif
   16627             : 
   16628             : #if SK3_ENABLED
   16629             :     pure module subroutine setSortedArrDefComSelection_D1_PSSK3(array, method)
   16630             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16631             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_PSSK3
   16632             : #endif
   16633             :         use pm_kind, only: SKC => SK3
   16634             :         use pm_container, only: css_pdt
   16635             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16636             :         type(selection_type)    , intent(in)                    :: method
   16637             :     end subroutine
   16638             : #endif
   16639             : 
   16640             : #if SK2_ENABLED
   16641             :     pure module subroutine setSortedArrDefComSelection_D1_PSSK2(array, method)
   16642             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16643             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_PSSK2
   16644             : #endif
   16645             :         use pm_kind, only: SKC => SK2
   16646             :         use pm_container, only: css_pdt
   16647             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16648             :         type(selection_type)    , intent(in)                    :: method
   16649             :     end subroutine
   16650             : #endif
   16651             : 
   16652             : #if SK1_ENABLED
   16653             :     pure module subroutine setSortedArrDefComSelection_D1_PSSK1(array, method)
   16654             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16655             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_PSSK1
   16656             : #endif
   16657             :         use pm_kind, only: SKC => SK1
   16658             :         use pm_container, only: css_pdt
   16659             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   16660             :         type(selection_type)    , intent(in)                    :: method
   16661             :     end subroutine
   16662             : #endif
   16663             : 
   16664             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16665             : 
   16666             :     pure module subroutine setSortedArrDefComSelection_D1_BSSK(array, method)
   16667             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16668             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComSelection_D1_BSSK
   16669             : #endif
   16670             :         use pm_kind, only: SKC => SK
   16671             :         use pm_container, only: css_type
   16672             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   16673             :         type(selection_type)    , intent(in)                    :: method
   16674             :     end subroutine
   16675             : 
   16676             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16677             : 
   16678             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16679             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16680             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16681             : 
   16682             :     end interface
   16683             : 
   16684             :     ! setSortedArrDefComShell
   16685             : 
   16686             :     interface setSorted
   16687             : 
   16688             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16689             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16690             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16691             : 
   16692             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16693             : 
   16694             : #if SK5_ENABLED
   16695             :     pure module subroutine setSortedArrDefComShell_D0_SK5(array, method)
   16696             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16697             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D0_SK5
   16698             : #endif
   16699             :         use pm_kind, only: SKC => SK5
   16700             :         character(*,SKC)        , intent(inout)                 :: array
   16701             :         type(shell_type)        , intent(in)                    :: method
   16702             :     end subroutine
   16703             : #endif
   16704             : 
   16705             : #if SK4_ENABLED
   16706             :     pure module subroutine setSortedArrDefComShell_D0_SK4(array, method)
   16707             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16708             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D0_SK4
   16709             : #endif
   16710             :         use pm_kind, only: SKC => SK4
   16711             :         character(*,SKC)        , intent(inout)                 :: array
   16712             :         type(shell_type)        , intent(in)                    :: method
   16713             :     end subroutine
   16714             : #endif
   16715             : 
   16716             : #if SK3_ENABLED
   16717             :     pure module subroutine setSortedArrDefComShell_D0_SK3(array, method)
   16718             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16719             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D0_SK3
   16720             : #endif
   16721             :         use pm_kind, only: SKC => SK3
   16722             :         character(*,SKC)        , intent(inout)                 :: array
   16723             :         type(shell_type)        , intent(in)                    :: method
   16724             :     end subroutine
   16725             : #endif
   16726             : 
   16727             : #if SK2_ENABLED
   16728             :     pure module subroutine setSortedArrDefComShell_D0_SK2(array, method)
   16729             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16730             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D0_SK2
   16731             : #endif
   16732             :         use pm_kind, only: SKC => SK2
   16733             :         character(*,SKC)        , intent(inout)                 :: array
   16734             :         type(shell_type)        , intent(in)                    :: method
   16735             :     end subroutine
   16736             : #endif
   16737             : 
   16738             : #if SK1_ENABLED
   16739             :     pure module subroutine setSortedArrDefComShell_D0_SK1(array, method)
   16740             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16741             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D0_SK1
   16742             : #endif
   16743             :         use pm_kind, only: SKC => SK1
   16744             :         character(*,SKC)        , intent(inout)                 :: array
   16745             :         type(shell_type)        , intent(in)                    :: method
   16746             :     end subroutine
   16747             : #endif
   16748             : 
   16749             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16750             : 
   16751             : #if SK5_ENABLED
   16752             :     pure module subroutine setSortedArrDefComShell_D1_SK5(array, method)
   16753             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16754             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_SK5
   16755             : #endif
   16756             :         use pm_kind, only: SKC => SK5
   16757             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16758             :         type(shell_type)        , intent(in)                    :: method
   16759             :     end subroutine
   16760             : #endif
   16761             : 
   16762             : #if SK4_ENABLED
   16763             :     pure module subroutine setSortedArrDefComShell_D1_SK4(array, method)
   16764             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16765             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_SK4
   16766             : #endif
   16767             :         use pm_kind, only: SKC => SK4
   16768             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16769             :         type(shell_type)        , intent(in)                    :: method
   16770             :     end subroutine
   16771             : #endif
   16772             : 
   16773             : #if SK3_ENABLED
   16774             :     pure module subroutine setSortedArrDefComShell_D1_SK3(array, method)
   16775             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16776             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_SK3
   16777             : #endif
   16778             :         use pm_kind, only: SKC => SK3
   16779             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16780             :         type(shell_type)        , intent(in)                    :: method
   16781             :     end subroutine
   16782             : #endif
   16783             : 
   16784             : #if SK2_ENABLED
   16785             :     pure module subroutine setSortedArrDefComShell_D1_SK2(array, method)
   16786             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16787             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_SK2
   16788             : #endif
   16789             :         use pm_kind, only: SKC => SK2
   16790             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16791             :         type(shell_type)        , intent(in)                    :: method
   16792             :     end subroutine
   16793             : #endif
   16794             : 
   16795             : #if SK1_ENABLED
   16796             :     pure module subroutine setSortedArrDefComShell_D1_SK1(array, method)
   16797             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16798             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_SK1
   16799             : #endif
   16800             :         use pm_kind, only: SKC => SK1
   16801             :         character(*,SKC)        , intent(inout) , contiguous    :: array(:)
   16802             :         type(shell_type)        , intent(in)                    :: method
   16803             :     end subroutine
   16804             : #endif
   16805             : 
   16806             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16807             : 
   16808             : #if IK5_ENABLED
   16809             :     pure module subroutine setSortedArrDefComShell_D1_IK5(array, method)
   16810             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16811             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_IK5
   16812             : #endif
   16813             :         use pm_kind, only: IKC => IK5
   16814             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16815             :         type(shell_type)        , intent(in)                    :: method
   16816             :     end subroutine
   16817             : #endif
   16818             : 
   16819             : #if IK4_ENABLED
   16820             :     pure module subroutine setSortedArrDefComShell_D1_IK4(array, method)
   16821             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16822             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_IK4
   16823             : #endif
   16824             :         use pm_kind, only: IKC => IK4
   16825             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16826             :         type(shell_type)        , intent(in)                    :: method
   16827             :     end subroutine
   16828             : #endif
   16829             : 
   16830             : #if IK3_ENABLED
   16831             :     pure module subroutine setSortedArrDefComShell_D1_IK3(array, method)
   16832             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16833             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_IK3
   16834             : #endif
   16835             :         use pm_kind, only: IKC => IK3
   16836             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16837             :         type(shell_type)        , intent(in)                    :: method
   16838             :     end subroutine
   16839             : #endif
   16840             : 
   16841             : #if IK2_ENABLED
   16842             :     pure module subroutine setSortedArrDefComShell_D1_IK2(array, method)
   16843             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16844             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_IK2
   16845             : #endif
   16846             :         use pm_kind, only: IKC => IK2
   16847             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16848             :         type(shell_type)        , intent(in)                    :: method
   16849             :     end subroutine
   16850             : #endif
   16851             : 
   16852             : #if IK1_ENABLED
   16853             :     pure module subroutine setSortedArrDefComShell_D1_IK1(array, method)
   16854             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16855             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_IK1
   16856             : #endif
   16857             :         use pm_kind, only: IKC => IK1
   16858             :         integer(IKC)            , intent(inout) , contiguous    :: array(:)
   16859             :         type(shell_type)        , intent(in)                    :: method
   16860             :     end subroutine
   16861             : #endif
   16862             : 
   16863             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16864             : 
   16865             : #if LK5_ENABLED
   16866             :     pure module subroutine setSortedArrDefComShell_D1_LK5(array, method)
   16867             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16868             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_LK5
   16869             : #endif
   16870             :         use pm_kind, only: LKC => LK5
   16871             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16872             :         type(shell_type)        , intent(in)                    :: method
   16873             :     end subroutine
   16874             : #endif
   16875             : 
   16876             : #if LK4_ENABLED
   16877             :     pure module subroutine setSortedArrDefComShell_D1_LK4(array, method)
   16878             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16879             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_LK4
   16880             : #endif
   16881             :         use pm_kind, only: LKC => LK4
   16882             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16883             :         type(shell_type)        , intent(in)                    :: method
   16884             :     end subroutine
   16885             : #endif
   16886             : 
   16887             : #if LK3_ENABLED
   16888             :     pure module subroutine setSortedArrDefComShell_D1_LK3(array, method)
   16889             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16890             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_LK3
   16891             : #endif
   16892             :         use pm_kind, only: LKC => LK3
   16893             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16894             :         type(shell_type)        , intent(in)                    :: method
   16895             :     end subroutine
   16896             : #endif
   16897             : 
   16898             : #if LK2_ENABLED
   16899             :     pure module subroutine setSortedArrDefComShell_D1_LK2(array, method)
   16900             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16901             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_LK2
   16902             : #endif
   16903             :         use pm_kind, only: LKC => LK2
   16904             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16905             :         type(shell_type)        , intent(in)                    :: method
   16906             :     end subroutine
   16907             : #endif
   16908             : 
   16909             : #if LK1_ENABLED
   16910             :     pure module subroutine setSortedArrDefComShell_D1_LK1(array, method)
   16911             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16912             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_LK1
   16913             : #endif
   16914             :         use pm_kind, only: LKC => LK1
   16915             :         logical(LKC)            , intent(inout) , contiguous    :: array(:)
   16916             :         type(shell_type)        , intent(in)                    :: method
   16917             :     end subroutine
   16918             : #endif
   16919             : 
   16920             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16921             : 
   16922             : #if CK5_ENABLED
   16923             :     pure module subroutine setSortedArrDefComShell_D1_CK5(array, method)
   16924             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16925             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_CK5
   16926             : #endif
   16927             :         use pm_kind, only: CKC => CK5
   16928             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16929             :         type(shell_type)        , intent(in)                    :: method
   16930             :     end subroutine
   16931             : #endif
   16932             : 
   16933             : #if CK4_ENABLED
   16934             :     pure module subroutine setSortedArrDefComShell_D1_CK4(array, method)
   16935             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16936             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_CK4
   16937             : #endif
   16938             :         use pm_kind, only: CKC => CK4
   16939             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16940             :         type(shell_type)        , intent(in)                    :: method
   16941             :     end subroutine
   16942             : #endif
   16943             : 
   16944             : #if CK3_ENABLED
   16945             :     pure module subroutine setSortedArrDefComShell_D1_CK3(array, method)
   16946             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16947             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_CK3
   16948             : #endif
   16949             :         use pm_kind, only: CKC => CK3
   16950             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16951             :         type(shell_type)        , intent(in)                    :: method
   16952             :     end subroutine
   16953             : #endif
   16954             : 
   16955             : #if CK2_ENABLED
   16956             :     pure module subroutine setSortedArrDefComShell_D1_CK2(array, method)
   16957             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16958             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_CK2
   16959             : #endif
   16960             :         use pm_kind, only: CKC => CK2
   16961             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16962             :         type(shell_type)        , intent(in)                    :: method
   16963             :     end subroutine
   16964             : #endif
   16965             : 
   16966             : #if CK1_ENABLED
   16967             :     pure module subroutine setSortedArrDefComShell_D1_CK1(array, method)
   16968             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16969             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_CK1
   16970             : #endif
   16971             :         use pm_kind, only: CKC => CK1
   16972             :         complex(CKC)            , intent(inout) , contiguous    :: array(:)
   16973             :         type(shell_type)        , intent(in)                    :: method
   16974             :     end subroutine
   16975             : #endif
   16976             : 
   16977             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   16978             : 
   16979             : #if RK5_ENABLED
   16980             :     pure module subroutine setSortedArrDefComShell_D1_RK5(array, method)
   16981             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16982             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_RK5
   16983             : #endif
   16984             :         use pm_kind, only: RKC => RK5
   16985             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16986             :         type(shell_type)        , intent(in)                    :: method
   16987             :     end subroutine
   16988             : #endif
   16989             : 
   16990             : #if RK4_ENABLED
   16991             :     pure module subroutine setSortedArrDefComShell_D1_RK4(array, method)
   16992             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   16993             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_RK4
   16994             : #endif
   16995             :         use pm_kind, only: RKC => RK4
   16996             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   16997             :         type(shell_type)        , intent(in)                    :: method
   16998             :     end subroutine
   16999             : #endif
   17000             : 
   17001             : #if RK3_ENABLED
   17002             :     pure module subroutine setSortedArrDefComShell_D1_RK3(array, method)
   17003             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17004             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_RK3
   17005             : #endif
   17006             :         use pm_kind, only: RKC => RK3
   17007             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   17008             :         type(shell_type)        , intent(in)                    :: method
   17009             :     end subroutine
   17010             : #endif
   17011             : 
   17012             : #if RK2_ENABLED
   17013             :     pure module subroutine setSortedArrDefComShell_D1_RK2(array, method)
   17014             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17015             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_RK2
   17016             : #endif
   17017             :         use pm_kind, only: RKC => RK2
   17018             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   17019             :         type(shell_type)        , intent(in)                    :: method
   17020             :     end subroutine
   17021             : #endif
   17022             : 
   17023             : #if RK1_ENABLED
   17024             :     pure module subroutine setSortedArrDefComShell_D1_RK1(array, method)
   17025             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17026             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_RK1
   17027             : #endif
   17028             :         use pm_kind, only: RKC => RK1
   17029             :         real(RKC)               , intent(inout) , contiguous    :: array(:)
   17030             :         type(shell_type)        , intent(in)                    :: method
   17031             :     end subroutine
   17032             : #endif
   17033             : 
   17034             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17035             : 
   17036             : #if SK5_ENABLED
   17037             :     pure module subroutine setSortedArrDefComShell_D1_PSSK5(array, method)
   17038             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17039             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_PSSK5
   17040             : #endif
   17041             :         use pm_kind, only: SKC => SK5
   17042             :         use pm_container, only: css_pdt
   17043             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   17044             :         type(shell_type)        , intent(in)                    :: method
   17045             :     end subroutine
   17046             : #endif
   17047             : 
   17048             : #if SK4_ENABLED
   17049             :     pure module subroutine setSortedArrDefComShell_D1_PSSK4(array, method)
   17050             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17051             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_PSSK4
   17052             : #endif
   17053             :         use pm_kind, only: SKC => SK4
   17054             :         use pm_container, only: css_pdt
   17055             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   17056             :         type(shell_type)        , intent(in)                    :: method
   17057             :     end subroutine
   17058             : #endif
   17059             : 
   17060             : #if SK3_ENABLED
   17061             :     pure module subroutine setSortedArrDefComShell_D1_PSSK3(array, method)
   17062             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17063             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_PSSK3
   17064             : #endif
   17065             :         use pm_kind, only: SKC => SK3
   17066             :         use pm_container, only: css_pdt
   17067             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   17068             :         type(shell_type)        , intent(in)                    :: method
   17069             :     end subroutine
   17070             : #endif
   17071             : 
   17072             : #if SK2_ENABLED
   17073             :     pure module subroutine setSortedArrDefComShell_D1_PSSK2(array, method)
   17074             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17075             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_PSSK2
   17076             : #endif
   17077             :         use pm_kind, only: SKC => SK2
   17078             :         use pm_container, only: css_pdt
   17079             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   17080             :         type(shell_type)        , intent(in)                    :: method
   17081             :     end subroutine
   17082             : #endif
   17083             : 
   17084             : #if SK1_ENABLED
   17085             :     pure module subroutine setSortedArrDefComShell_D1_PSSK1(array, method)
   17086             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17087             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_PSSK1
   17088             : #endif
   17089             :         use pm_kind, only: SKC => SK1
   17090             :         use pm_container, only: css_pdt
   17091             :         type(css_pdt(SKC))      , intent(inout) , contiguous    :: array(:)
   17092             :         type(shell_type)        , intent(in)                    :: method
   17093             :     end subroutine
   17094             : #endif
   17095             : 
   17096             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17097             : 
   17098             :     pure module subroutine setSortedArrDefComShell_D1_BSSK(array, method)
   17099             : #if __INTEL_COMPILER && DLL_ENABLED && (_WIN32 || _WIN64)
   17100             :         !DEC$ ATTRIBUTES DLLEXPORT :: setSortedArrDefComShell_D1_BSSK
   17101             : #endif
   17102             :         use pm_kind, only: SKC => SK
   17103             :         use pm_container, only: css_type
   17104             :         type(css_type)          , intent(inout) , contiguous    :: array(:)
   17105             :         type(shell_type)        , intent(in)                    :: method
   17106             :     end subroutine
   17107             : 
   17108             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17109             : 
   17110             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17111             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17112             :     !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17113             : 
   17114             :     end interface
   17115             : 
   17116             : !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   17117             : 
   17118           0 : end module pm_arraySort

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