Solutions for Keeping Passwords Fresh
Locating Help for 4GL 3000 Projects

Sendmail, Group Purges, and ACD Removal

Is there a proper or "right" way to shut down sendmail?

Donna Hofmeister replies

• Use the Posix kill signal from SERVER.SENDMAIL or any user with SM capability. (The following can be easily turned into a job!)

kill $(head -n 1 /etc/mail/sendmail.pid)

• Only use :ABORTJOB as a last resort! (This is true for all of the Posix things that got ported to MPE)

If you don't need to run a mail server (e.g. sendmail) on your 3000, you shouldn't. In most cases, using a mail client will be "just the ticket." Point the client at your in-house (SMTP) mail server and enjoy.

How can I easily purge all the files in a group without destroying the group structure?

If GRPNAME is the name of the group then either:

1. chgroup GRPNAME and

purgegroup GRPNAME 

Or, purge @.GRPNAME 

[Ed. note: Vladimir Volokh notes this last command does not purge databases from a group, although it purges everything else. You must be an SM user to purge everything in one account from another account. Of course, MPEX's %purge will purge everything, and will report the list of what is to be purged. %purge(ISPRIV) for a selection of databases only, for example.]

How can I convert an SL to an XL?

Jeff Kell and Gavin Scott reply:

You can OCTCOMP an SL, which will make the code in it run in mostly-Native Mode (though using several times the memory) and with exactly the same limitations as the original CM code. OCTCOMP just adds a pre-translated version of the CM code to the end of the file that will be invoked when you run the program or SL on an MPE/iX system.

We have problems accessing the files of one group because someone has added ACD's on all the files within that group. Is there a way to remove them all easily?

Mark Ranft replies

Using MPEX, you can issue the command

ALTFILE @.GROUP.ACCOUNT;DELACD

Keven Miller adds

And if you don't have MPEX, you can use a command file like the one below.

PARM FILES=@, PCMD="ECHO File !"
SETVAR XSI_CMD "!PCMD"
IF FINFO ( "CMDFLST,TEMP", "EXISTS" ) THEN
PURGE CMDFLST,TEMP
ENDIF
FILE CMDFLST;MSG;TEMP;NOCCTL;REC=-40,,F,ASCII;DISC=100000
LISTF !FILES,6;*CMDFLST
FILE CMDFLST,OLDTEMP
SETVAR XSI_CNT FINFO ( "CMDFLST,TEMP", "EOF" )
SETVAR XSI_R 0
WHILE !XSI_R < !XSI_CNT DO
 INPUT XSI_FILE < CMDFLST
 SETVAR XSI_R XSI_R + 1
 SETVAR XSI_FILE RTRIM ( XSI_FILE )

 SETVAR XSI_DO REPL (XSI_CMD, "!", XSI_FILE)
 SETJCW CIERROR=0
 CONTINUE
 !XSI_DO
 IF CIERROR = 0 THEN
    ECHO !XSI_DO
 ENDIF
ENDWHILE
ECHO !XSI_CNT FILES
DELETEVAR XSI_@
PURGE CMDFLST,TEMP

This command file takes 2 parameters. 1. a  fileset (wildcards allowed) 2. an MPE command with a ! exclamation as place holder for the filename It does a LISTF ,6 of your fileset into a MSG file. Then it reads through the MSG file and processes each file with your command.

Comments