X
en la linea de JOB
del JCL. Se indica con el parámetro MSGCLASS=X
. Ejemplo://EJEMPLO JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=HERC01
NOTIFY=usuario
en la definición del JOB
. Ejemplo://EJEMPLO JOB CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1),NOTIFY=HERC01
EXEC
se añade la línea siguiente (se recomienda a continuación de la línea JOB
)://JOBPROC DD DSN=HERC01.PROCLIB,DISP=SHR,SYSPROC=YES
Donde HERC01.PROCLIB
, que se indica a modo de ejemplo, es el PDS que contiene los procedimientos realizados por el usuario. El parámetro SYSPROC
(en este caso puede omitirse, ya que por defecto vale YES
, y solo es necesario ponerlo cuando es NO
) indica que si no encuentra el PROCLIB en el PDS indicado continúe la búsqueda por los PDS del sistema, como hace normalmente.
Añadir la línea:
usuario ADMIN pass Y
a SYS1.SECURE.CNTL(USERS)
(Nota: Está en orden alfabético).
ADMIN
indica un usuario con acceso a todo menos RAKF, USER
un usuario ordinario y RAKFADM
un adminisrador de RAKF.
Actualizar las listas de RAKF ejecutando en la consola el comando:
S RAKFUSER
Lanzar el JCL, SYS2.JCLLIB(ADDUSER)
con los valores adecuados.
Al entrar en el sistema teclear (en lugar del password):
pass-actual/pass-nuevo
Al teclear no se visualiza ningún carácter
Ejemplo: Cambiar pass4u
por secreto
PASS4U/SECRETO
En TSO (prompt READY
) se escriben los comandos escritos en rojo:
READY PROFILE NOPREFIX READY ALLOC F(SYSUADS) DA('SYS1.UADS') READY ALLOC F(SYSLBC) DA('SYS1.BRODCAST') READY ACCOUNT ACCOUNT SYNC BROADCAST DATA SET INITIALIZED AND SYNCHRONIZED DEL (usuario) DELETED END READY FREE F(SYSLBC) READY FREE F(SYSUADS) READY
Editar SYS1.SECURE.CNTL(USERS)
y eliminar la(s) línea(s) correspondientes al usuario:
usuario ADMIN pass Y
Actualizar las listas de RAKF ejecutando en la consola el comando:
S RAKFUSER
Ahora se pueden borrar todos los dataset del usuario, si procede.
Añadir la palabra RECON
a continuación del nombre de usuario en la pantalla de conexión (Login)
Ejemplo: Conectar de nuevo al usuario HERC01
HERC01 RECON
Lanzar el script shutdown
, con la orden:
script scripts/shutdown
Se lanzan los trabajos RAKF.SAMPLIB(VSAMSRAC)
y RAKF.SAMPLIB(VTOCSRAC)
para limpiar los indicadores de RACF. Se Añade el parámetro TYPRUN=HOLD
a la tarjeta (línea) JOB
para que al hacer el SUB
el trabajo quede suspendido (HOLD).
Editar SYS1.PARMLIB(RAKFINIT)
y cambiar de la primera línea de YES
a NO
.
Salir de la sesión y desde la consola dar las ordenes (poner la barra / delante si se trabaja desde la consola integrada):
$A 'VSAMSRAC' $A 'VTOCSRAC'
En ocasiones VTOCSRAC
da algunos avisos relacionados con nombres largos de datasets que pueden ser ignorados tranquilamente.
Reiniciar el sistema (o hacer un Re-IPL). En este punto RAKF está desarmado.
Lanzar los trabajos RAKF.SAMPLIB(VSAMSRAC)
y RAKF.SAMPLIB(VTOCSRAC)
para reactivar los indicadores de RACF. Añadir el parámetro TYPRUN=HOLD
a la tarjeta (línea) JOB
para que al hacer el SUB
el trabajo quede suspendido (HOLD), y lo más importante es cambiar setracf
a ON
en las líneas 30 y 39 respectivamente.
Editar SYS1.PARMLIB(RAKFINIT)
y cambiar de la primera línea de NO
a YES
.
Salir de la sesión y desde la consola dar la orden (poner la barra / delante si se trabaja desde la consola integrada):
$A 'VSAMSRAC' $A 'VTOCSRAC'
En ocasiones VTOCSRAC
da algunos avisos relacionados con nombres largos de datasets que pueden ser ignorados tranquilamente.
Reiniciar el sistema (o hacer un Re-IPL). En este punto RAKF está rearmado.
Si no se hizo nunca, en SYS1.PARMLIB
, crear un miembro COMMND03
, copiando el COMMND00
y añadiendo el contenido señalado en rojo.
COM='S CMD1'
COM='S BSPPILOT'
COM='S JES2,,,PARM='FORMAT,NOREQ''
Este miembro se puede conservar para repetir el proceso en el futuro.
Editar el archivo de script ./scripts/SCR101A_default
para que el sistema se inicie con el COMMND03
:
#**********************************************************************
#*** ***
#*** Script: SCR101A_default ***
#*** ***
#*** Purpose: OS/VS2-MVS 3.8j IPL for unattended operations ***
#*** Issue empty reply to message IEA101A (default) ***
#*** ***
#*** Updated: 2014/12/22 ***
#*** ***
#**********************************************************************
#
# delay reply to message IEA101A
#
pause ${IPL_PAUSE:=4}
/R 00,CMD=03
(Re)Iniciar el sistema.
Una vez iniciado, detener el sistema desde la consola HERCULES con el comando:
script scripts/shutdown
Reponer el archivo ./scripts/SCR101A_default
a sus valores originales, es decir eliminando lo que está en rojo en el listado anterior (ojo, conservar la barra /
inicial).
En primer lugar es necesario disponer de la información necesaria:
Se utiliza el siguiente script:
#!/bin/bash if [ "$#" -ne 3 ] then echo "Usage is " echo -e "\n\t`basename $0` <model> <name> <port>\n" exit 1 fi echo $2 $1 \* >temp.plf rm -f $2.$3 dasdload -bz2 temp.plf $2.$3 2 rm temp.plf exit 0
Como ejemplo se creará y activará un disco 3390 llamado USER00
y conectado al puerto 199.
Primero se crea invocando el script con los parámetros siguientes:
./create-dasd.sh 3390 user00 199
NOTA: Para nombrar el archivo se ha seguido la nomenclatura que usa el Tk4- consistente en poner el nombre de la etiqueta de volumen, un punto y el puerto al que se asocia.
Instalación y activación:
Se copia el archivo creado al directorio ./dasd
.
Con el sistema detenido se edita el archivo ./conf/tk4-.cnf
y se añaden estas lineas hacia el final, entre los «Source DASD» y los «TK4- updates»:
# # User & Data DASD # INCLUDE conf/user_dasd.cnf
y se copia en ./conf/
el archivo user_dasd.cnf
:
# # User & Data DASD # 0199 3390 dasd/user00.199 #19A 3390 dasd/user0a.19a #19B 3390 dasd/user0b.19b #19C 3390 dasd/user0c.19c #19D 3390 dasd/user0d.19d #19E 3390 dasd/user0e.19e #19F 3390 dasd/user0f.19f #299 3390 dasd/data00.299 #29A 3390 dasd/data0a.29a #29B 3390 dasd/data0b.29b #29C 3390 dasd/data0c.29c #29D 3390 dasd/data0d.29d #29E 3390 dasd/data0e.29e #29F 3390 dasd/data0f.29f
Los discos USER0A
-USER0F
están comentados para uso futuro.
Se inicia el sistema y al DataSet SYS1.PARMLIB(VATLST00)
se le añade esta línea al final:
USER00,1,1,3390 ,N User Space 00
En el próximo reinicio el Volumen estará disponible.
Editar SYS1.CMDPROC(USRLOGON)
y en la linea de ALLOC FILE(SYSPROC)
se añade el dataset deseado.
En el siguiente logon estará disponible.
Editar SYS1.PROCLIB(JES2)
y en PROC00
se añade(n) el/los DD
deseados.
Al próximo reinicio el/los PROCLIBs estarán incluidos.
El script original para crear el entorno de un usuario es SYS2.PROCLIB(ADDUSER)
, este procedimiento se invoca por SYS2.JCLLIB(ADDUSER)
:
//ADDUSER PROC HLQ=MISSING,UTYPE= USER(P) or SYSP(P) //CLEANUP EXEC PGM=IEFBR14 //ASM DD DISP=(MOD,DELETE),DSN=&HLQ..TEST.ASM, // UNIT=TSO,SPACE=(TRK,(0)) //CMDPROC DD DISP=(MOD,DELETE),DSN=&HLQ..CMDPROC, // UNIT=TSO,SPACE=(TRK,(0)) //CNTL DD DISP=(MOD,DELETE),DSN=&HLQ..TEST.CNTL, // UNIT=TSO,SPACE=(TRK,(0)) //LOADLIB DD DISP=(MOD,DELETE),DSN=&HLQ..TEST.LOADLIB, // UNIT=TSO,SPACE=(TRK,(0)) //BLDCRD1 EXEC PGM=IEUASM, // PARM='NOLIST,TERM,DECK,NOLOAD,NOOBJ,SYSPARM(&HLQ)' //SYSUT1 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSTERM DD SYSOUT=* //SYSPUNCH DD DISP=(,PASS), // UNIT=WORK, // SPACE=(TRK,(1,1)), // DCB=SYS1.OBJPDS01 //SYSIN DD DISP=SHR,DSN=SYS2.SYSINLIB(DEFALIAS) //BLDCRD2 EXEC PGM=IEUASM, // PARM='NOLIST,TERM,DECK,NOLOAD,NOOBJ,SYSPARM(&HLQ)' //SYSUT1 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=VIO,SPACE=(CYL,(1,1)) //SYSTERM DD SYSOUT=* //SYSPUNCH DD DISP=(,PASS),UNIT=WORK,SPACE=(TRK,(1,1)), // DCB=SYS1.OBJPDS01 //SYSIN DD DISP=SHR,DSN=SYS2.SYSINLIB(ADD&UTYPE) //ALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD DISP=(OLD,DELETE),DSN=*.BLDCRD1.SYSPUNCH //ADDUSER EXEC PGM=IKJEFT01 //SYSUADS DD DISP=SHR,DSN=SYS1.UADS //SYSLBC DD DISP=SHR,DSN=SYS1.BRODCAST //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DISP=(OLD,DELETE),DSN=*.BLDCRD2.SYSPUNCH //ALLOC EXEC PGM=IEFBR14 //CMDPROC DD DISP=(,CATLG),DSN=&HLQ..CMDPROC, // UNIT=TSO, // SPACE=(CYL,(1,1,20)), // DCB=SYS1.MACLIB //ASM DD DISP=(,CATLG),DSN=&HLQ..TEST.ASM, // UNIT=TSO, // SPACE=(CYL,(1,1,20)), // DCB=SYS1.MACLIB //CNTL DD DISP=(,CATLG),DSN=&HLQ..TEST.CNTL, // UNIT=TSO, // SPACE=(CYL,(1,1,20)), // DCB=SYS1.MACLIB //LOADLIB DD DISP=(,CATLG),DSN=&HLQ..TEST.LOADLIB, // UNIT=TSO, // SPACE=(CYL,(1,1,20)), // DCB=SYS1.LINKLIB
Este código crea los dataset siguientes:
usuario.CMDPROC
usuario.TEST.ASM
usuario.TEST.CNTL
usuario.TEST.LOADLIB
El cambio más importante se recomienda es sustituir TEST.ASM
por TEST.SRC
para guardar todos los archivos de código fuente.
TK4- viene con 7 terminales de usuario locales activos a pantalla completa (aparte de las consolas), cuyas direcciones son '00C0' a '00C6', dichos terminales están accesibles (por defecto) a través del puerto 3270.
Para añadir más terminales, hay que indicarlo en tres puntos, MVS, VTAM y Hercules.
Inidicarselo a MVS es complicado, ya que implica realizar un IOGEN. Sin embargo, por defecto ya vienen definidos terminales (aparte de las consolas) en los puertos '00C0' a '00C6', '01C0' a '01C6' y '02C0' a '02C6'. También vienen en '03C0' a '03C6' aunque tienen otros usos (TCAM) y '00B0' a '00B6' que no he explorado. De todas formas con los primeros se pueden incluir hasta 21 terminales. En los puertos '0xC7' se definen impresoras. En caso de no desear una ingente cantidad de terminales, no es necesario hacer un IOGEN.
En cuanto a VTAM, incorpora los terminales de '00C0' a '00C6' y la impresora en '00C7', en el fichero SYS1.VTAMLST(L3274)
. Basta editarlo y añadir al final más líneas como las que ya incorpora, actualizando las direcciones, por ejemplo:
CUU1C0 LOCAL TERM=3277,CUADDR=1C0,ISTATUS=ACTIVE, + LOGTAB=ETHLOGON,LOGAPPL=NETSOL, + FEATUR2=(MODEL2,PFK)
Una vez editado también hay que borrar el archivo SYS1.VTAMOBJ(L3274)
para que se vuelva a generar. En el próximo reinicio estarán disponibles los nuevos terminales.
Por último, informar a hercules de la existencia de los terminales es muy sencillo, basta editar la configuración conf/tk4-.cnf
y añadir en la sección local 3270 devices (VTAM)
los terminales, como por ejemplo:
01C0 3270
Para terminar basta reiniciar el sistema y ya se dispondrá de los nuevos terminales.
Para parar momentaneamente MF1 se ejecuta en la consola (no olvidar poner /
en caso de utilizar la consola integrada):
P MF1
Para que no arranque automaticamente al inicio del sistema, la solución consiste en editar SYS1.PARMLIB(STARTSTD)
y comentar (poner un *
al principio) la línea:
* CMD S MF1.MF1
Si estando parado es necesario iniciarlo, entonces en la consola (recordar /
si se usa la consola integrada) se escribe:
S MF1