```    Program g12abfe

!     G12ABF Example Program Text

!     Mark 27.0 Release. NAG Copyright 2019.

!     .. Use Statements ..
Use nag_library, Only: g12abf, nag_wp
!     .. Implicit None Statement ..
Implicit None
!     .. Parameters ..
Integer, Parameter               :: nin = 5, nout = 6
!     .. Local Scalars ..
Real (Kind=nag_wp)               :: p, ts
Integer                          :: df, i, ifail, ldn, lfreq, lwt, n,    &
nd, ngrp
Character (1)                    :: freq, weight
!     .. Local Arrays ..
Real (Kind=nag_wp), Allocatable  :: expt(:), obsd(:), t(:), wt(:)
Integer, Allocatable             :: di(:), grp(:), ic(:), ifreq(:),      &
ni(:)
!     .. Executable Statements ..
Write (nout,*) 'G12ABF Example Program Results'
Write (nout,*)

!     Skip heading in data file

!     Read in the problem size
Read (nin,*) n, ngrp, freq, weight

If (freq=='F' .Or. freq=='f') Then
lfreq = n
Else
lfreq = 0
End If
If (weight=='W' .Or. weight=='w') Then
lwt = n
Else
lwt = 0
End If
ldn = n
Allocate (t(n),ic(n),grp(n),ifreq(lfreq),obsd(ngrp),expt(ngrp),di(ldn),  &
ni(ldn),wt(lwt))

If (lfreq==0) Then
Else
End If

!     Calculate the statistic
ifail = 0
Call g12abf(n,t,ic,grp,ngrp,freq,ifreq,weight,wt,ts,df,p,obsd,expt,nd,   &
di,ni,ldn,ifail)

!     Display results
Write (nout,99999) 'Observed', 'Expected'
Write (nout,99998)('Group',i,obsd(i),expt(i),i=1,ngrp)
Write (nout,*)
Write (nout,99996) 'No. Unique Failure Times = ', nd
Write (nout,*)
Write (nout,99997) 'Test Statistic           = ', ts
Write (nout,99996) 'Degrees of Freedom       = ', df
Write (nout,99997) 'p-value                  = ', p

99999 Format (11X,A,2X,A)
99998 Format (1X,A,1X,I1,1X,F8.2,2X,F8.2)
99997 Format (1X,A,1X,F8.4)
99996 Format (1X,A,1X,I3)
End Program g12abfe
```