home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------------------------
- :Program. ShowGroups
- :Contents. shows all groups in UMS' messagebase
- :Author. Kai Bolay [kai]
- :Address. Snail Mail: EMail:
- :Address. Hoffmannstraße 168 UUCP: kai@amokle.stgt.sub.org
- :Address. D-71229 Leonberg FIDO: 2:2407/106.3
- :History. v1.0 [kai] 23-Sep-93
- :History. v1.2 [kai] 29-Sep-93 added MakeFlags()
- :Copyright. Public Domain
- :Language. ARexx
- :Translator. RexxMast
- :Bugs. no argument parsing
- ------------------------------------------------------------------------ */
-
- /*** Startup ***/
-
- options results
-
- RC = 0
-
- signal on BREAK_C
- signal on BREAK_D
- signal on BREAK_E
- signal on BREAK_F
- signal on ERROR
- signal on HALT
- signal on IOERR
- signal on SYNTAX
-
- /*** Constant definition (who knows how to include UMSConsts.rexx ???) ***/
-
- true = 1
- UMSCODE_Group = 9
- UMSUSTAT_ReadAccess = 10
-
- /*** Open ums.library ***/
-
- libname = "ums.library"
-
- if ~show("L", libname) then do
- if ~addlib(libname, 0, -210, 8) then do
- say libname "not found!"
- exit
- end
- end
-
- /*** Login ***/
-
- parse arg name password .
-
- account = UMSLogin(name, password)
- if account = 0 then do
- say "unable to login."
- exit
- end
-
- /*** Do the magic ***/
-
- /* clear local flag 0 on all messages */
- res = UMSSelectFlags(account, "LOCAL", MakeFlags(), MakeFlags(0),,, "LOCAL", MakeFlags(), MakeFlags())
- say "you have" res "messages in your message base"
-
- /* set local flag 0 on all readable messages */
- res = UMSSelectFlags(account, "LOCAL", MakeFlags(0), MakeFlags(),,, "USER", MakeFlags(UMSUSTAT_ReadAccess), MakeFlags())
- say "you can't read" res "messages"
-
- last = 0
- do forever
- /* find next message with flag 0 set */
- last = UMSSearchFlags(account, "LOCAL", MakeFlags(0), MakeFlags(), last)
- if last = 0 then leave
- drop msg. /* _IMPORTANT_ */
- if ~ReadUMSMsgField(account, last, msg., UMSCODE_Group) then do
- call CheckErr
- end
- if symbol("msg." || UMSCode_Group) ~= "VAR" then do
- /* clear local flag 0 on all private messages */
- res = UMSSelectField(account, "LOCAL", MakeFlags(0), MakeFlags(),,, UMSCODE_Group, "", true)
- say res "private messages"
- end; else do
- /* clear local flag 0 on all messages belonging to this group */
- res = UMSSelectField(account, "LOCAL", MakeFlags(0), MakeFlags(),,, UMSCODE_Group, msg.UMSCODE_Group, true)
- say res "messages in" msg.UMSCode_Group
- end
- end
-
- /*** Final cleanup ***/
-
- BREAK_C:
- BREAK_D:
- BREAK_E:
- BREAK_F:
- ERROR:
- HALT:
- IOERR:
- SYNTAX:
-
- IF RC ~= 0 THEN DO
- SAY "Error: " rc errortext(rc) "Line" sigl
- END
-
- /*** Logout ***/
-
- if account ~= 0 then do
- call UMSLogout(account)
- account = 0
- end
-
- exit
-
- /*** Support ***/
-
- CheckErr: procedure expose account
- err = UMSErrNum(account)
- if err ~= 0 then do
- say "UMS Error #" || err || ": " || UMSErrTxt(account)
- end
- return
-
- MakeFlags: procedure
- flags = '00000000'x
- do i = 1 to arg()
- flags = BITSET(flags, arg(i))
- end
- return flags
-