/***************************************
 *                                     *
 *          Userlist.trans             *
 *                                     *
 ***************************************/

/* Activierung einiger Interrupts */

OPTIONS results
SIGNAL on IOERR
SIGNAL on SYNTAX

/**************************
 * zu aendernde Variablen *
 **************************/

menu='BBS:Text2/ULSTMenu'
menuname='ULSTMenu'
tempfile='BBS:Bulletins/Userlist'
userpath='BBS:Users'

/******************************
 * Infos von TransAmiga holen *
 ******************************/

USERINFO X ; ansi=RESULT

/* Kopf der Userliste erzeugen */

IF ansi='ON' THEN
  ADDRESS COMMAND 'ECHO >ram:temp "[35mNr. [36mUsername             [33mWohnort              [31mComupter     [37mZuletzt Online[37m"'
ELSE
  ADDRESS COMMAND 'ECHO >ram:temp "Nr. Username              Wohnort               Comupter     Zuletzt Online"'

/* Aendere die obigen Zeilen, wenn du nicht das mitgelieferte Config-
   Beispiel fuer Userlist verwendest... */

IF ansi='OFF' THEN
 DO
   ADDRESS COMMAND 'JOIN ram:temp 'tempfile' TO ram:Userlist'
   ADDRESS COMMAND 'JOIN ram:temp 'tempfile'2 TO ram:Userlist2'
   ADDRESS COMMAND 'DELETE >NIL: ram:temp#?'
 END
ELSE
 DO
   ADDRESS COMMAND 'JOIN ram:temp 'tempfile'.ANSI TO ram:Userlist.ANSI'
   ADDRESS COMMAND 'JOIN ram:temp 'tempfile'2.ANSI TO ram:Userlist2.ANSI'
   ADDRESS COMMAND 'DELETE >NIL: ram:temp#?'
 END

/*****************
 * Menu ausgeben *
 *****************/

AUSWAHL:
CLS
IF EXISTS(menu) THEN
   SENDMENU menuname
ELSE DO
   Print ''
   Print '   1 - Alphabetische Userliste'
   Print '   2 - Usernummern sortierte Userliste'
   Print '   + - Zum Hauptmenu'
   Print '   ! - Logoff'
   Print ''
END
Print 'Userlist v1.02 programming and copyright by Sami Radwan'
SYSTEMINFO M
time=RESULT
IF ansi='ON' THEN
 Send '[37mBitte waehlen [36m[1 2 + ! ?] - [33mRestzeit:'time'[37m:'
ELSE
 Send 'Bitte waehlen [1 2 + ! ?] - 'time':'
IF ~(CARRIER) THEN CALL CARRI

/***************
 * Subroutines *
 ***************/

/* Hauptschleife */

Abfrage:
 Getchar
 ein=RESULT
 IF ein='###PANIC' THEN EXIT 20
 IF ein='1' | ein='2' | ein='+' | ein='!' | ein='?' THEN NOP
 ELSE SIGNAL Abfrage
 IF ein='1' THEN CALL alpha
 IF ein='2' THEN CALL nummeriert
 IF ein='+' THEN CALL quit
 IF ein='!' THEN CALL logoff
 IF ein='?' THEN CALL auswahl
 Continue
SIGNAL auswahl

/* Alphabetische Ausgabe */

ALPHA:
  CLS
  SENDFILE 'RAM:Userlist'
RETURN

/* Usernummer sortierte Ausgabe */

NUMMERIERT:
  CLS
  SENDFILE 'RAM:Userlist2'
RETURN

/* In/Output error !!! */

IOERR:

  Print 'I/O error occured at line 'SIGL
  Print 'returnung to BBS!'
  LOGENTRY 'I/O error in line '||SIGL
CALL quit

/* Syntaxerror im script */

SYNTAX:

  Print 'ARGL! A syntax error has been discovered! line: 'SIGL
  Print 'Please inform SysOp! Returning to BBS...'
  LOGENTRY 'Syntax Error 'ERR' in line 'SIGL' of Userlist.trans'
  Continue
CALL quit

/* TransAmiga CARRIER-check */

CARRI:

  Print 'Carrier lost !!!'
  Print 'Returning to BBS!'
  LOGENTRY 'Carrier is lost!!'
CALL quit

/* Returning to BBS */

Quit:

  CLS
  ADDRESS COMMAND 'DELETE >NIL: ram:Userlist#?'
EXIT 0

/* Logoff */
/* Du solltest den Text auf jeden Fall aendern... */

Logoff:

  CLS
  ADDRESS COMMAND 'delete ram:userlist#?'
  PRINT ''
  PRINT 'Du willst Amiga on Phone wirklich verlassen?...'
  PRINT 'Kein Problem, bis demnaechst,'
  PRINT '                           Sysop'
  PRINT ''
  HANGUP
EXIT 0
