/* mdb.rexx   (c) 1994 by Michael A. Bode                  */
/* $VER: mdb.rexx 1.0ger (20.11.94)                        */

/* Original mdb.trans 1.0ger by Georg 'Gio' Magschok       */

/* Use this ARexx-script for accessing MovieDataBaseMUI    */
/* from within Excelsior! Professional BBS.                */

/* Feel free to alter onscreen-texts to fit your language  */

options results

GETUSER 1 ; usern = result
GETUSER 23 ; bbsline = result

menuname ='mdbmenu'
selmenu  ='mdbselmenu'

/* Alter the next line in order to start MovieMUI properly ! */

mmui = 'run dh0:MovieDataBase/MovieMUI errorfile errorlevel=0 debuglevel=0 quiet'

autoquit = 1
tempfile ='t:mdbtemp.'||bbsline

if (~show('p','MOVIEMUI')) then do
 TRANSMIT 'MovieMUI wird gestartet...'
 address command mmui
 address command 'waitforport MOVIEMUI'
end
NEWLINE

SYSOPLOG usern||' hat die MovieDataBase gestartet !'
CHANGEWHAT 'MovieDataBase'

do until cmd='E'
 SENDMENU menuname
 GETUSER 7 ; time=result
 QUERY '\c2[\c3Zeit: \c4'||time||'\c2] [\c3Befehle: \c4F P S I ? E \c2] \c5'
 cmd=upper(result)
 if cmd='###PANIC' then call stopit
 select
  when (cmd='?' | cmd='') then SENDMENU menuname
  when cmd='F' then call moviesearch
  when cmd='P' then call personsearch
  when cmd='S' then call selectivesearch
  when cmd='I' then call infor
  when cmd='E' then NEWLINE
  otherwise do
    NEWLINE
    TRANSMIT "\c2Dieser Befehl ist hier unbekannt, versuch's mal mit "||'"\c1?\c2" !'
    GETCHAR
  end
 end
end

stopit:
if autoquit=1 then address 'MOVIEMUI' 'QUIT'
exit

moviesearch:
 NEWLINE
 QUERY 'Nach welchem Film suchen ? ' ; movie=result
 if movie~='RESULT' & movie~='' & movie~='###PANIC' then do
  TRANSMIT "MovieDataBase wird nach '"||movie||"' durchsucht..."
  address 'MOVIEMUI' 'GET "'||movie||'" FROM MOVIE' ; mytext=result
  if mytext='RESULT' | RC~=0 then do
   TRANSMIT "\c2Der Film wurde nicht gefunden ! Probier's mal mit selektiver Suche !"
   GETCHAR
  end
  else do
   TRANSMIT '\c7'
   call gibsaus
  end
 end
return

personsearch:
 NEWLINE
 QUERY 'Nach welcher Person suchen (Nachname, Vorname) ? ' ; person=result
 if person~='RESULT' & person~='' & person~='###PANIC' then do
  TRANSMIT "MovieDataBase wird nach '"||person||"' durchsucht..."
  address 'MOVIEMUI' 'GET "'||person||'" FROM ANY' ; mytext=result
  if mytext='RESULT' | RC~=0 then do
   TRANSMIT "\c2Die Person wurde nicht gefunden ! Probier's mal mit selektiver Suche !"
   GETCHAR
  end
  else do
   TRANSMIT '\c7'
   call gibsaus
  end
 end
return

