NAG Library Manual, Mark 28.7
```    Program g13dsfe

!     G13DSF Example Program Text

!     Mark 28.7 Release. NAG Copyright 2022.

!     .. Use Statements ..
Use nag_library, Only: g13ddf, g13dsf, nag_wp, x04abf
!     .. Implicit None Statement ..
Implicit None
!     .. Parameters ..
Integer, Parameter               :: iset = 1, nin = 5, nout = 6
!     .. Local Scalars ..
Real (Kind=nag_wp)               :: cgetol, chi, rlogl, siglev
Integer                          :: dishow, i, idf, ifail, ip, iprint,   &
iq, ishow, k, k2, kmax, ldcm, ldrcm, &
liw, lpar, lwork, m, maxcal, mk2, n, &
Logical                          :: exact, mean
!     .. Local Arrays ..
Real (Kind=nag_wp), Allocatable  :: cm(:,:), g(:), par(:), qq(:,:),      &
r(:,:,:), r0(:,:), rcm(:,:), v(:,:), &
w(:,:), work(:)
Integer, Allocatable             :: iw(:)
Logical, Allocatable             :: parhld(:)
!     .. Intrinsic Procedures ..
Intrinsic                        :: max
!     .. Executable Statements ..
Write (nout,*) 'G13DSF Example Program Results'
Write (nout,*)
Flush (nout)

!     Skip heading in data file

!     Read in the problem size
Read (nin,*) k, ip, iq, n, mean, m

!     Calculate number of parameters for the VARMA
k2 = k*k
lpar = (ip+iq)*k2
npar = lpar
If (mean) Then
lpar = lpar + k
End If

kmax = k
ldcm = lpar
mk2 = m*k2
ldrcm = mk2
liw = k*max(ip,iq)
lwork = k*(n+kmax+2) + mk2*(npar+mk2+1) + 3*k2
Allocate (par(lpar),parhld(lpar),qq(kmax,k),w(kmax,n),v(kmax,n),g(lpar), &
cm(ldcm,lpar),r0(kmax,k),rcm(ldrcm,mk2),iw(liw),work(lwork),           &
r(kmax,kmax,mk2))

Read (nin,*) iprint, cgetol, maxcal, dishow

!     Read in exact likelihood flag

!     Read in initial parameter estimates and free parameter flags

!     Read in initial values for covariance matrix Q

!     Read in the ISHOW flag for G13DSF

!     Set the advisory channel to NOUT for monitoring information
If (iprint>=0 .Or. dishow/=0 .Or. ishow/=0) Then
End If

!     Fit VARMA model
ifail = -1
Call g13ddf(k,n,ip,iq,mean,par,lpar,qq,kmax,w,parhld,exact,iprint,       &
cgetol,maxcal,dishow,niter,rlogl,v,g,cm,ldcm,ifail)
If (ifail/=0) Then
If (ifail<4) Then
Go To 100
End If
End If

!     Titles
Write (nout,*)
Write (nout,*) 'Output from G13DSF'
Write (nout,*)
Flush (nout)

!     Calculate and display diagnostics
ifail = 0
Call g13dsf(k,n,v,kmax,ip,iq,m,par,parhld,qq,ishow,r0,r,rcm,ldrcm,chi,   &
idf,siglev,iw,liw,work,lwork,ifail)

100   Continue

End Program g13dsfe
```