The Question is:
We are upgrading a VAX 3000 to Alpha 433au, VAX VMS 5.4-2 to OpenVMS 7.1.
The existing applications were run from VT terminals, programmed in FORTRAN
using SMG extensively.
A captive account was set up for a group of users that ran a single
application. Exiting the
application logged out the user.
What is the best way to re-create this captive environment on the
workstation? Can this be done
in the CDE environment? We do not want to train this group of users on the
new desktop, nor give them
any ability to execute any functions other than the single application
program - on a DECterm I
The Answer is :
You can continue to use the existing DCL terminals via LAT terminal
services, local serial-line controller, or similar. This will
provide you with an approach most similar to the existing OpenVMS
If you choose to modify DECwindows (specifically DECwindows CDE) to
provide for a relatively captive environment, read on...
Make a private copy of xsession.com (which is analogous to the DECwindows
Motif decw$startsm.com procedure) and point to it by changing the contents
of xconfig.dat to run your copy instead. Look at the file:
for a template of what to put in the file. This template shows how to
start the mwm window manager and restart the login box when you are done.
There are also several choices of session types with CDE. You might want
to make the FailSafe session also point to the command file you end up
with. (This is another resource in xconfig.dat.)
There are other options: there is a DCL symbol called cde$sessionmain,
(which works the same as decw$sessionmain) that allows you to point to
something other than dtsession. This symbol should contain a valid DCL
command. Add it to your decw$private_apps_setup.com file.
Last, you could put a command file in the directory:
Anything in this directory will be executed before the session manager
is started. The procedures are run in alphabetical order. If you
placed your procedure in this directory, it would execute your application
and restart the login box -- before dtsession ever gets started.
An example of one approach:
1) Create a file called CDE$PRIVATE_SESSIONCOM.COM in
CDE$USER_COMMON:[BIN]. It must have (W:RE) privileges.
NOTE: If the directory CDE$USER_COMMON:[BIN] does
not exist, you will need to create it.
$ username = F$USER() ! Get the username
$ if f$locate("BOOKREAD", username) .NE. F$LENGTH(username) then GOTO dedicated
$!************ If not user BOOKREAD CALL THE SYSTEM XSESSION.COM FILE *****
$!************ IF USERNAME EQS BOOKREAD THEN RUN SPECIFIC APPLICAITON *****
$ run sys$system:decw$wsinit
$ display = F$TRNLNM("DECW$DISPLAY")
$ RUN/DETACHED/OUTPUT='display' SYS$SYSTEM:DECW$MWM.EXE
$ RUN SYS$SYSTEM:DECW$BOOKREADER
$ endsession := $decw$endsession.exe
$ endsession -noprompt
In the command procedure, you must run the DECW$MWM.EXE window manager
as DTWM wants to bring up the New Desktop Front Panel. You probably
do not want this.
If you do wish to maintain the front panel, consider something akin
to editing the various resources in the dtwm applications default
file, in order to "grey out" the various pushbuttons:
(The savvy user might be able to override these settings, and set
.sensitive to true in order to access these pushbuttons.)
You could also use something such as the following to activate this
without the front panel:
$ application := cde$system_common:[bin]dtwm.exe -
-xrm "*useFrontPanel: False"
$ RUN/DETACHED/OUTPUT='display' 'application'
If the User account with the username you have specified in your
command procedure does not exist, you will need to create it.
2) Copy the file CDE$SYSTEM_COMMON:[CONFIG]XCONFIG.DAT to:
If the subdirectory [CONFIG] does not exist under CDE$USER_COMMON,
you must create it.
3) Edit the CDE$USER_COMMON:[CONFIG]XCONFIG.DAT file and change the
resource Dtlogin*session to point to the file:
# = comment out the line
4) Save the file, recheck your file protections and restart Decwindows
with the following command:
5) Log in and test the environment.