selectivesearch:
NEWLINE
address 'MOVIEMUI' 'UNSELECT KEY=0' ; skey=result
numentries='alle'
do until cmd='+'
 SENDMENU selmenu
 GETUSER 7 ; time=result
 NEWLINE
 TRANSMIT 'Es sind '||numentries||' Datensaetze selektiert !'
 QUERY '\n1\c2[\c3Zeit: \c4'||time||'\c2] [\c3Befehle: \c40\c3-\c49 U N D W ? + \c2] \c5'
 cmd=upper(result)
 if CARRIER=0 then call stopit
 einschr=0
 select
  when (cmd='?' | cmd='') then SENDMENU selmenu
  when cmd='+' then NEWLINE
  when cmd=''  then NEWLINE
  when cmd='0' then do
   sts='MOVIE' ; stl='Filmtitel' ; einschr=1 ; end
  when cmd='1' then do
   sts='ACR' ; stl='Schauspieler' ; einschr=1 ; end
  when cmd='2' then do
   sts='ACS' ; stl='Schauspielerin' ; einschr=1 ; end
  when cmd='3' then do
   sts='COMP' ; stl='Komponist' ; einschr=1 ; end
  when cmd='4' then do
   sts='COST' ; stl='Kostuem-Designer' ; einschr=1 ; end
  when cmd='5' then do
   sts='DIR' ; stl='Regisseur' ; einschr=1 ; end
  when cmd='6' then do
   sts='ED' ; stl='Editor' ; einschr=1 ; end
  when cmd='7' then do
   sts='PRDE' ; stl='Produktions-Designer' ; einschr=1 ; end
  when cmd='8' then do
   sts='PROD' ; stl='Produzent' ; einschr=1 ; end
  when cmd='9' then do
   sts='WRITE' ; stl='Autor' ; einschr=1 ; end
  when cmd='U' then do
    address 'MOVIEMUI' 'UNDOSELECT KEY='||skey ; numentries=result
   end
  when cmd='N' then do
    NEWLINE
    numentries='alle'
    address 'MOVIEMUI' 'ENDSELECTION KEY='||skey
    address 'MOVIEMUI' 'UNSELECT KEY=0' ; skey=result
   end
  when cmd='D' then call getsel
  when cmd='W' then call getfromsel
  otherwise do
   NEWLINE
   TRANSMIT "\c2Dieser Befehl ist hier unbekannt, versuch's mal mit "||'"\c1?\c2" !'
   GETCHAR
  end
 end
 if einschr=1 then do
  NEWLINE
  TRANSMIT 'Einschraenkungspattern (nach AmigaOS-Konventionen !)'
  QUERY 'fuer '||stl||': ' ; mypat=result
  if mypat~='RESULT' & mypat~='' then do
   do while pos('*',mypat)>0
    sternpos=pos('*',mypat)
    mypat=left(mypat,sternpos-1)||'#?'||right(mypat,length(mypat)-sternpos)
   end
   TRANSMIT "MovieDataBase wird nach "||stl||"='"||mypat||"' durchsucht..."
   address 'MOVIEMUI' 'SELECT KEY='||skey||' "'||mypat||'" FROM '||sts 
   numentries=result
   if RC~=0 then do
    TRANSMIT '\c2Fehler beim Selektieren, mache Selektierung rueckgaengig...'
    GETCHAR
    address 'MOVIEMUI' 'UNDOSELECT KEY='||skey ; numentries=result
   end
  end
 end
end
address 'MOVIEMUI' 'ENDSELECTION KEY='||skey
cmd=''
return

getsel:
 NEWLINE
 if numentries=0 then do
  TRANSMIT '\c2Es sind keine Daten selektiert !'
  GETCHAR ; end
 else
  if numentries > 100 | numentries='alle' then do
   TRANSMIT '\c2Es sind mehr als 100 Datensaetze selektiert !'
   TRANSMIT 'Bitte weiter einschraenken !'
   GETCHAR
  end
  else do
   address 'MOVIEMUI' 'GETSELECTION KEY='||skey ; mytext=result
   if mytext='RESULT' | RC~=0 then do
    TRANSMIT "\c2Tja, nix gefunden, sorry !"
    GETCHAR ; end
   else
    TRANSMIT '\c7'
    call gibsaus
  end
return

getfromsel:
 NEWLINE
 if numentries=0 then do
  TRANSMIT '\c2Es sind keine Daten selektiert !'
  GETCHAR ; end
 else do
  QUERY '\c2Welchen '||stl||' (Nummer \c11\c2...\c1'||numentries||'\c2) zeigen ? ' ; frose=result
  if frose~='RESULT' & frose~='' & datatype(frose)='NUM' then
   if frose>0 & frose<numentries+1 then do
    TRANSMIT '\n1\c3Ein wenig Geduld bitte !'
    address 'MOVIEMUI' 'GETFROMSELECTION KEY='||skey||' NUMBER='||frose ; mytext=result
    if mytext='RESULT' | RC~=0 then do
     TRANSMIT "\c2Tja, nix gefunden, sorry !"
     GETCHAR ; end
    else
     TRANSMIT '\c7'
     call gibsaus
   end
 end
return

infor:
 NEWLINE ; NEWLINE
 TRANSMIT "\c6mdb.rexx fuer Excelsior!   V1.0ger (C)'94 by Michael A. Bode"
 TRANSMIT "\c6mdb.trans fuer TABBS       V1.0ger (C)'94 by Georg 'Gio' Magschok"
 address 'MOVIEMUI' 'INFO "title"' ; TRANSMIT '\c7'||result
 address 'MOVIEMUI' 'INFO "author"' ; TRANSMIT 'by '||result
 address 'MOVIEMUI' 'INFO "copyright"' ; TRANSMIT '(C) '||result
 address 'MOVIEMUI' 'INFO "description"' ; TRANSMIT result
 address 'MOVIEMUI' 'INFO "version"' ; TRANSMIT result
 NEWLINE
 address 'MOVIEMUI' 'GETSTATISTIC' ; mytext=result
 TRANSMIT '\c3'
 call gibsaus
return

gibsaus:
 fina=tempfile
 if open('fit',fina,'W') then do
  call writeln('fit',mytext)
  call close('fit')
  NEWLINE
  SENDFILE fina
  address command 'delete '||fina||' quiet'
  continue
 end
 else do
  TRANSMIT "\c1\k1FEHLER ! BITTE DEN SYSOP INFORMIEREN !\k0"
  GETCHAR
 end
return

