/*
 * Script für WRITE V3.263 © 1994 Tim Teulings
 * Dieses Script zeigt den Umgang mit einige Befehlen, die die internen
 * Listen von WRITE unterstützen.
 */

IF ~show('P',"WRITE")
THEN DO
 say 'Dieses Script läuft nur, wenn WRITE bereits gestartet wurde !'
 exit 10
END

ADDRESS "WRITE"

OPTIONS RESULTS

'VERSIONCHECK 3848 "ListDemo.wrx"'
IF RC~=0 THEN DO
  exit 10
END

'MESSAGEOK "Dieses REXX-Script demonstriert\nden Umgang mit den Befehlen\nCLEARLIST, ADDLIST, SHOWLIST,\nLOADBUFFER, SAVEBUFFER,\nLISTTOBUFFER, BUFFERTOLIST\nDOLIST und GETFILES!"'

'MESSAGEOK "Wir generieren eine Liste\nmit diversen Einträgen..."'

CLEARLIST 0

'ADDLIST "Hallo Leute !" 0 '
'ADDLIST "Dies ist ein Test..." 0'
'ADDLIST "Eintrag Nummer 3" 0'
'ADDLIST "Mir fällt nichts mehr ein #@/&% !" 0'
'ADDLIST "So here I am one more..." 0'
'ADDLIST "Buh !" 0'
'ADDLIST "Ende der Liste !" 0'

'MESSAGEOK "Ok.\n\nNun kann man sich mittels des\nSHOWLIST-Befehls diese Liste\nanzeigen lassen..."'

'SHOWLIST 0 0'

'MESSAGEOK "...oder sogar ein Element\nder Liste auswählen !"'

'SHOWLIST 0 0 {@SELECT}'

IF RC~=0 THEN DO
  'MESSAGEOK "Sie haben nichts\nausgewählt."'
END
ELSE DO
ReturnString = RESULT
  MESSAGEOK "(" || "Sie haben den Eintrag\n" || '"' || ReturnString || '"'  || "\nausgewählt !" || ")"
END

'MESSAGEOK "Num machen wird aus der Liste\neinen Buffer !"'

LISTTOBUFFER 0 0

'MESSAGEOK (Diesen speichern wir nun als\n"ram:test"\nab.)'

'SAVEBUFFER "ram:test" 0'

'MESSAGEOK "Dieser wird nun wieder geladen..."'

'LOADBUFFER "ram:test" 0'

'MESSAGEOK "In eine Liste konvertiert...\n\n(Dabei wird die alte Liste nicht gelöscht,\n sondern die neue an die alte angefügt !)"'

'BUFFERTOLIST 0 0'

'MESSAGEOK "und wieder angezeigt !"'

'SHOWLIST 0 0'

'MESSAGEOK "Es geht aber auch anders.\n\nWir laden die Liste aus der Ram Disk\nin den Buffer..."'

'LOADBUFFER "ram:test" 0'

'MESSAGEOK "Löschen die Liste vorher..."'

'CLEARLIST 0'

'MESSAGEOK "Und konvertieren wieder..."'

'BUFFERTOLIST 0 0'
'SHOWLIST 0 0'

'MESSAGEOK "Und weiter geht`s...\n\nWir generieren zwei Listen..."'

CLEARLIST 0
'ADDLIST "Eintrag 1" 0 '
'ADDLIST "Eintrag 2" 0 '
'ADDLIST "Doppelter Eintrag" 0 '
'ADDLIST "Eintrag 4" 0 '
'ADDLIST "Eintrag 5" 0 '
'ADDLIST "Eintrag 6" 0 '

'MESSAGEOK "Die erste Liste..."'

'SHOWLIST 0 0'

CLEARLIST 1
'ADDLIST "Eintrag A" 1 '
'ADDLIST "Eintrag B" 1 '
'ADDLIST "Doppelter Eintrag" 1 '
'ADDLIST "Eintrag D" 1 '
'ADDLIST "Eintrag E" 1 '
'ADDLIST "Eintrag F" 1 '

'MESSAGEOK "...und die zweite..."'

'SHOWLIST 1 0'

'MESSAGEOK "Aus der zweiten Liste machen wir einen Buffer,\nund fügen diesen an die erste Liste an.\nDabei sollen doppelte Einträge nicht noch\neinmal angefügt werden."'

'LISTTOBUFFER 1 0'
'BUFFERTOLIST 0 0 {@NODUP}'
'SHOWLIST 0 0'

'MESSAGEOK (Schließlich rufen wir die\nFunktion DOLIST auf.\nSie geht selbstständig durch die Liste und\nruft für jedes Listenelement\neine frei wählbare FunktionListe auf\nIn diesem Fall"MesssageOk".)'

'DOLIST 0 MessageOk _RS;'

'MESSAGEOK "OK."'

'MESSAGEOK "Nun eine weitere Funktion,\ndie Listen unterstützt :\n\nGETFILES.\n\nWählen sie mittels des\nFilerequesters einige Files aus."'

CLEARLIST 0
GETFILES "" "" 0
IF RC~=0 THEN DO
  'MESSAGEOK "Sie haben keine Files ausgewählt !"'
END
ELSE DO
  'MESSAGEOK "Sie haben folgende Files ausgewählt :"'
  SHOWLIST 0 0
  'MESSAGEOK "Nun könnte man mit 'DOLIST'\nalle ausgewählten Files z.B. laden\noder auch in ihnen nach\neiner Zeichenkette suchen etc..."'
END


'MESSAGEOK "Ende des Demos !"'
