* ERRGEN
* Generate SYSCOM ERR.H and include record for !ERRTEXT subroutine.
* Copyright (c) 2003 Ladybridge Systems, All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* 
* Ladybridge Systems can be contacted via the www.openqm.com web site.
* 
* START-HISTORY:
* 16 Sep 04  2.0-1 OpenQM launch. Earlier history details suppressed.
* END-HISTORY
*
* START-DESCRIPTION:
*
* END-DESCRIPTION
*
* START-CODE

program errgen
$include err.h

   openseq 'BP', 'errtext.h' to out.f else
      if status() then abort 'Cannot open BP errtext.h'
   end
   weofseq out.f

   openseq 'SYSCOM', 'ERR.H' to syscom.f else
      if status() then abort 'Cannot open SYSCOM err.h'
   end
   weofseq syscom.f

   writeseq '* ERRGEN.H' to out.f else abort 'Write error'
   writeseq '* Generated by ERRGEN at ' : timedate() to out.f else abort 'Write error'
   writeseq '' to out.f else abort 'Write error'

   openseq 'CSRC', 'err.h' to in.f else abort 'Cannot open CSRC err.h'

   loop
      readseq rec from in.f else exit
      trec = trim(rec)
      if trec[1, 7] = '#define' then
         srec = 'err<-1> = "' : field(trec, ' ', 3) : '"'
         srec := '; text<-1> = "' : trim(change(field(trec, '*', 2), '(dos)', '')) : '"'
         writeseq srec to out.f else abort 'Write error'
      end

      begin case
         case trim(rec) = ''
            writeseq '' to syscom.f else abort 'Write error'

         case rec[1, 2] = '//'
            null

         case rec[1, 7] = '#define'
            rec[1, 1] = '$'
            rec = change(rec, '_', '$', 1)
            rec = change(rec, '_', '.')
            rec = change(rec, '/*', ';*')
            rec = change(rec, '*/', '')
            writeseq trimb(rec) to syscom.f else abort 'Write error'

         case 1
            rec = '* ' : rec[4, 9999]
            rec = change(rec, '*/', '')
            writeseq trimb(rec) to syscom.f else abort 'Write error'
      end case
   repeat

end

* END-CODE
