/* Extract coverage data */
parse upper arg Pgm Ft Fm

'STATE' Pgm 'TEST1 A'
IF rc = 0 then do
   say Pgm 'TEST1 A already present'
   exit 69
end

TestNum = 0

DO Forever
   'EXECIO 1 DISKR' Pgm Ft Fm '(VAR TLINE'
   IF rc ^= 0 then leave
   IF TestNum = 0 then do
      call Init
   end
   ELSE do
      call Combine
   end
end

IF Cline.0 > 0 then do
   DO i = 1 to cline.0
      queue cline.i
   end
   'EXECIO' queued() 'DISKW' Pgm 'TEST1 A (FINIS'
end

'EXECIO 0 DISKR' Pgm Ft Fm '(FINIS'
Say 'Total executions =' TestNum

exit

Init:
parse upper var tline PgmT VerbT UseT Col80T . Junk

IF Junk = '' & PgmT = Pgm & VerbT = 'EXECUTED' then do
   TestNum = TestNum + 1
   say 'Test' TestNum 'extracted'
   return
end

IF Junk = '' & PgmT = Pgm & VerbT > 0 then do
   c         = VerbT
   cline.0   = c
   cline.c   = Pgm c UseT Col80T
end

return

Combine:
parse upper var tline PgmT VerbT UseT . . Junk

IF Junk = '' & PgmT = Pgm & VerbT = 'EXECUTED' then do
   TestNum = TestNum + 1
   say 'Test' TestNum 'extracted'
   return
end

IF Junk = '' & PgmT = Pgm & VerbT > 0 & VerbT < ( cline.0 + 1 ) then do
   c         = VerbT
   CombUse   = word(cline.c,3) + UseT
   cline.c   = Pgm c CombUse word(cline.c,4)
end

return

© Copyright IT Doctors.co.uk. 2002