```    Program m01edfe

!     M01EDF Example Program Text

!     Mark 27.1 Release. NAG Copyright 2020.

!     .. Use Statements ..
Use nag_library, Only: m01daf, m01edf, nag_wp, x04daf
!     .. Implicit None Statement ..
Implicit None
!     .. Parameters ..
Integer, Parameter               :: nin = 5, nout = 6
!     .. Local Scalars ..
Integer                          :: i, ifail, j, k, m1, m2, n
Character (30)                   :: string
!     .. Local Arrays ..
Complex (Kind=nag_wp), Allocatable :: cm(:,:)
Real (Kind=nag_wp), Allocatable  :: cmod(:)
Integer, Allocatable             :: irank(:)
!     .. Intrinsic Procedures ..
Intrinsic                        :: abs
!     .. Executable Statements ..
Write (nout,*) 'M01EDF Example Program Results'
Flush (nout)

!     Skip heading in data file

Read (nin,*) m2, n, k

If (k<1 .Or. k>n) Then
Go To 100
End If

Allocate (cm(m2,n),cmod(m2),irank(m2))

m1 = 1

Do i = m1, m2
End Do

!     Calculate the moduli of the elements in the K-th column.

Do i = m1, m2
cmod(i) = abs(cm(i,k))
End Do

!     Rearrange the rows so that the elements in the K-th column
!     are in ascending order of modulus.

ifail = 0
Call m01daf(cmod,m1,m2,'Ascending',irank,ifail)

!     Rearrange each column into the order specified by IRANK.

Do j = 1, n

ifail = 0
Call m01edf(cm(m1,j),m1,m2,irank,ifail)

End Do

!     Print the results.

Write (nout,*)
Write (string,99999) 'Matrix sorted on column', k
Flush (nout)

ifail = 0
Call x04daf('General',' ',m2-m1+1,n,cm(m1,1),m2,string,ifail)

100   Continue

99999 Format (1X,A,I3)
End Program m01edfe
```