/* InsertAddress.ged */
/*
**  $VER: InsertAddress.ged 00.03 (09.01.95)
**
**  © by M.Brakemeier 1994/95
**
**  Ask for Surname (Prename etc. if there's more than one entry),
**  get and insert an Address received from ABOOK_SERVER
**  in an EmptyLetter.tex document.
**
*/

OPTIONS RESULTS                             /* enable return codes     */

if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
    address 'GOLDED.1'

'LOCK CURRENT'                              /* lock GUI, gain access   */
OPTIONS FAILAT 6                            /* ignore warnings         */
SIGNAL ON SYNTAX                            /* ensure clean exit       */


oldaddress = address()

'QUERY CAT'
isGerman = (result = 'deutsch')

If ~SHOW('P','ABOOK_SERVER') then
  do
    'REQUEST BODY "ABOOK_SERVER Port not availiable !" BUTTON "_OK"'
     signal done
  end

PRENAME = ''
SURNAME = ''

if (isGerman) then
  'REQUEST TITLE="Empfänger-Adresse einfügen" BODY="Bitte Nachnamen eingeben :" STRING VAR SURNAME'
else
  'REQUEST TITLE="Insert addressee" BODY="Please insert surname :" STRING VAR SURNAME'

if surname = '' then signal done

address 'ABOOK_SERVER'

'FIND SURNAME '||surname
valid = RC
data = RESULT

if valid = 0 then
  do
    number = value(word(data,1))
    
    if number > 1 then
      do
      /* hard work now! There's more than one entry with this surname */
      address VALUE oldaddress
      if (isGerman) then
        'REQUEST TITLE="Empfänger-Adresse einfügen" BODY="Es sind mehrere Einträge vorhanden ! Bitte Vornamen eingeben :" STRING VAR PRENAME'
      else
        'REQUEST TITLE="Insert addressee" BODY="More than one Entry found ! Please insert prename :" STRING VAR PRENAME'
      if prename = '' then signal done
      
      address 'ABOOK_SERVER'
      'FIND PRENAME '||prename
      valid = RC
      data2 = RESULT

      if valid = 0 then
        do
          prenumber = value(word(data2,1))
          addressee = 0
          do surindex = 1 to number until addressee ~== 0
            matchsur = value(word(data,surindex+1))
            do preindex = 1 to prenumber until addressee ~== 0
              matchpre = value(word(data2,preindex+1))
              if matchsur == matchpre then addressee = matchsur
            end
          end
        end
      else
        do
          newaddress = address()
          address VALUE oldaddress
          if (isGerman) then
            'REQUEST TITLE="Empfänger-Adresse einfügen" BODY="Kein Eintrag gefunden !"'
          else
            'REQUEST TITLE="Insert addressee" BODY="Sorry, no entry found !" '
          address VALUE newaddress
          signal done
        end
      end
    else
      /* puuh. only one entry */
      addressee = value(word(data,2))
  
  /* now we've found the right entry. get the data */
  'LOCK '||addressee

  if prename == '' then
    do
      'QUERY PRENAME'
      prename = RESULT
    end
  'QUERY STREET'
  street = RESULT
  'QUERY POSTCODE'
  postcode = RESULT
  'QUERY TOWN'
  town = RESULT
  
  address VALUE oldaddress

  adrstring = '{'||prename||' '||surname||' \\'||street||' \medskip \\{\large '||postcode||' '||town||'}}'
  
  'PING 0'
  'GOTO TOP'
  'FIND STRING="\begin{letter}" FIRST'
  'GOTO EOL'
  'TEXT T="'||adrstring||'" CR'
  'PONG 0'

  end
else
  do
    newaddress = address()
    address VALUE oldaddress
    if (isGerman) then
      'REQUEST TITLE="Empfänger-Adresse einfügen" BODY="Kein Eintrag gefunden !"'
    else
      'REQUEST TITLE="Insert addressee" BODY="Sorry, no entry found !" '
    address VALUE newaddress
  end


DONE:

address VALUE oldaddress
'UNLOCK'

EXIT

SYNTAX:

SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("

address VALUE oldaddress
'UNLOCK'

EXIT

