Program h02bufe ! H02BUF Example Program Text ! Mark 24 Release. NAG Copyright 2012. ! .. Use Statements .. Use nag_library, Only: e04mff, e04mhf, h02buf, h02bvf, nag_wp, x04acf, & x04baf ! .. Implicit None Statement .. Implicit None ! .. Parameters .. Real (Kind=nag_wp), Parameter :: xbl_default = 0.0E0_nag_wp Real (Kind=nag_wp), Parameter :: xbu_default = 1.0E+20_nag_wp Integer, Parameter :: maxm = 50, maxn = 50, nindat = 7, & nout = 6 Integer, Parameter :: lda = maxm Integer, Parameter :: liwork = 2*maxn + 3 Integer, Parameter :: & lwork = 2*(maxm+1)**2 + 7*maxn + 5*maxm Character (*), Parameter :: fname = 'h02bufe.opt' Character (8), Parameter :: kblank = ' ' Character (3), Parameter :: optim = 'MIN' ! .. Local Scalars .. Real (Kind=nag_wp) :: objval Integer :: ifail, infile, iter, m, mode, n Logical :: mpslst Character (8) :: nmbnd, nmobj, nmprob, nmrhs, nmrng Character (80) :: rec ! .. Local Arrays .. Real (Kind=nag_wp) :: a(maxm,maxn), ax(maxm), & bl(maxn+maxm), bu(maxn+maxm), & clamda(maxn+maxm), cvec(maxn), & work(lwork), x(maxn) Integer :: intvar(maxn), istate(maxn+maxm), & iwork(liwork) Character (8) :: crname(maxn+maxm) ! .. Executable Statements .. Write (rec,99999) 'H02BUF Example Program Results' Call x04baf(nout,rec) ! Open the data file for reading mode = 0 ifail = 0 Call x04acf(nindat,fname,mode,ifail) ! Initialize parameters infile = nindat nmprob = kblank nmobj = kblank nmrhs = kblank nmrng = kblank nmbnd = kblank mpslst = .False. ! Convert the MPSX data file for use by E04MFF ifail = 0 Call h02buf(infile,maxn,maxm,optim,xbl_default,xbu_default,nmobj,nmrhs, & nmrng,nmbnd,mpslst,n,m,a,bl,bu,cvec,x,intvar,crname,nmprob,istate, & ifail) ! Solve the problem Call e04mhf('Print Level = 5') ifail = -1 Call e04mff(n,m,a,lda,bl,bu,cvec,istate,x,iter,objval,ax,clamda,iwork, & liwork,work,lwork,ifail) Select Case (ifail) Case (0,1,3) ! Print solution (using MPSX names) ifail = 0 Call h02bvf(n,m,a,lda,bl,bu,x,clamda,istate,crname,ifail) End Select 99999 Format (1X,A) End Program h02bufe