You are on page 1of 98

FACULTAD DE INGENIERIA DE SISTEMAS

Separata

TALLER DE APLICACIONES
ISERIES/400

2010
Prof. Ing. Alberto Moreno

AS/400

Pgina 1

INDICE

1.- Entorno del as/400


2.- Sistema operativo OS/400
3.- Organizacin libreras, objetos y miembros
4.- Archivos fsicos y lgicos
5.- Programacin en Lenguaje de control
5.- Archivos de Impresora
6.

SQL EMBEBIDO

7.- Programacin en RPGLE

AS/400

Pgina 2

AS/400
Conceptos Generales.
Es un servidor diseado para las exigencias de la Web y adems de extender y
modernizar los aplicativos de pantalla verde.
El modelo 270 del AS/400, es diseado para ofrecer a las pequeas y
medianas empresas diversas aplicaciones de Lotus Domino, como correo
electrnico, servidor Web y administracin de relaciones con los clientes.
IBM AS/400 es la computadora de negocios comercial para mltiples usuarios
ms popular del mundo, de la que se han vendido 700.000 sistemas en ms de
150 pases. Es un poderoso y flexible servidor de transacciones capaz de
administrar y conectar a travs de la Web las principales aplicaciones de una
empresa con sus proveedores, distribuidores y clientes. El AS/400 escala de un
solo procesador a uno de 24 vas, y est en su sexta generacin de la
tecnologa RISC de 64 bits.

Es por eso que nuestro instituto cuenta con un servidor modelo 270, para que
los alumnos puedan trabajar con el servidor directamente, realizando
programas, pantallas, reportes, conexiones con otros lenguajes de
programacin como Visual Basic, Visual Age for RPG, etc.

Caractersticas del Servidor As/400 modelo 270

Software
Sistema Operativo OS/400
Versin V5R1M0 o V5R2M0
Memoria (Range)
256MB a 16GB
Disco (Range)
8.5GB a 840GB
Desempeo del procesador
150 a 2350 CPW

AS/400

Pgina 3

Entorno del As/400

Al encender el sistema AS/400, se despliega una pantalla de inicio de sesin,


en donde se deber teclear el nombre del usuario y una contrasea propia del
usuario, estos datos sern proporcionados por el responsable de sistema a
cada persona que vaya a tener acceso al sistema.
Una breve descripcin de esta pantalla:
.

En la parte inferior de la pantalla aparecen las teclas de funcin, estas


teclas pueden variar de acuerdo al men o proceso con el cual se esta
trabajando, por lo pronto solo se explicaran las ms comunes.
o F1=Ayuda.- Esta tecla no se encuentra visible en esta pantalla
pero puede ser pulsada y se utiliza para brindar informacin del
contenido y uso de la pantalla con la que se est trabajando,
algn punto de opcin o campo a teclear.
o F3= Salir.- Esta opcin es utilizada para salir del men actual y
regresar al men de inicio o punto de partida, esta tecla de
funcin siempre realizara el mismo proceso.
o F4=Solicitud.- Esta tecla es utilizada para complementar la
informacin cuando se desea o se est trabajando con mandatos,
es decir se teclea el mandato principal y al pulsar la tecla de F4,
desplegar una pantalla con los parmetros disponibles para su
uso. Cuando se visualizan los parmetros de algn mandato, es
posible que tambin aparezca la tecla de funcin F4, pero en
estos casos se utiliza para consultar las diferentes opciones de
parmetros a teclear.
o F9=Recuperar.- Pulse esta tecla de funcin si desea recuperar
los diferentes mandatos tecleados en la lnea de mandatos, estos
se irn presentando uno a uno en orden regresivo.
o F12=Regresar.- Es utilizada para regresar a la pantalla previa de
la que se gener el acceso a la pantalla actual.
o F23=Establecer men inicial.- Esta tecla sirve para establecer el
men inicial que utilizara cada usuario, y tiene funcionalidad an y
cuando no aparezca al pie de la pantalla (existen excepciones).

Ambiente del As400.


El AS400 se puede decir que se divide en 4 partes, la siguiente figura muestra
la forma en que se puede dividir el AS400.

AS/400

Pgina 4

PERFIL DE USUARIO

USUARIO

LIBRERIA

BIBLIOTECA

QDDSSRC

QRPGLESRC

QRPGSRC

QCLPSRC

DSPF
PRTF
PF
LF

RPGLE

RPG

CLP

ARCHIVOS
FISICOS FUENTES
U OBJETOS
MIEMBROS
FUENTES

Donde:

Perfil de Usuario.- Es el usuario por el cual se ingresa al As400


Librera.- Es la forma en que el as/400 trabaja y se administra.
La librera es un rea donde se almacenan archivos, programas, etc. que corresponden
a dicha librera.
Se puede manejar una librera por sistema, por rea, dpto., etc. (esto es definido por el
rea de sistemas).
Archivos Fuentes u Objetos.- se generan en base a las compilaciones, ya sea de
archivos o programas (fuentes).
El objeto de un archivo se puede visualizar, para ver la informacin que la compone y
el objeto de un programa no se puede ver (en este caso se visualiza el fuente).

Miembros Fuentes.- Es el cdigo que se desarrolla para la generacin


de un archivo /programa, este se compila para generar el objeto.
Si un fuente no es compilado, no se puede guardar informacin en
archivos o no se puede correr o ejecutar un programa.
o Tipos De Objetos Y Fuentes:
Los tipos de objetos ms comunes pueden ser:
*FILE .- puede tener los siguientes atributos:
ser un archivo fsico (PF), lgico (LF), archivo de pantalla (DSPF),
printer file (PRTF)
*PGM .puede tener los siguientes atributos: CLP, RPG,
RPGLE
Los tipos de fuentes mas comunes son:
o PF.- Archivos Fsicos (Phisical File)
o LF.- Archivos Lgicos (Logical File)
o DSPF.Archivos de Pantallas (Display File)
o PRTF.Archivos de Reportes (Printer File)
o RPGLE .-Programas RPG ILE
o
CLP.- Programas de Control (Control Lenguaje Program)

Sistema Operativo OS/400


El Sistema Operativo (Os/400) es el principal programa de control en el sistema
operativo para el sistema iSeries (Antes As/400), la versin del Os/400 es la
V5R1M0.
Para poder visualizar la versin del Sistema Operativo Os/400 se va al men.
 GO LICPGM
AS/400

Pgina 5

Tal como se muestra en la siguiente pantalla.

Luego pulsamos [Enter], y el sistema nos contestara con un nuevo men, tal
como la siguiente figura.
Si queremos ver la versin del As/400, solo pulsamos la tecla de funcin [F11],
y el sistema nos contestara con la siguiente pantalla

Sistema Operativo OS/400

.
El Os/400 viene con mens y comandos de Lenguaje de Control que Ud.
Puede usar para trabajar en el sistema iSeries.

AS/400

Pgina 6

El Os/400 permite que se ejecuten conjuntamente Trabajos Interactivos y


Trabajos Batch, y le da al operador la interfaces para controlar esos trabajos.
El Sistema Operativo Os/400 soporta tanto Operaciones Interactivas como de
proceso por lotes.

El Sistema Operativo Os/400 incluye:

Gestin de Objetos.- Localiza los objetos tales como archivos y


programas cuando se les solicita.

Comandos.- WRKOBJ, DSPOBJD, WRKOBJPDM, etc.

Gestin de Trabajos.- Es responsable del mantenimiento del flujo de


trabajos a travs de todo el sistema.

Comandos.- WRKACTJOB, DSPJOB, SMBJOB, etc.

Gestin de Base de Datos.- Maneja los datos almacenados en archivos de


base de datos; es decir, donde estn almacenados, como recuperarlos y las
caractersticas de los datos.

Comandos.- CRTPF, DSPPFM, UPDDTA, etc.

Manejador de Mensajes.- Permite manejar el control de los mensajes entre


los usuarios del sistema, Sistema Operativo, Programas, etc.

Comandos.- SNDMSG, SNDBRKMSG, DSPMSG, etc.

Lenguaje de Control.- Encargado de verificar le ejecucin y manejo de


todos los comandos del sistema.
Seguridad.- Permite controlar y limita el acceso de los usuarios al sistema y
objetos almacenados en el sistema (por ejemplo a programas y archivos de
base de datos).

Comandos.- DSPUSRPRF, GRTOBJAUT, EDTOBJAUT, etc.

Comandos
El Sistema Operativo ofrece una diversidad de comandos, para realizar el buen
manejo del sistema operativo OS/400, entre los cuales vamos a mencionar
algunos mandatos mas usados, para luego formar los comandos.
MANDATO
DESCRIPCION
WRK
Trabajar
CHG
Cambiar
DSP
Visualizar
SND
Enviar
CRT
Crear
STS
Estado
SYS
Sistema
LIC
Licencia
PGM
Programa
PRF
Perfil
USR
Usuario
SRC
Fuente
P
Fsico
MSG
Mensajes
OBJ
Objetos
MBR
Miembros
SBM
Someter
JOB
Trabajo
AS/400

Pgina 7

LIB
Librera
EDT
Editar
AUT
Autorizacin
L
Lista
E
Entrada
DSK
Disco
VAL
Valores
GRT
Otorgar
Q
Cola
PWD
Pass Word
ADD
Adicionar
CUR
Curso
ACT
Activos
SAV
Salvar
CLR
Clarear
RST
Restaurar
F
Archivo
SPL
Spool
PDM
Trabajar con el PDM
NOTA.- Para poder formar los comandos se tiene que tener en cuenta esta
sintaxis.

Si se quiere formar un comando con 2 mandatos la sintaxis seria la


siguiente.
o Sintaxis:
1+2
o Ejemplo: Escribir el siguiente comando: Crear Librera.
Donde:
Crear = 1er mandato (CRT)
Librera = 2do mandato (LIB)
Entonces el comando seria el siguiente:
 CRTLIB
Si se quiere formar un comando con 3 mandatos la sintaxis seria la
siguiente.
o Sintaxis:
1+3+2
o Ejemplo: Escribir el siguiente comando: Cambiar Librera en Curso.
Donde:
Cambiar = 1er mandato (CHG)
Librera = 2do mandato (LIB)
Curso = 3er mandato (CUR)
Entonces el comando seria el siguiente:
 CHGCURLIB
Si se quiere formar un comando con 4 mandatos la sintaxis seria la
siguiente.
o Sintaxis:
1+4+3+2
o Ejemplo: Escribir el siguiente comando: Crear Archivo Fsico Fuente.
Donde:

AS/400

Pgina 8

Crear = 1er mandato (CRT)


Archivo = 2do mandato (F)
Fsico = 3er mandato (P)
Fuente = 4to mandato (SRC)
Entonces el comando seria el siguiente:
 CRTSRCPF

Perfil de Usuario
Es un nombre por el cual podemos acceder al sistema operativo OS/400, para
que pueda manejar o controlar todos sus recursos.
Comando que me permite Crear el Perfil de Usuario
 CRTUSRPRF
Tal como se muestra en la siguiente pantalla.
Luego pulsamos [Enter], para poder visualizar los parmetros a llenar, tal como
la siguiente pantalla.

Si deseo ver mas parmetros de este comando solo pulsamos la tecla de


funcin [F10], y solo avanza de pgina con la tecla [AV.PAG], para poder ver
los dems parmetros,
(*)Parmetros necesarios
(*)Perfil de Usuario.- Especfica el nombre del perfil de usuario que se
modifica.
(*)Contrasea de Usuario.- Es la contrasea que se le otorga a un usuario
Los valores posibles son:

*SAME.- La contrasea del usuario no cambia


*NONE.- No hay ninguna contrasea asociada a este perfil de usuario. Los
usuarios no pueden iniciar una sesin en un sistema con un perfil que tenga
especificado PASSWORD (*NONE).

AS/400

Pgina 9

Contrasea Caducada.- Especifica si la contrasea se establece como


caducada. Si la contrasea se establece como caducada, el usuario necesita
cambiar la contrasea para iniciar la sesin en el sistema.
Los valores posibles son:
*SAME.- No cambia el valor de caducidad de la contrasea.
*NO.- No se establece la contrasea como caducada.
*YES.- La contrasea se establece como caducada.

(*)Estado.- El sistema inhabilitar un perfil de usuario si el nmero de intentos


de inicio de sesin anmalos alcanza el lmite especificado en el valor del
sistema QMAXSIGN. Puede volver a habilitar un perfil de usuario especificando
*ENABLED en este parmetro. Tambin puede inhabilitar un perfil de usuario
explcitamente especificando *DISABLED.
(*)Clase de Usuario.- Especfica el tipo de usuario asociado a este perfil de
usuario como: responsable de seguridad, administrador de seguridad,
programador, operador del sistema o usuario.
Los valores posibles son:

*USER.- Usuario
*SYSOPR.- Operador del Sistema
*PGMR.- Programador
*SECADM.- Administrador de Seguridad
*SECORF.- Responsable de Seguridad

(*)Nivel de Ayuda.- Especfica la interfaz de usuario a utilizar.


Los valores posibles son:
*SYSVAL.- Se utiliza el nivel de ayuda definido en el valor del sistema QASTLVL.
*BASIC.- Se utiliza la interfaz de usuario de Operational Assistant.
*INTERMED.- Se utiliza la interfaz del sistema.
*ADVANCED.- Se utiliza la interfaz del sistema de experto. Para que puedan tener
lugar ms entradas de lista, no se visualizan las teclas de opcin ni las teclas de
funcin. Si un mandato no tiene un nivel

(*)Biblioteca Actual.- Especifica el nombre de la biblioteca actual asociada con


el trabajo que est ejecutndose.
Programa inicial a llamar.- Especifica, para un trabajo interactivo, el nombre
del programa al que se llama siempre que se inicie un nuevo paso de
direccionamiento que tenga QCMD como programa de proceso de peticin.
Men Inicial.- Especfica el nombre del men que se muestra cuando el
usuario inicia la sesin.
(*)Limitar Posibilidades.- Especifica el lmite hasta el cual el usuario puede
controlar los valores de programa inicial, men inicial, biblioteca actual y
programa de manejo de la tecla Atencin.
(*)Autorizacin Especial.- Especifica las autorizaciones especiales otorgadas
a un usuario. Las autorizaciones especiales son necesarias para realizar
ciertas funciones en el sistema.
Restricciones:
El perfil de usuario que crea o cambia otro perfil de usuario debe tener otorgadas todas
las autorizaciones especiales.

AS/400

Pgina 10

El usuario debe tener las autorizaciones especiales *ALLOBJ y *SECADM para otorgar
la autorizacin especial *SECADM a otro usuario utilizando el mandato CRTUSRPRF.

Lista de Autorizaciones

*ALLOBJ.- Todos los Objetos


*AUDIT.- Auditoria
*IOSYSCFG.- Configuracin de entrada / salida
*JOBCTL.- Control de trabajo
*SAVSYS.- Salvar, restaurar, Liberar objetos
*SECADM.- Administrador de seguridad
*SERVICE.- Servicio
*SPLCTL.- Control de Spool

(*)Limitar Sesiones de Dispositivo.- Especfica si el nmero de sesiones de


dispositivo permitidas a un usuario est limitado a una sesin.
(*)Max. Almacenamiento Permitido.- Especifica la cantidad mxima de
almacenamiento auxiliar que se asigna para almacenar objetos permanentes
que son propiedad de este perfil de usuario.
Valor a usar
20000

(*)Max. Prioridad Planificacin.- Especfica la prioridad de planificacin


mxima que se permite tener al usuario para cada trabajo sometido al sistema.
La prioridad de planificacin puede tener un valor que est entre 0 y 9, donde 0
es la prioridad mxima y 9 es la prioridad mnima.
Valor a Usar
6

(*)Descripcin de Trabajo.- Especfica el nombre de la descripcin de trabajo


utilizada para trabajos que arrancan a travs de entradas de estacin de
trabajo del subsistema.
Valor a Usar
AULA1M

(*)Biblioteca.- Especfica el nombre de la descripcin de trabajo utilizada para


trabajos que arrancan a travs de entradas de estacin de trabajo del
subsistema.
Valor a Usar
QGPL

(*)Perfil de Grupo.- Especfica el nombre del perfil de grupo.


Valor a Usar
AULA1M

(*)Cdigo de Contabilidad.- Especifica el cdigo de contabilidad que se utiliza


al registrar la utilizacin de recursos del sistema para trabajos que utilizan esta
descripcin. Si el trabajo se somete mediante el mandato Someter Trabajo
(SBMJOB), se utilizar el cdigo de contabilidad del usuario que lo ha
sometido.
Valor a Usar
Perfil de Usuario

AS/400

Pgina 11

(*)Entrega.- Especfica cmo se entregan los mensajes que se envan a la cola


de mensajes para el perfil de usuario.
Los valores posibles son:
*NOTIFY.-El trabajo al que est asignada la cola de mensajes se notifica cuando un
mensaje llega a la cola de mensajes
*HOLD.- Los mensajes se retienen en la cola de mensajes hasta que el usuario o el
programa los soliciten.
*BREAK.- El trabajo al que est asignada la cola de mensajes se interrumpe
cuando llega un mensaje a la cola de mensajes. Si el trabajo es un trabajo
interactivo, suena la alarma audible. La modalidad de entrega no puede
cambiarse a *BREAK si otro trabajo tambin est utilizando la cola de mensajes.

Bibliotecas
El mandato Crear biblioteca (CRTLIB) aade una biblioteca nueva al sistema.
Antes de situar cualquier objeto en una biblioteca, debe haberse creado la
biblioteca. Al crear la biblioteca, sta se almacena realmente como parte del
sistema interno.
Luego solo tienes que pulsar [Enter], y te mostrara una pantalla con la lista de
libreras o bibliotecas, tal como la siguiente pantalla.

En nuestra lista de bibliotecas tenemos:


4 libreras del sistema (QSYS, QSYS2, QHLPSYS, QUSRSYS)
1 librera en curso (CUR)
2 libreras de usuario (USR)
Comando que me permite crear una biblioteca
Para poder crear una librera tienes que utilizar el siguiente comando CRTLIB,
DONDE:
Biblioteca.- Especfica el nombre de la Biblioteca a crear.
Tipo de Biblioteca.- Identifica el tipo de biblioteca a usar.
Valores Posibles
*PROD.- Un usuario puede proteger todos los archivos de base de datos en
bibliotecas de produccin
*TEST.- Esta es una biblioteca de prueba. Pueden actualizarse todos los

objetos en una biblioteca de prueba durante la prueba, incluso si solicit


proteccin especial para bibliotecas de produccin.
Texto Descriptivo.- Puede ser cualquier comentario referente a la Biblioteca a
crear.
Autorizacin.- Especfica la autorizacin que est otorgando a usuarios que no
tienen autorizacin especfica sobre el objeto, que no estn en la lista de
autorizaciones o cuyo perfil de grupo no tiene autorizacin especfica sobre el
objeto.
Valor a usar
*EXCLUDE

Autorizacin de Creacin.- Especfica la autorizacin que est otorgando a


usuarios que no tienen autorizacin especfica sobre el objeto, que no estn en
la lista de autorizaciones o cuyo perfil de grupo no tiene autorizacin especfica
sobre el objeto.

AS/400

Pgina 12

Valor a usar
*EXCLUDE

Comando que me permite aadir entrada a la lista de bibliotecas.


Para poder aadir una librera a una lista de libreras tienes que utilizar el
siguiente comando ADDLIBLE,
Otros comandos con Libreras
EDTLIBL.- Comando que me permite editar la lista de bibliotecas
CLRLIB.- Comando que me permite clarear una biblioteca
WRKLIB.- Comando para trabajar con Libreras
DLTLIB.- Comando para Eliminar Libreras

Gestin de Objetos
Permite crear y usar dichos objetos. Hay muchos tipos, tales como archivos,
bibliotecas y programas. Cada tipo tiene un uso especfico. Todos los objetos
se direccionan en bibliotecas.
Un Objeto tiene las siguientes caractersticas:
Es una unidad de informacin que tiene un nombre
Contiene la informacin que describe al objeto (Tal como su nombre, tipo,
cuando se creo, etc.)
Ocupa espacio en memoria.
Los programas son objetos, al igual que las bibliotecas, las colas y los archivos.
Todos ellos ocupan espacio, se les da un nombre y pueden ser usados por
mandatos y/o programas.
Comando que me permite Trabajar con Objetos.
Para poder trabajar con objetos tienes que utilizar el siguiente comando
WRKOBJ, tal como la siguiente pantalla.

Descripcin de Objetos
El mandato Visualizar Descripcin de Objeto (DSPOBJD) visualiza los nombres
y los atributos de objetos especificados en la biblioteca especificada o en las
bibliotecas de la lista de bibliotecas del trabajo. El mandato tambin puede
visualizar los nombres y los atributos de las propias bibliotecas, tales como
fecha de creacin, hora de creacin, propietario, etc.
Comando para Visualizar descripcin de Objetos
Para poder visualizar la descripcin de objetos se tiene que utilizar el siguiente
comando DSPOBJD.
Luego pulsamos [Enter], para poder ver sus parmetros, tal como la siguiente
pantalla.
Editar autorizacin de Objetos
El mandato Editar Autorizacin de Objeto (EDTOBJAUT) visualiza la lista de
usuarios con autorizacin sobre el objeto y sus autorizaciones de usuario
asociadas. Si usted es el propietario del objeto o tiene la autorizacin especial
*ALLOBJ, puede aadir, cambiar o eliminar la autorizacin sobre un objeto. Si
AS/400

Pgina 13

tiene autorizacin de gestin sobre el objeto, puede revocar u otorgar sus


autorizaciones especficas a otros usuarios.

DONDE:
Objeto.- Especifica el objeto a visualizar
Biblioteca.- Especfica en que biblioteca se encuentra el objeto a visualizar
Tipo de Objetos.- Especfica qu tipo de objetos se listan.
Los valores posibles son:
*ALL.- Se listan todos los tipos de objeto que tienen el nombre de objeto especificado.
*LIB.- Es un objeto biblioteca (*LIB) contiene archivos, programas y otros objetos que
pueden servir de directorio para otros objetos.
*PGM.- Es un objeto programa (*PGM) contiene un conjunto de instrucciones que le
indica al sistema dnde conseguir entradas, cmo procesarlas y dnde poner los
resultados. Un programa se crea cuando se compila o cuando se crea a partir de uno o
ms objetos de tipo mdulo utilizando el mandato Crear Programa (CRTPGM).
*FILE.- Es un objeto archivo (*FILE) define un archivo de base de datos, un archivo de
dispositivo o un conjunto de registros relacionados en un archivo.

Salvando objetos(SAVOBJ)
El mandato Salvar Objeto (SAVOBJ) salva una copia de un solo objeto o un
grupo de objetos ubicados en la misma biblioteca. Cuando se especifica *ALL
en la solicitud Objetos (parmetro OBJ), pueden salvarse objetos de hasta 300
bibliotecas. Cuando se salva en un archivo de salvar, slo puede especificarse
una biblioteca
Para poder salvar un objeto, se tiene que crear un archivo de salvar con el
comando CRTSAVF, tal como se muestra en la siguiente pantalla.

Archivo Fsico Fuente


Un archivo fsico fuente contiene los datos fuente necesarios para crear objetos
Tales como sentencias fuente del lenguaje de control (CL), que se utilizan
para crear un programa CL, o las especificaciones de descripcin de datos
(DDS), que se utilizan para crear un archivo de base de datos o de dispositivo.
Un archivo fsico fuente puede tener uno o ms miembros.
Comando que me permite crear un Archivo Fuente
Para poder crear un archivo fsico fuente deber de usar el siguiente comando
CRTSRCPF,

Miembros Fuentes
Los miembros vienen hacer los cdigos de los programas tales como rpg, cl,
tablas fsicas y logicas, comandos, etc.

AS/400

Pgina 14

Para poder crear un miembro fuente se tiene que utilizar un utilitario llamado
STRSEU, como la siguiente pantalla.
Luego pulsamos la tecla de funcin [F4], para poder ver sus parmetros
adicionales, tal como la siguiente pantalla.

DONDE:
Nombre de Archivo fuente.- Especfica en que archivo fuente se va a
crear ese miembro, el cual puede ser la QDDSSRC, QCLPSRC,
QRPGSRC, QRPGLESRC, o un archivo fuente que nosotros creemos.
Nombre de Biblioteca.- Especfica en que biblioteca vamos a crear ese
miembro, por defecto siempre se pone nuestra biblioteca o si se desea
una biblioteca que hemos creado.
Nombre del Miembro Fuente.- Especfica el nombre del miembro a
crear.
Tipo Fuente.- Especifica el tipo que va a tener ese miembro, el cual
puede ser:
o
o
o
o

Tabla Fsica.- PF
Tabla Lgica.- LF
Programa.- RPG, RPGLE, CLP, etc.
Edicin.- TXT

Opcin.- Especifica si se va a 2=editar, 5=visualizar, 6=Imprimir el


miembro pero por omisin se especifica *BLANKS.
Texto Descriptivo.- Puede ser cualquier comentario que identifique a
ese miembro

Gestin de Trabajos
Un Trabajo es la unidad de tarea aceptada por el sistema.
La Gestin de Trabajos inicia todos los trabajos que se ejecuta el Sistema.
El Trabajo se somete en forma de trabajos.
La Gestin de Trabajos acciona los recursos (Espacio, Colas) a un trabajo
cuando se inicia este y a medida que prosigue hasta completarse.
Los 2 Tipos principales de Trabajos que gestiona el sistema AS/400 son:
Trabajos Interactivos.- Un Trabajo Interactivo es aquel en el un programa
muestra al usuario una pantalla de solicitud en una estacin de trabajo.
El usuario suministra entonces la informacin necesaria.
Uno inicia un trabajo interactivo cada vez que se conecta y lo finaliza al
desconectarse.
AS/400

Pgina 15

Trabajo Por Lotes.- Un Trabajo por Lotes se somete a una Cola de


Trabajos para ser procesado por el sistema posteriormente, quiz durante la
noche. Normalmente no se necesita ninguna accin del usuario al ejecutar
un Trabajo por Lotes.

Mandato ENDJOB
El mandato Finalizar trabajo (ENDJOB) finaliza el trabajo especificado y
cualquier archivo de datos incorporado asociado.
El trabajo puede estar en una cola de trabajos, puede estar activo o puede
haber completado ya su ejecucin.
Puede especificar que se d tiempo al programa de aplicacin para controlar el
proceso de final del trabajo.

Subsistemas
Muestra el estado, e informacin sobre cada subsistema del sistema. Puede
utilizar esta lista para determinar si una cantidad especfica de almacenamiento
principal se ha asignado a un subsistema y si es as, para determinar a qu ID
de agrupacin dentro del subsistema se ha asignado el almacenamiento
principal. Tambin puede ver cuntos trabajos estn activos en cada
subsistema.
Comando que me permite trabajar con Subsistemas.
Para poder trabajar con los subsistemas tenemos que usar el siguiente
comando WRKSBS, tal como se muestra en la siguiente pantalla.
Luego Pulsamos [Enter], y el sistema nos contestara con la siguiente pantalla.

AS/400

Pgina 16

Escribimos la Opcin 5 en el Subsistema QBATCH y presionamos Enter para


poder Visualizar la Descripcin de ese Subsistema.
Luego escribimos la Opcin 6 y presionamos Enter para poder Visualizar las
Entradas a las Colas de Trabajos. En esta pantalla podemos apreciar cuantas
colas de trabajo tenemos en el Subsistema QBATCH

Trabajar con Estado de Sistema (WRKSYSSTS)


El mandato Trabajar con Estado del Sistema (WRKSYSSTS) le permite
trabajar con informacin sobre el estado actual del sistema.
Visualiza el nmero de trabajos actualmente en el sistema, la capacidad total
de la agrupacin de almacenamiento auxiliar (ASP), el porcentaje de ASP del
sistema que se utiliza actualmente, la cantidad de almacenamiento auxiliar que
est utilizndose actualmente.
Comando para Visualizar Estado de Sistema
Para poder trabajar con el estado del sistema, tenemos que usar el siguiente
comando WRKSYSSTS:

AS/400

Pgina 17

Luego pulsamos [Enter], para poder ver el estado del sistema, tal como la
siguiente pantalla.

Trabajar con Trabajos Activos. (WRKACTJOB)


Nos muestra el rendimiento e informacin de estado para trabajos que estn
activos actualmente en el sistema. Toda la informacin se recoge en funcin de
un trabajo. Los trabajos se ordenan en funcin del subsistema en el que se
ejecutan. Los trabajos que se ejecutan en un subsistema (trabajos interactivos,
trabajos por lotes, etc. ) se ordenan alfabticamente por nombre de trabajo y
aparecen debajo del campo del trabajo supervisor de subsistema al que estn
asociados.
Luego pulsamos [Enter], para poder ver los trabajos que se encuentran activos,
tal como la siguiente pantalla.

AS/400

Pgina 18

Trabajar con Estado de Disco (WRKDSKSTS)


La pantalla Trabajar con Estado de Disco muestra informacin de rendimiento y
estado sobre las unidades de disco del sistema.
Visualiza el nmero de unidades que hay actualmente en el sistema, el tipo de
cada unidad de disco, el tamao del espacio de disco, si el disco est
actualmente en el sistema, el porcentaje de espacio del disco utilizado.

Lenguaje de Control (CL)


Es un conjunto de instrucciones (Mandatos), son los que formar parte de un
programa CL, el cual es utilizado para supervisar y controlar funciones
relacionadas con el sistema operativo OS/400, as como tambin gestionar
objetos. Los mandatos tambin pueden utilizarse como un lenguaje de
programacin de alto nivel para funciones del sistema.
Mandatos a usar para programar en un CL
PGM (Iniciar Programa).
El mandato PGM se utiliza para identificar el inicio de un programa CL que
debe compilarse y para especificar los parmetros que debe recibir el programa
despus de compilarse. Todo programa de CL se debe de cerrar con un
ENDPGM
Ejemplo1: Sin Parmetros
PGM

ENDPGM
AS/400

Pgina 19

Ejemplo2: Con Parmetros


PGM PARM(&PARM1 &PARM2 )

ENDPGM

DCLF (Declarar Archivo).


Permite declarar un archive (por nombre) para un programa de lenguaje de
control (CL). Solo se permite un mandato DCLF en un programa CL; el
mandato especifica el nombre del archivo y los formatos de registros que van a
utilizarse en el programa.
Ejemplo: Declarando el Archivo DSP01 con registros REG01, REG02
DCLF FILE(DSP01) RCDFMT(REG01 REG02)
Donde:
FILE.- Nombre del archivo a declarar
RCDFMT.- Nombre(s) de registros a declarar, se puede obviar escribir los
nombres de registros colocando solamente *ALL

DCL (Declarar Variable).


Permit
e definir variables que se utilizan en el programa CL. Cada mandato DCL
define los atributos de una variable CL y declara su nombre en el programa en
el que se va a utilizar.
NOTA.- Toda variable CL que se declara debe de empezar con un signo
ampersand (&).

Ejemplo: Declarar la variable AUX de longitud 5


DCL VAR(&AUX) TYPE(*CHAR) LEN(5) VALUES(0)
Donde:
VAR.- Nombre de la variable a declarar.
TYPE.- Entre los cuales tenemos:
*CHAR.- Carcter
*DEC.- Decimal
*LGL.- Lgico
LEN.- Las longitudes mximas para cada uno de los 3 tipos son:
Decimales.- pueden ser 15 dgitos de los cuales 9 son decimales.
Carcter.- pueden se hasta 9999 caracteres.
Lgico.- 1 carcter.
VALUES.- especifica el valor inicial que se asigna a la variable

CHGVAR (Cambiar Variable).


Permite asignar un valor o una expresin a una variable.
Ejemplo:
CHGVAR VAR(&CONTADOR) VALUES(100)
Donde:
VAR.- Nombre de la variable. La variable CL debe de existir y estar declara
previamente.
AS/400

Pgina 20

VALUES.- Especfica la expresin.

IF (Condicin Lgica SI)


El mandato Si (IF) evala una expresin y procesa condicionalmente los
mandatos de programa CL de acuerdo con la evaluacin de la expresin. Si la
expresin lgica es verdadera, el mandato (DO) especificado en el parmetro
THEN se procesan, en caso contrario el mandato ELSE con su mandato
asociado o grupo (DO) se procesan.
Ejemplo:
IF COND(&CONTADOR = 1) THEN(DO)
ENDDO
ELSE CMD(DO)
ENDDO

SNDPGMMSG (Enviar Mensaje de Programa)


Permite enviar u mensaje definido po el usuario
Ejemplo:

SNDPGMMSG MSG(HOLA)
Concatenadotes.
*CAT = Permite concatenar cadenas sin espacios
*BCAT = Permite concatenar cadenas con un espacio
Ejemplo1: CLP001
PGM
SNDMSG
ENDPGM

MSG(HOLA) TOUSR(MC1102H)

Ejecucin:  CALL CLP001


Ejemplo2: CLP002
PGM
DCL
SNDMSG
MONMSG
SNDPGMMSG
ENDDO
ENDPGM

PARM(&USER)
VAR(&USER) TYPE(*CHAR) LEN(7)
MSG('HOLA') TOUSR(&USER)
MSGID(CPF2469) EXEC(DO)
MSG('LA COLA DE MENSAJES NO EXISTE')

Ejecucin:  CALL CLP002 PARM(MC1104A)

AS/400

Pgina 21

Ejemplo3: CLP003
PGM
DCL
DCL
SNDMSG
MONMSG
SNDPGMMSG
ENDDO
ENDPGM

PARM(&USER &MSG)
VAR(&USER) TYPE(*CHAR) LEN(7)
VAR(&MSG) TYPE(*CHAR) LEN(30)
MSG(&MSG) TOUSR(&USER)
MSGID(CPF2469) EXEC(DO)
MSG('LA COLA DE MENSAJES NO EXISTE')

Ejecucin:  CALL CLP003 PARM(MC1104A HOLA A TODOS)


Ejemplo4: CLP004
PGM
DCL
IF

PARM(&OP)
VAR(&OP) TYPE(*CHAR) LEN(1)
COND(&OP = '1') THEN(DO)
DSPSYSVAL QDATE

ENDDO
ELSE

CMD(IF COND(&OP = '2') THEN(DO))


DSPSYSVAL QMAXSIGN

ENDDO
ELSE

CMD(DO)
SNDPGMMSG MSG('NO EXISTE LA OPCION')

ENDDO
ENDPGM
Ejecucin:  CALL CLP004 PARM(1)
Ejemplo5: CLP005
PGM
DCL
DCL
DCL
IF
ENDDO
ELSE

PARM(&OP)
VAR(&OP) TYPE(*CHAR) LEN(1)
VAR(&VAR) TYPE(*CHAR) LEN(6)
VAR(&MSG) TYPE(*CHAR) LEN(30)
COND(&OP = '1') THEN(DO)
DSPSYSVAL QDATE
CMD(IF COND(&OP = '2') THEN(DO))
RTVSYSVAL SYSVAL(QMAXSIGN) RTNVAR(&VAR)
COND(&VAR = '*NOMAX') THEN(DO)
VAR(&MSG) VALUE('INTENTOS INDEFINIDOS')

IF
CHGVAR
ENDDO
ENDDO
ELSE
CMD(DO)
CHGVAR VAR(&MSG) VALUE('NO EXISTE LA OPCION')
ENDDO
SNDPGMMSG MSG(&MSG)
ENDPGM

AS/400

Pgina 22

Ejecucin:  CALL CLP005 PARM(1)


Ejemplo6: CLP006
PGM
DCL
DCL
DCL
DCL
INICIO:
IF
GOTO FIN
ENDDO
ELSE
CHGVAR
DSPMSG
CHGVAR
GOTO INICIO
ENDDO
FIN:
ENDPGM

PARM(&SEC)
VAR(&SEC) TYPE(*CHAR) LEN(4)
VAR(&USER) TYPE(*CHAR) LEN(7) VALUE('MC?????')
VAR(&GRUPO) TYPE(*CHAR) LEN(20) +
VALUE('ABCDEFGHIJKLMNOPQRST')
VAR(&POS) TYPE(*DEC) LEN(2 0) VALUE(1)
COND(&POS *GT 20) THEN(DO)

CMD(DO)
VAR(&USER) VALUE(%SST(&USER 1 2) *CAT &SEC +
*CAT %SST(&GRUPO &POS 1))
MSGQ(&USER)
VAR(&POS) VALUE(&POS + 1)

Ejecucin:  CALL CLP006 PARM(1104)


podemos controlar programas de aplicacin.

PROCESO INTERACTIVO
 PALABRA CALVE O POSICIONAL
 CON SOLOCITUD (PROMPT)
COMPILABLE
 RAPIDO
 LOGICA POTENTE
 MANEJO DE ERRORES
 MANIPULACION DE DATOS
 INTERFACE CON PANATALLA Y DB.
DISEO PARA CONTROLAR EL FLUJO DE UNA APLICACIN.
PGM (opcional)
DCLF (
archivo)
DCL (variables)
MONMSG
IF
ELSE
SNDRCVF
[PROGARMA]
SNDMSG
CHGVAR
MONMSG
GOTO TOP

AS/400

Pgina 23

ENDPGM(optional)
Reglas de codificacin
Nombre de variable.- Para almacenar y actualizar datos y recibir parmetros.
Debe empezar con el carcter &.
Dos puntos (:)._ Separa la etiqueta del mandato
Blancos. Separa los parmetros de un mandato.
Parntesis ( ) .- Separa las palabras claves y valores.
Diagonal (/). Conecta las partes de nombres calificados.
Apstrofe .- Al comienzo y al final de una serie de caracteres en comillas, tal
como ALL.

DCLF declaracin de archivo, este comando sirve para declarar archivos


DCL
Toda las variable en un cl siempre se declara con el carcter & antes del nombre de la
variable.
DCL VAR (&NAME) TYPE ( ) LEN ( ) VALUE ( )
TYPE( )
*DEC

*CHAR

*LGL

LEN ( )
VALUE( )
Por deafult (15 Default (0)
5)
Maximo (15
9)
Default
Default (0)
(32)
Maximo
(9999)
1 Default (0)

Ejemplo:
(1) DCL &A *LGL
VALUE (1)
(2) DCL &B *CHAR 5
ABCD
(3) DLC &c *DEC (5 2) 543.21
CHGVAR.
Este comando nos permite cambiar valores a:
Constantes
Otras variable
Expresiones
Conversin entre valores decimales y de caracteres.
CHGVAR VAR (CL- variable) VALUE (expresin)
Ejemplos de CHRVAR
AS/400

Pgina 24

1.- CHGVAR &MONT 37.2


2.- CHGVAR &NAME TOM SMITH
3._ CHGVAR &CODE A
4.- CHGVAR &COUNT (&CONTEO + 1)
5.- CHGVAR &IN20 (&IN10 *OR &IN15)
6.- CHGVAR &IN99 (&OPCION = 90)
7.- CHGVAR &AMT ((&PRECIO. & DESCUENTO /0 * & CANT)

Usar CHGVAR para cambiar tipo de datos, en un CL podemos cambiar el tipo de dato
que tengamos de un valor numrico a carcter o viceversa.

CHARVAR VAR (&A) VALUE(&A)


Variable carcter &A
Longitud ResultadoConvertido

Variable Decimal &A


Longitud Valor Especificado

7
7
7

5.2
5.2
5.2

0023.00
-003.90
-123.67

23.00
-3.90
-123.67

CHARVAR VAR (&A) VALUE(&A)


Variable decimal &A
Longitud ResultadoConvertido

Variable Carcter &A


Longitud Valor Especificado

5.2
5.0
5.2

11
10
10

123.00
123
-123.00

bb+123.1bb
bbb+123.000
-123bbbbbb

Mas acerca de cambiar variable, CHGVAR


Podemos Trabajar con parte de una variable de caracteres usando %SST
Recuperar o cambiar, todo o parte de local data rea.
Uso de los interruptores de trabajo como una variable lgica.
%SUBSTRING O %SST FUNCIN INTEGRADA
Identifica parte de una variable de caracteres o *LDA

( *LDA

%SS

]- Posicion-inicial longitud )

nombre variable

Contenido de la variable o *LDA :


1 2 3 ....

X= posicin inicial.
AS/400

Pgina 25

Y= longitud.
CHGVAR VAR (&PART) VALUE (%SST(&WHOLE 5 10 ))
CHGVAR VAR (%STT (&WHOLE 5 10)) VALUE (&PART)
Ejemplo de %SUBSTRING
ANTES &NAME: DAVE
CHGVAR VAR(%SUBSTRING(&NAME 4 2)) VALUE(ID)
DESPUS &NAME: DAVID
ANTES &DATA: ABCDE12345
&NAME: DAVE
CHGVAR VAR(&NAME) VALUE(%SST(&DATA 2 1))
DESPUS &NAME: B
ejemplo 2
usar una variable para posicin inicial
PGM
DCL VAR (&TEAM) TYPE(*CHAR) VALUE (ABCDEFGHIJKL)
DCL VAR(&LIB) TYPE (*CHAR) LEN (6) VALUE (IWLIBX)

AS/400

Pgina 26

ARCHIVOS FISICOS
DEFINICION : Son aquellos que en forma permanente van almacenar informacin en
el disco, el cual pueden ser tomados y accesados por cualquier lenguaje de
programacin bajo el entorno de AS/400.
Ellos son similares a los archivos tradicionales. Cada archivo fsico contiene nicamente
un formato de registro de longitud fija. Puede tener una va de acceso en secuencia por
claves para presentar los datos en una secuencia distinta del orden en que se aadieron
los registros.
TIPOS DE ARCHIVOS DE DATOS
Archivo Fsico (PF)
Consta de dos partes:
1.- La Estructura.- Aqu va la codificacin de la tabla.
2.- El Objeto.- Donde va a ir toda la informacin que guardemos.
Archivo Lgico Simple (LF)
Archivo Lgico Unin (LF)
DESCRIPCION DE UN ARCHIVO FISICO

DATOS

Estructura

Objeto

TABCLI
PF

TABCLI
OBJ

14= COMPRIMIR

K CODCLI
CREACIN DE UN ARCHIVO FSICO


STRSEU + F4

K CODCLI
ESTRUCTURA DE UN ARCHIVO FISICO
R

Archivo Fuente: QDDSSRC


Biblioteca:
*CURLIB
Miembro fuente: TABCLI
Tipo fuente:
PF
Tabla de clientes
K

AS/400

REGCLI
CODCLI
PATCLI
MATCLI
NOMCLI
DIRCLI
TELCLI
FECNAC
CODCLI

5A
10A
10A
10A
30A
7S00
8A

Pgina 27

CREACION DE UN ARCHIVO FISICO


Para crear un archivo fsico se tiene que usar el UTILITARIO STRSEU
Luego de escribir el Utilitario STRSEU se tendr que pulsar [F4] y nos saldr la
siguiente pantalla :

Donde:
NOMBRE DE ARCHIVO FUENTE : Viene hacer el archivo donde vamos a
guardar el archivo fsico a crear, si queremos ver los Archivos Fuentes, tenemos que
utilizar el siguiente comando:
= >WRKOBJPDM [NOMBRE DE BIBLIOTECA]
Ejemplo:
=> WRKOBJPDM AMORENO
Luego cuando se pulsa [Enter], saldr la siguiente pantalla:
NOTA.- Si no existiera los Archivos Fuentes se tendr que crearlo con el siguiente
comando.
= > CRTSRCPF [ARCHIVO FUENTE] + [ENTER]
EJEMPLO
=>CRTSRCPF QDDSSRC

NOTA : Todos los Objetos que tengan el Atributo PF-SRC vienen hacer Archivos
Fuentes .
NOMBRE DE BIBLIOTECA : Viene hacer la Biblioteca del Perfil de Usuario.
NOMBRE DE MIEMBRO FUENTE : Viene hacer el nombre del Archivo Fsico a
crear, pro Ejemplo: TABPRO ( Tabla Producto ).

AS/400

Pgina 28

TIPO DE FUENTE : Viene hacer el tipo del Archivo a Crear, el Tipo de Fuente para
un Archivo Fsico es PF , y si fuera un Archivo Lgico seria LF.
OPCION : Los Valores posibles Son:
*BLANK = Este es el valor por omisin si no especifica un nombre de miembro.
2 = Editar un miembro
5 = Examinar un miembro
6 = Imprimir un miembro.
TEXTO DESCRIPTIVO : Viene hacer una descripcin del Archivo a crear.
Luego de haber explicado cada parmetro, escribir lo siguiente como se muestra en la
siguiente pantalla:

Luego de haber escrito los parmetros se tendr que pulsar [Enter] y nos mostrara la
pantalla de Edicin, como se muestra en la siguiente pantalla:
Un Archivo Fsico consta de tres partes:
NOMBRE DE REGISTRO
CAMPOS
CAMPOS CLAVES
Para disear nuestro archivo fsico, tenemos que Utilizar un Tipo de Hoja que es la Hoja
A y luego pulsar [F4] , y nos mostrara la siguiente pantalla:

AS/400

Pgina 29

Donde si te das cuenta a aparecido una pequea regla de ayuda en la parte inferior de la
pantalla:
Donde:
TIPO DE NOMBRE : Manejamos 2 tipos de Nombres
R
Teclee R para indicar un Nombre de Formato de Registro.
K
Teclee K para indicar un Nombre de Campo de Clave.
NOMBRE : Viene hacer el Nombre de Formato de Registro, de Campo o de Campo
de Clave. La longitud mxima permitida es de 10 caracteres.
LONGITUD : Viene hacer un valor para indicar el nmero de bytes en un campo de
tipo Carcter o el nmero de dgitos en un campo Numrico.
TIPO DE DATO : Entre los tipos de datos tenemos los siguientes
S
Teclee S para indicar datos de Decimal con Zona.
A
Teclee A para indicar datos de tipo Carcter.
Si desea ver los dems tipos de datos colocar el cursor en TIPO DE DATO y pulsar
[F1]
POSICIONES DECIMALES : Teclee un valor entre 0 y 31 para indicar el nmero
de posiciones decimales a la derecha de la coma decimal

AS/400

Pgina 30

FUNCIONES : Entre las Funciones tenemos los siguientes


COLHDG
Proporciona cabeceras de columna para el campo.
COMP
Proporciona un valor de comparacin (slo para funcin de referencia).
DESCEND
Dispone registros desde el valor de campo de clave ms alto al ms pequeo.
RANGE
Proporciona un rango de valores vlidos (slo para funcin de referencia).
TEXT
Proporciona una descripcin del registro o campo.
UNIQUE
Indica que no se permiten los valores de clave duplicados.
VALUES
Proporciona una lista de valores vlidos (slo para funcin de referencia).
Si desea ver las dems Funciones colocar el cursor en FUNCIONES y pulsar [F1]
El siguiente ejemplo muestra el diseo de un Archivo Fsico con todos los parmetros
descritos anteriormente

Luego de haber codificado la estructura del Archivo fsico se proceder a grabar el


archivo con una Opcin de Comando que es el FILE , como se muestra en la siguiente
pantalla:

AS/400

Pgina 31

Luego se proceder a pulsar [Enter] y llegaremos al men principal.


Luego cuando estemos en el men principal tenemos que proceder a buscar nuestro
Archivo Fsico con el Siguiente comando:
== WRKMBRPDM [ARCHIVO FUENTE DONDE SE GUARDO EL
ARCHIVO]
Ejemplo:
== WRKMBRPDM QDDSSRC
Luego cuando pulsamos [Enter] nos mostrara la siguiente Pantalla

14

Luego se proceder a C ompilar(opcin 14) el Archivo para que se pueda crear un


Objeto donde se tendr que utilizar los mandatos de Archivos Fsicos para ingresar,
modificar, eliminar o visualizar los datos del Archivo.
Luego se presiona [Enter], y de ah se tendr que utilizar los mandatos de Archivos que
son los siguientes:
Permite Ingresar, Modificar, Eliminar Registros al Archivo
= UPDDTA [ARCHIVO FISICO]
Ejemplo:
AS/400

Pgina 32

= > UPDDTA TABPRO


Luego cuando se presiona [ENTER] , nos saldr la siguiente pantalla. [Figura 1.]
Donde ingresaremos los datos a la Tabla, luego de haber ingresado todos los datos se
presionara [Enter] , para as poder ingresar un registro nuevo, ahora cuando ya no
quieras seguir ingresando informacin al Archivo solo tienes que presionar [F3] .
Figura 1 .

Ahora cuando quieras modificar un registro tendrs que utilizar el mismo comando.
Ejemplo:
= >UPDDTA TABPRO
Luego cuando se presiona [ENTER] , nos saldr la siguiente pantalla.
Ahora cuando quieras Eliminar un registro tendrs que utilizar el mismo comando.
Ejemplo:
= > UPDDTA TABPRO
Luego cuando se presiona [ENTER] , nos saldr la siguiente pantalla.
Si te das cuenta la Modalidad esta como CAMBIO [Figura 3.] , ahora solo tienes que
avanzar de pagina [AV.PAG] , y buscar el registro a Eliminar , luego de haberlo
encontrado solo Pulsa [F23] dos veces y presiona [Enter] , para as poder Eliminarlo ,
y fjate que en la parte inferior debe salir un mensaje se ha suprimido el registro
solicitado luego si deseas salir solo pulsas [F3] y [ENTER], [Figura 5.]
Visualiza todos los registros del Archivo sin Estructura
=>DSPPFM [ARCHIVO FISICO]
Ejemplo:
= > DSPPFM TABPRO
Luego cuando se presiona [ENTER] , nos saldr la siguiente pantalla.
NOTA.- La visualizacin de los datos es sin estructura, solo se esta mostrando los datos

AS/400

Pgina 33

Visualiza todos los registros del Archivo con Estructura


= >RUNQRY *N [ARCHIVO FISICO]
Ejemplo:
= > RUNQRY *N TABPRO
Luego cuando se presiona [ENTER] , nos saldr la siguiente pantalla.
Resumen Comandos De Archivos:
CLRPFM .- Clear physical file member (Inicializa el archivo, borra la informacin)
DLTF .- Delete file (Borra el archivo, fisicamente ya no existir).
CHGPF .- Change physical file (Cambia atributos al archivo)
CHGPFM .- Change physical file member
DSPFD .- Display file description (Despliega datos generales del archivo)
DSPDBR .- Display data base rel. (Para consultar archivos lgicos referenciados a un
arch.
fsico.)
DSPPGMref.- Display program reference (para consultar que archivos se estn
utilizando en un programa.)
DSPFFD .-Display file field descrip.(para consultar lista de campos definidos en un
archivo y sus caracteristicas.
Comamdos Para Revisar Compilaciones.
Cuando se compilan archivos, programa, pantalla, ect.. se enva a una cola de
procesos llamada Work with Submitted Jobs (WRKSBMJOB), la cual despliega el
estatus de los procesos que se encuentran en la cola.
Estos estatus son los siguientes:
JOBQ : Indica que el proceso esta por entrar a la cola procesos.
ACTIVE: Indica que el proceso esta por ejecutarse o se esta ejecutando.
OUTQ: Indica que el proceso ha terminado de ejecutarse.
END : Indica que el proceso ha sido terminado por el usuario.

Work with Submitted Jobs


S106CB4A
01/14/99 11:27:08
Submitted from . . . . . . . . :
Type options, press Enter.
2=Change
3=Hold
4=End
7=Display message
8=Work with spooled files

Opt Job
Function
P550025
P550002
CRTRPGPGM

AS/400

*USER

5=Work with

6=Release

User

Type

-----Status-----

MTY02
MTY09

BATCH
BATCH

OUTQ
ACTIVE

CMD-

Pgina 34

Los opciones que se encuentran en este comando son las siguiente:


3= Hold .- usando esta opcin se congela el proceso.
4= End .- Usando esta opcin se cancela la ejecucin del proceso.
6= Release.8= work spooled files. Con esta opcin nos despliega el spool de nuestro
proceso.
El sooled file (cola de impresin) ,es una herramienta que sirve para
desplegar y almacenar la informacin resultados compilaciones, y de las salidas de
los programas ejecutados programas.

Archivos Lgicos
Los archivos lgicos no contienen datos en realidad, sino que describen como
tienen que presentarse al programa los registros contenidos en uno o ms
archivos fsicos.
Algunas de las cosas que puede hacer con un archivo lgico son:

Cambiar lgicamente los atributos de los campos de los archivos fsicos (por ejemplo:
longitud de campo y orden de campo).
Proporcionar secuencias lgicas adicionales de registros.
Proteger uno o ms campos de archivos fsicos para que no se lean o cambien.
Derivar nuevos campos de campos de archivos fsicos.
Proteger registros de archivos fsicos especficos para que no se lean.
Hacer que dos o ms archivos parezcan un archivo nico.

Entre los tipos de archivos lgicos tenemos los siguientes:


Archivo Lgico de Formato Simple.
Utiliza datos de un archivo fsico. Un archivo lgico simple es la categora de
archivo lgico que se utiliza ms frecuentemente. Se utiliza para seleccionar
campos o registros de un archivo fsico en el que esta basado. Tambin se
utiliza para ordenar los datos del archivo fsico a travs de una va de acceso
en secuencia por claves. El usuario puede leer, actualizar, aadir y suprimir
registros a travs de un archivo lgico simple.
Creacin de un Archivo Lgico Simple
Para esto vamos a utilizar el archivo fsico llamado TABALM, que tiene la
siguiente estructura.
R REGALM
CODALM
NOMALM
TIPALM
RESALM
K CODALM

5
20
1
20

A
A
A
A

Vamos a crear un archivo lgico simple mediante el SEU tal como se creo un
miembro fsico pero ahora el tipo es LF: en la hoja A tenemos las siguientes
columnas:
Tipo Nombre = Es usado para indicar el tipo o el nombre de especificacin,
puedes usar las siguientes especificaciones:
AS/400

Pgina 35

Entrada
R
J
Blanco
K
S
O

Significado
Nombre del formato de registro
Especificacin de Unin
Nombre de campo o condicin AND
de la seleccin/omisin
Nombre de campo clave
Nombre de Seleccin
Nombre de Omisin

Nombre = Aqu se especifica lo siguiente:


El formato o formatos de registros para el archivo lgico
Los campos del formato de registro.
Longitud = Utiliza estas posiciones para indicar la longitud de cada campo. Si
se deja en blanco esta posicin, el campo que se esta definindose tiene la
misma longitud que el campo correspondiente en el archivo(s) fsico(s) en el
cual se basa el archivo(s) lgico(s)
Tipos de Datos = Especifique el tipo de dato en un archivo lgico para alterar
temporalmente o cambiar el tipo de dato del campo correspondiente en el
archivo fsico en el cual se basa este archivo lgico. Si se deja en blanco esta
columna, el campo que esta definindose tiene el mismo tipo de dato que el
correspondiente en el archivo(s) fsicos(s) en los cuales se basa el archivo(s)
lgico(s).
Para alterar temporalmente o cambiar de datos especifique lo siguiente en esta
columna.
Tipos Numricos
Descripcin
P
Decimal empaquetado
S
Decimal con zona
B
Binario
F
Coma Flotante
Tipo Alfanumrico
A

Descripcin
Caracteres

Posiciones Decimales = especifique posiciones decimales en una archivo


lgico solamente para alterar temporalmente o cambiar las posiciones
decimales del campo correspondiente en el archivo fsico.
Uso = utilice esta columna para especificar que un campo es solamente de
entrada (I), bivalente (B), blanco (por defecto), Neutro (N, solo valido para
archivos lgicos de unin).
Funciones = Utilice esta columna para especificar palabras claves validas en un
archivo lgico
Entre las cuales podemos utilizar.
Funciones
Descripcin
PFILE(A1)
Especifica un archivo fsico u unir
JFILE(A1 A2 )
Especifica los archivos fsicos a unir
AS/400

Pgina 36

JOIN(A1 A2)

JFLD

JREF(N)

RANGE
VALUES
COMP
SST

La unin es de par en par a travs de


campos comunes, pueden indicarse
sus nombres o nmeros relativos
como fueron colocados en JFILE
Va siempre despus del JOIN, el cual
especifica los campos comunes para
su unin y no requiere que sean
campos claves
Se utiliza cuando un mismo campo
figura en ms de un archivo, aqu se
debe indicar a que archivo le
pertenece.
Rango de Valores
Lista de Valores
Compara Valores
Extrae Caracteres

Luego de haber visto un resumen de los parmetros mas usados, vamos a ver
los 2 tipos de lgicos simples.
TIPOS DE LOGICOS
LOGALM LF

Proceder a grabar con File en la lnea de mandatos.


Debemos trabajar con miembros del fsico fuente QDDSSRC
=>WRKMBRMPDM QDDSSRC

AS/400

Pgina 37

Luego lo compilamos con la opcin 14, tal como se muestra en la siguiente


pantalla
Luego presionar [Enter], para que se compile el archivo lgico LOGALM, y nos
tiene que mostrar una pantalla con el siguiente mensaje.
OP Miembro
14 LOGALM
Cuando nos muestre normalmente, solo presionas [Enter] y ya podemos
visualizar los datos de nuestro lgico, con el comando RUNQRY *N [nombre
del lgico], tal como se muestra en la siguiente figura.
Luego presionas [Enter], y nos mostrara los datos del archivo lgico LOGALM,
tal como se muestra en la siguiente figura.
=>RUNQRY *n LOGALM

Luego lo salvamos con el mandato a nivel de comando FILE, como se muestra


en la siguiente pantalla.

AS/400

Pgina 38

Luego lo buscamos con un comando, para compilar el lgico, solo sigue la


siguiente pantalla.
=>WRKMBRMPDM QDDSSRC
Luego presionas [Enter], y nos mostrara los datos del archivo lgico LOGALM,
=>RUNQRY *N LOGALM

Archivo Lgico de Unin (JOIN)


Combina (en un solo formato de registros) campos de dos o ms archivos
fsicos. Un archivo lgico de unin solo puede leerse, el usuario no puede
cambiar, aadir o suprimir registros a travs de un archivo lgico de unin.

Creacin de un Archivo Lgico de Unin.


Para esto vamos a crear los archivos fsicos llamados TABALU, TABNOT,
TABCUR que tiene las siguientes estructuras.
TABALU PF
R REGALU
CODALU
PATALU
MATALU
NOMALU
DIRALU
DNIALU
TELALU
K CODALU

5
10
10
10
30
8
7

A
A
A
A
A
A
S

TABNOT PF
R REGNOT
CODALU
CODCUR
PARCIAL
FINAL
K CODALU
K CODCUR

5
5
2
2

A
A
S
S

00
00

00

TABCUR PF
R REGCUR
CODCUR
NOMCUR
K CODCUR

5 A
20 A

Luego utilizamos el utilitario STRSEU, para poder crear el archivo lgico de


unin, tal como se muestra en la siguiente pantalla.
Luego pulsamos la tecla F4, para poder ver sus parmetros, tal como se
muestra en la siguiente pantalla.
AS/400

Pgina 39

Solo tienes que ingresar los parmetros tal como se muestra en la siguiente
pantalla.

Luego pulsas [Enter], y el sistema nos mostrara la siguiente pantalla donde


definiremos la estructura del lgico de unin.
Luego comenzaremos a definir la estructura del lgico de unin, para esto
vamos a utilizar la letra A, que designa a este formulario como de
especificacin de descripcin de datos (DDS), tal como se muestra en la
siguiente pantalla.

Luego compilamos el lgico de unin LOGUNION con la opcin 14, tal como la
siguiente pantalla.

AS/400

Pgina 40

Luego presionas [Enter], y ya podemos visualizar la informacin del lgico de


unin, con el siguiente comando, tal como la siguiente pantalla.
=>RUNQRY *N LOGUNION
Luego cuando presiones [Enter], nos mostrara la informacin de los 3 archivos
fsicos, tal como la siguiente figura.

TEMA.- TRABAJO DE ARCHIVOS FISICOS Y ARCHIVOS LGICOS


1.- Elaborar un diccionario de Datos para Sistema de cuenta Corriente
Considerar las entidades mas generales por ejemplo:

CliCod
Nomcli
Lin_cre

Clientes
5 A
Codigo
30 A
Nombre
10 S 2 Linea de Credito
Mayor a 500

NroCta
CliCod
Tipo
Saldo

AS/400

Cuenta
6 A
# de cuenta
5A
Cod. Cliente
1A
Tipo de Cuenta
Solo S o D
10 S 2 Saldo

Pgina 41

NroCta
NroAge
TipoM
Monto
Fecha

Movimientos
6 A
2 S 0 # de Agencia
1A
Solo D o R
Deposito o Retiro
10 S 2
10 A

NroAge
NomAge
DirAge

Agencia
2S0
# de agencia
30 A
Nombre agencia
30 A
Direccin de la
Agencia

2.-Crear las tablas y defina los campos claves correspondientes.


3.- Llenar datos consistentes en cada Tabla:
ejemplo:

C001
C002
C003

Clientes
Diaz Ana
Perez Juan
Vega Maria

1300
600
1500

Movimiento
00001 1 R
300
00002 2 D
600
00003 1 R
500
00004 2 D
340
4.-Elaborar los siguientes lgicos:

00001
00002
00003
00004

Cuenta
C001 S
C001 D
C002 S
C003 D

1300
600
1500
750

AGENCIA
1 Agencia1
San Isidro 340
2 Agencia 2
Jess Maria 345

a) Ordenar la lista de cliente por lnea de crdito de forma descendente


b) Ordenar la tabla de movimientos por monto de forma ascendente (solo para
retiros)
c) Muestre un listado Codigo Cliente, Nombre del cliente, Nro Cuenta y saldo.
d) Muestre un listado :
NroCuenta, Nombre Cliente, tipo de operacin , monto de operacin , fecha de
operacin y el nombre de la agencia donde realizo la operacin.

AS/400

Pgina 42

Archivos de impresora
Hola aqu te envi un manual de cmo disear reportes en el AS/400, espero te pueda
ayudar.
Definicin: Los archivos de impresora en el Sistema Operativo OS/400, se definen
mediante el programa de Utilidad RLU (Report Layut Utility), o va SEU (Source
Entry Utility), definiendo directamente las DDS del archivo de impresora.
Por ejemplo vamos a elaborar un diseo utilizando una tabla llamada TABCLI,
cuya estructura es la siguiente:

Ahora vamos a ver los pasos de cmo se crea un archivo de impresora, mediante el
utilitario STRRLU.
Primero tienes que utilizar el UTILITARIO STRRLU como se muestra en la
siguiente pantalla.
=>STRRLU
Luego al Pulsar [F4], nos mostrara la siguiente pantalla, donde tendremos
que ingresar los siguientes parmetros.

AS/400

Pgina 43

Donde:
Nombre de Archivo Fuente: Es el nombre donde vamos a guardar el
diseo de impresora
Nombre de Biblioteca: Es el nombre de nuestra biblioteca
Nombre de Miembro Fuente: Es el nombre del reporte
Opcin: 2 = Editar
Anchura de Pagina: Es la anchura de pagina que tendr nuestro reporte
Texto Descriptivo: Es un comentario del reporte a crear
Luego al presionar [ENTER], nos mostrara una pantalla, donde tendremos que
disear nuestro reporte.

Mandatos a utilizar en un reporte:


DRR= Permite definir un registro en Bloque.
DR= Permite definir un solo registro.
DC= Permite definir constantes.
VF= Permite definir una lnea de campo.
I= Permite insertar lneas.
CLC= Permite cambiar una lnea de Punto a Mas.
[F10]= Permite Seleccionar campos de una Base de Datos.
AS/400

Pgina 44

[F11]= Permite crear una variable.


[F13]= Permite marcar y desmarcar un campo o etiqueta.
[F14]= Permite copiar un campo o etiqueta marcado.
[F15]= Permite mover un campo o etiqueta marcado.
[F16]=Permite suprimir una variable o etiqueta.
[F18] + [F10]= Permite cambiar de nombre a un registro.
[F23] + [F10]= Permite Modificar una variable.
Bien ahora vamos a comenzar a realizar nuestro diseo de impresora, solo lo
que te pido es que sigas las pantallas.
Primeramente debemos saber cuntos registros tendremos que crear, para esta
aplicacin vamos a crear 2 registros (TITULO, DETALLE), entonces como
vamos a crear un registro en bloque para el TITULO vamos a utilizar el
mandato DRR, como se muestra en la siguiente pantalla.

Luego cuando presiones [ENTER], nos mostrara la siguiente pantalla.


Luego el siguiente paso es cambiarle de nombre al registro RDC001 por
TITULO, para esto debemos de colocar el cursor donde dice RCD001, y
pulsar [F18], y luego [F10], para que nos muestre la siguiente pantalla.

AS/400

Pgina 45

Luego de haberle cambiado el nombre de formato de registro.


Luego tenemos que comenzar a disear la parte del TITULO, algo as como se
muestra en la siguiente pantalla.

Luego tenemos que declarar las constantes con el mandato DC, solo tienes que
colocar el mandato DC donde dice TITULO, y colocar el nmero de lneas a
declarar como constantes. Todo campo definido se muestra como:

AS/400

Pgina 46

Luego tenemos que crear el registro de DETALLE, insertar una lnea en


blanco con el mandato I, y te debe mostrar la siguiente pantalla.
Luego creas un solo registro con el mandato DR, como en la siguiente pantalla.

AS/400

Pgina 47

Luego cuando presiones [ENTER], te debe mostrar el registro RCD001, y


solamente tienes que cambiarle de nombre a DETALLE, hazlo igual como
le cambiaste el nombre al registro de TITULO pulsando [F18] y luego
[F10], para que te muestre la siguiente pantalla.
Luego tenemos que llamar a los campos de la tabla TABCLI, para
referenciarlo con el reporte, para esto tenemos que utilizar la tecla de
funcin [F10], y nos saldr la siguiente pantalla. Donde tenemos que
ingresar las siguientes opciones

Luego de haber llenado las opciones, solo presiona [ENTER], para que te
muestre el listado de los campos de la tabla TABCLI, como se muestra en la
siguiente pantalla.

AS/400

Pgina 48

Luego tienes que seleccionar los campos con la opcin 1


Luego de haber seleccionado los campos a referenciar presionas [ENTER],
hasta llegar al diseo de impresora, y te vas a dar cuenta que en la parte
inferior va a estar el campo que has referenciado, como se muestra en la
siguiente pantalla.

Los campos referenciados se muestran con


un nmero relativo

Luego para referenciar el campo, antes que todo tienes que crear una Lnea de
campo (FLD1) antes de DETALLE, y para esto tenemos que utilizar el
mandato VF, solamente coloca el cursor en DETALLE y luego coloca el
mandato VF, y cuando presiones [ENTER], te tiene que mostrar la
siguiente pantalla.
Ahora para referenciar el campo CODCLI al reporte, solo tienes que colocar el
nmero que pertenece al campo, como en la siguiente pantalla.

AS/400

Pgina 49

Luego cuando presiones [ENTER], el campo CODCLI, ya tiene que estar


referenciado al reporte, como se muestra en la siguiente pantalla.

Luego por ultimo vamos a crear un campo llamado XNOMALU, que es una
variable , pulsar la tecla de funcin [F11], y te mostrara la siguiente
pantalla. Donde en vez de FLD001, tienes que colocar el campo a crear, y en
longitud darle la longitud al campo.

Nota: Por defecto el campo a crear siempre ser carcter, pero si vas a crear un
campo numrico, solamente tienes que pulsar la tecla [AV.PAG], para que
te muestre la siguiente pantalla.

AS/400

Pgina 50

Si quieres que el campo sea numrico solamente cmbiale el Tipo de


Dato a 2, y le das los decimales que tendra tu campo numrico.

Nota: para modificar un campo solamente tienes que colocar el cursor en el campo
a modificar y pulsar [F23], y luego [F10]
Nota: para darle la fecha y hora solamente tienes que colocar el cursor al lado
de la etiqueta, pero al nivel de la lnea de campo (FLD1) y utilizar los
mantos *DATE para fecha y *TIME para hora.

AS/400

Pgina 51

CREACIN DEUN PROGRAMA RPG IV


La codificacin en este lenguaje se basa en hojas de codificacin , como todo
lenguaje tiene su propia sintaxis para declarar variables , constantes y archivos
Archivo Fuente
: QRPGLESRC (donde se van a colocar todos los miembros fuentes a codificar)
BIBLIOTECA: *CURLIB
MIMBRO FUENTE: PRG001
TIPO DEFUENTE: RPGLE QUE VAMOS A UTILIZAR SIEMPRE

1.-Se define todos los archivos.


2.-Todas las Variables.
3.-Toda la lgica de los programas.
TIPOS DE HOJA

F  Define Archivos (Tablas, Pantallas, Reportes).


D  Definicin(Variables, Constantes, Estructuras)
C  Calculo de RPGIII  Se utiliza para la LOGICA
CX  Calculo RPGIV  Se utiliza para la LOGICA

LLAMAR A UN TIPO DE HOJA

Para poder llamar al tipo de Hoja. IPF

Y llamas a la hoja que quieras llamar y sale esta pantalla.

AS/400

Pgina 52

CAMBIAR DE HOJA :
IPCX este mandato se coloca a nivel de lnea.

DECLARACION DE VARIABLES
Toda variable se define en la Hoja D
AS/400

Pgina 53

SINTAXIS
NOMBRE: Viene a ser el nombre de la VARIABLE CONSTANTE o E.E.D.D.
TIPO DE DECLARACION: Si le pongo:
*S

VARIABLE
*C 
CONSTANTE
* DS 
E.E.D.D.
NOTA:
PARA SALTAR DE PARAMETRO A PARAMETRO UTILIZAR EL
SIGNO + DEL TECLADO NUMERICO.
TIPO DE DATO INTERNO:
*S
*A




NUMERICO
ALFANUMERICO

POSICIONES DECIMALES: Decimales de la VARIABLES NUMERICAS.

Y as se proceden a declarar las dems variables.

AS/400

Pgina 54

PARA MODIFICAR UNA LINEA


1RA FORMA
Colocar el Cursor en la LINEA a MODIFICAR + Pulsa F4
ENTER y F5.
2RA FORMA
Se puede modificar desde el mismo EDITOR. Sin alterar las columnas.
TIPOS DE OPERADORES
RPGIV

RPGIII
ADD
SUB
MULT
DIV
MVR

+
*
/
RESTO

OPERADORES LOGICOS
AND 
OR 
NOT 

Y
O
NOT

OPERADORES DE RELACION
RPGIII
GT
LT
GE
AS/400

RPGIV
>
<
>=
Pgina 55

LE
EQ
NE

<=
=
<>

EL USO DEL DSPLY


Es un operador de Entrada/Salida de Datos y es usado en la Hoja C.
SINTAXIS:
C

FACTOR1
TEXTO

OPERADOR
DSPLY

FACTOR2

RESULTADO
VARIABLE

USO DEL EVAL (EVALUTE):


Permite evaluar expresiones y es usado en la HOJA CX.
SINTAXIS:

C
C

FACTOR1

AS/400

OPERADOR
EVAL

FACTOR2

RESULTADO
VARIABLE=EXPRESION

Pgina 56

FINALIZAR UN PROGRAMA
SINTAXIS
C
C

FACTOR1

OPERADOR
EVAL

FACTOR2
*INLR=1

RESULTADO

DONDE:
*IN
LR
1

=
=
=

INDICADOR
ULTIMA LINEA
ACTIVADO

COMPILACION DE UN PROGRAMA

SEU

FILE + [ENTER]

WRKMBRPDM

QRPGLESRC + [ENTER]

14 PRG001
RPGLE
LA OPCION 14


PERMITE COMPILAR PROGRAMA

MENSAJES
*NORMALMENTE:
*ANOMALA:

SINTAXIS CORRECTA.
SINTAXIS NO CORRECTA
(CORREGIR ERRORES).

EJECUCION DE UN PROGRAMA
Solo se pueden ejecutar programas cuyo mensaje sean NORMALMENTE
 CALL

[NOM PROGRAM] + [ENTER]

EJ
 CALL

[PRG001]

+ [ENTER]

ACORDARSE:
*Tambin puedo ejecutar digitando la C:
CUANDO NO EJECUTA UN PROGRAMA:
La sintaxis no es correcta.
Cuando modificamos los datos.

AS/400

Pgina 57

SQL-EMBEBIDO
En lugar de usar operaciones de acceso a archivos de base de datos, tales como READ,
CHAIN, UPDATE, y DELETE, podemos incrustar sentencias SQL en nuestros
programas RPG IV y usar estas para procesar registros en los archivos de base de datos
del AS/400. SQL es un estandard para el acceso a base de datos, y es usado por los
clientes en diferentes plataformas.
Algunas razones para el uso de SQL:
SQL es un lenguaje ms natural y su cdigo es fcil de mantener y leer.
SQL puede simplificar la lgica cuando mltiples registros son incluidos en una
operacin, tales como UPDATE o DELETE.
Las operaciones SQL se realizan por un optimizador de consultas, el cual es mejorado
con cada nueva versin, y automticamente toma las ventajas de las nuevas tecnologas
de base de datos.
La migracin de aplicaciones desde o al AS/400 es facil si las aplicaciones estn escritas
usando un lenguaje estandard como el SQL
El cdigo fuente que contiene sentencias SQL incrustadas debe ser primero procesadas
por un Proprocesador SQL. Este trabajo reemplaza las sentencias SQL con llamadas a
los programas de funcin correspondientes. Este proprocesador es parte del producto
licenciado DB2 Query Manager y SQL Development Kit for AS/400, el cual debe estar
disponible durante el desarrollo de la aplicacin. En tiempo de ejecucin el soporte esta
incluido dentro del sistema operativo.
Reglas para el incrustado de sentencias SQL
Use las siguientes reglas cuando escriba un programa RPG IV con
sentencias SQL incrustadas:
Ingrese sus sentencias SQL sobre las especificaciones C.
Comience sus sentencias SQL usando el delimitador /EXEC SQL en las
posiciones 7 hasta 15, con la / en la posicin 7.
Puede comenzar ingresando sentencias SQL sobre la misma linea
donde comienza el delimitador o sobre una nueva linea.
Use el delimitador de linea de continuacin, un + (signo ms) en
posicin 7, para continuar su sentencias en lineas subsecuentes.
Use el delimitador de final /END-EXEC en las posiciones 7 hasta 15,
con la / barra en posicin 7, para sealar el fin de sus sentencia
SQL.
Un ejemplo de una sentencia SQL UPDATE incrustada:
C/Exec Sql
C+ Update Parts
C+ Set PartDes = :DspDes,
C+ PartQty = :DspQty,
C+ PartPrc = :DspPrc,
C+ PartDat = :DspDat
C+ Where PartNum = :DspNum C/End-Exec
El miembro fuente que contiene el programa RPG IV con las
sentencias SQL incrustadas debe ser del tipo SQLRPGLE. Esto indica a

AS/400

Pgina 58

la opcin 14 o 15 del PDM ejecutar el mandato CTRSQLRPGI, el cual


es requerido para llamar al Preprocesador SQL.
Proprocesador SQL
El preprocesador SQL crea un miembro de archivo fuente de salida.
Por omisin, este es creado en un archivo fuente temporario llamado
QSQLTEMP1 en la biblioteca QTEMP, el cual es automticamente
borrado por el sistema al final del trabajo. Puede especificar el
archivo fuente de salida como un nombre de archivo permanente en
el mandado del preprocesador. Un miembro con igual nombre que el
programa es agregado al archivo fuente de salida.
Este miemobro contiene los siguientes items:
Llamadas al soporte de tiempo de ejecucin del SQL, el cual remplaza
las sentencias SQL incrustadas.
Sentencias SQL analizadas y con las sintaxis chequeada
Por omisin, el precompilador llama al compilador del lenguaje
usando, CRTBNDRPG o CRTRPGMOD segun la opcin del PDM
seleccionada.
Manejo de exepciones y errores
SQL no se comunica directamente con el usuario final, pero devuelve
codigos de error al programa de aplicacin cuando un error o una
excepcin ocurre. Estos codigos de error pueden ser usados de dos
maneras:
Chequeando codigos de error en un area de comunicaciones SQL.
Definiendo manejadores globales de error con una sentencia
WHENEVER.
Area de cominicaciones SQL
El preprocesador SQL automticamente incluye el SQLCA (SQL
Communication Area) en las especificaciones D del programa RPG IV
antes de las primeras especificaciones C. Por lo tanto, no es necesario
codificar INCLUDE SQLCA en el programa fuente.
Los valores SQLCOD y SQLSTT son puestos por le administrador de base de
datos despus de que cada sentencia SQL se ejecuta. Un programa debe
chequear los valores de SQLCOD or SQLSTT para determinar si la ultima
sentencia SQL fue exitosa:
Si SQL encuentra un error mientras procesa la sentencia, SQLCOD tiene un
valor negativo, y los primeros dos caracteres del SQLSTT no son "00", "01",
or "02".
Si SQL encuentra una advertencia (warning) pero en una condicin valida
durante el procesamiento de sentecias SQL, el SQLCOD tiene un numero
positivo y los dos primeros caracteres del SQLSTT son "01".
Si su sentencia SQL es procesada sin encontrar una condicin de error o
advertencia, el SQLCOD retorna 0 y SQLSTT es "0000".
La condicion comunmente usada "No record found" (registro no encontrado)
devuelve los valores SQLCOD = +100 or SQLSTT = "02000".
El area de comunicaciones contiene muchos otros campos con informacin
relacionada con la sentencia SQL ejecutada.

AS/400

Pgina 59

La sentencia WHENEVER (donde quiera que)


Como alternativa de chequear los valores de SQLCOD o SQLSTT, un
programador puede usar la sentencia WHENEVER.
Esta sentencia indica al SQL chequear SQLSTT y SQLCOD, y continuar la
precesamiento de su programa o bifurcar a otra area de su programa si un
error, exepcion, o advertencia existe como resultado de la ejecucin de una
sentencia SQL. Un manejador de condiciones de excepcin puede ser escrito
por el programador para examinar los campos SQLCOD o SQLSTT para
tomar una accin especifica para la situacin de error o excepcin.
La sentencia WHENEVER tiene la siguiente apariencia:
C/Exec Sql
C+ WHENEVER Condition Action
C/End-Exec
Hay tres condiciones que puede especificar:
SQLWARNIN SQLCOD contiene un valor positivo diferente de 100
SQLERROR SQLCOD contiene un valor negativo (condicin de error)
NOT FOUND SQLCOD = +100 o SQLSTT = '02000'
Puede especifiar la accin que quiere para cada condicin
CONTINUE El programa continua con la siguiente sentencia
GO TO etiqueta El programa bifurca a la etiqueta (TAG) dentro del
programa.
Usando un cursor
Al contrario de las operaciones nativas de base de datos, las cuales son
orientadas a un registro y permiten procesar unicamente un registro a la
vez, las sentencias SQL son orientadas a multiples registros y pueden
manejar un grupo de registros a la vez. Por ejemplo, con una sentencia
DELETE puede borrar todos los artculos de un pedido. O, con una sentencia
UPDATE, puede actualizar todos los registros en un archivo si la condicin
WHERE no es usada. Para lograr igual resultado con operaciones nativas,
necesita escribir un bucle y testear diferentes condiciones. Por lo tanto,
usando sentencias SQL puede simplificar algunas veces la lgica del
programa.
De acuerdo con este comportamiento, una sentencia SELECT pone todos los
registros seleccionados en una tabla resultado. Usualmente, un programa
transferira todos estos registros desde la tabla de resultado SQL a un subfile
as el usuario final puede ver estos. Para acceder a una tabla resultado, SQL
provee una tecnica llamada cursor. Este es usado dentro de un programa
SQL para mantener una posicin en la tabla resultado.SQL usa un cursor
para trabajar con los renglones en la tabla resultado y hacer que esten
disponibles para el programa. Un programa puede tener varios cursores,
aunque cada uno debe tener un nico nombre.
Sentencias relacionadas al uso de cursores:
DECLARE CURSOR, esta sentencia define el nombre del cursor y especifica
los renglones a ser recuperados con una sentencia SQL incrustada.
OPEN, abre el cursor para su uso dentro del programa. El cursor debe estar
abierto antes de que cualquier renglon puede ser recuperados.
FETCH, recupera renglones desde la tabla resultado o posiciona el cursor
sobre otro renglon.
CLOSE, cierra el cursor.
Los siguientes recortes de cdigo muestran el uso de un cursor:
... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+..

AS/400

Pgina 60

C/Exec Sql
C+ DECLARE Cursor1 CURSOR FOR
C+ SELECT * FROM Pedidos
C+ ORDER BY Nroped
C+ FOR FETCH ONLY
C/End-Exec
C/Exec Sql
C+ OPEN Cursor1
C/End-Exec
C/Exec Sql
C+ FETCH Cursor1 INTO :SF1DS
C/End-Exec
C/Exec Sql
C+ CLOSE Cursor1
C/End-Exec
SQL soporta dos tipos de cursores: serial y scrollable. El tipo de cursor
determina los metodos de posicionamiento que pueden ser usados con el
cursor.
Cursor serial
Un cursor serial es definido por defecto, si la palabra clave SCROLL no es
usada. Con un cursor serial, cada renglon de la tabla resultado puede ser
tomado unicamente una vez por cada OPEN del cursor. Cuando un cursor es
abierto, este es posicionado antes del primer renglon en la tabla resultado.
Con cada sentencia FETCH, el cursor es movido al siguiente renglon en la
tabla resultado, el cual se vuelve el renglon actual. Si se especifican
variables de programa (con la clausula INTO en la sentencia FETCH), SQL
mueve el contenido del renglon actual a su variable de programa.
Esta secuencia es repetida cada vez que emite la sentencia FETCH, hasta el
end-of-file (fin de archivo - SQLCOD = 100) es alcanzado. Cuando alcanza
el end-of-file, cierre el cursor. Ya no puede acceder a ningun renglon de la
tabla resultado despues de alcanzar el end-of-file. Para usar otra vez el
cursor, debe primero cerrarlo y entonces volver a emitir la sentencia OPEN.
Cursor desplazable
Con un cursor desplazable (scrollable), los renglones de la tabla resultado
pueden ser tomados muchas veces. El cursor se mueve a travez de la tabla
resultado en funcin a la opcin de posicion especificado en la sentencia
FETCH. Cuando un cursor es abierto, este se posiciona antes del primer
renglon en la tabla resultado. Con una sentencia FETCH, el cursor es
posicionado sobre el renglon en la tabla resultado que se especifique por la
opcin de posicin. Este renglon se vuelve el renglon actual.
Las siguientes opciones de desplazamiento, relativas a la posicin actual del
cursor, se usadan para posicionar el cursor cuando emite la sentencia
FETCH:
NEXT Posiciona el cursor sobre el siguiente renglon. (opcion por omisin)
PRIOR Posiciona el cursor sobre el renglon previo.
FIRST Posiciona el cursor sobre el primer renglon.
LAST Posiciona el cursor sobre el ltimo renglon.
BEFORE Posiciona el cursor antes del primer renglon.
AFTER Posiciona el cursor despues del ultimo renglon.
CURRENT No cambia la posicin del cursor.
RELATIVE n Posiciona el cursor en n renglones relativo a la posicin actual.

AS/400

Pgina 61

APLICACIN .- Crear un reporte con quiebres para visualizar los pagos realizados por
cada alumno, aplicando SQL

Columnas . . : 6 76
Edicin
D91041/QRPGLESRC
SEU==>
SQLPAGOS
*************** Principio de datos ************************************
0001.00 FRPPAGOS O E
printer oflind(*in10)
0002.00 dcoda
s
5a
0003.00 C/EXEC SQL
0004.00 C+ DECLARE C1 CURSOR FOR SELECT A.CODALU,APEALU,
0005.00 C+ NOMALU,NROREC,CICLO , CUOTA FROM ALUMNOS A,
0006.00 C+ PAGOS P WHERE A.CODALU=P.CODALU
0007.00 C/END-EXEC
0008.00 C/EXEC SQL
0009.00 C+ OPEN C1
0010.00 C/END-EXEC
0011.00 C/EXEC SQL
0012.00 C+ FETCH C1 INTO :CODALU,:APEALU,:NOMALU,:NROREC,
0013.00 C+ :CICLO,:CUOTA
0014.00 C/END-EXEC
0015.00 C
EVAL CODA=CODALU
0015.01 C
EVAL TOTC=0
0016.00 C
WRITE TITULO
0017.00 C
DOW
SQLCOD<>100
0018.00 C
IF
CODA=CODALU
0019.00 C
WRITE DETALLE
0019.01 C
EVAL TOTC=TOTC+CUOTA
0019.02 C/EXEC SQL
0020.00 C+ FETCH C1 INTO :CODALU,:APEALU,:NOMALU,:NROREC,
0021.00 C+ :CICLO,:CUOTA
0022.00 C/END-EXEC
0023.00 C
ELSE
0024.00 C
WRITE PIE
0025.00 C
EVAL CODA=CODALU
0026.00 C
WRITE TITULO
0026.01 C
EVAL TOTC=0
0027.00 C
ENDIF
0028.00 C
ENDDO
0029.00 C/EXEC SQL
0030.00 C+ CLOSE C1
0031.00 C/END-EXEC
0032.00 C
EVAL *INLR='1'

AS/400

Pgina 62

EN EL REPORTE DISEADO HAY QUE UBICARSE EN EL TITULO


Como se muestra la figura

Luego pulse shift + F6 (obteniendo las palabras claves de registro)

AS/400

Pgina 63

El skip es para saltar una pgina antes que se imprima el titulo


SKIPA = salto de pagina luego que se ha impreso la pagina.
PROGRAMACION INTERACTIVA

PROGRAMA DE
CONSULTA DE
CLIENTES

ARCHIVO DE
CLIENTES

PREPARACION PREVIA A LA CODIFICACION DEL PROGRAMA

DESCRIPCION DEL PROGRAMA

(Narrativa del Programa)

IDENTIFICACION DE ARCHIVOS DE DATOS

IDENTIFICACION DE PANTALLAS

IDENTIFICACION DE ARCHIVOS DE IMPRESIN

DIAGRAMA DE FLUJO Y PSEUDOCODIGO

AS/400

Pgina 64

EJEMPLO:

DESCRIPCION DEL PROGRAMA


SE NECESITA UN PROGRAMA EN RPG PARA CONSULTAR LA DIRECCION Y TELEFONO DE LOS
CLIENTES.

IDENTIFICACION DE ARCHIVOS
DDS DEL ARCHIVO DE CLIENTES
** ARCHIVO FISICO: CLIENTES
R REGCLI
NUMCLI
6 0
NOMBRE
30
DIRECC
15
TELEF
7 0
TIPOCL
3
LIMICR
8 0
STATUS
1
K NUMCLI

BIBLIOTECA: RPGLIB

Operaciones con archivos


SETLL (Set Lower Limit)
El comando setll es usado para posicionar el apuntador en un registro buscado, el
apuntador se posicionara arriba del registro que sea igual o mayor a la llave dada como
parmetro de busqueda.
Sintaxis
Factor 1
KEY

OpCode
SETLL

Factor2
FILE REG.

Hi
In

Lo

Eq
In

Existen dos formas de usar el SETLL


- Se puede usar para posicionar y verificar que el apuntador se posicione antes del
primer registro que sea igual a la llave
Ejemplo
Factor 1
IMKY01

OpCode
SETLL

Factor2
I4101

Hi

Lo

Eq
71

El indicador 71 se activara si al hacer el SETLL se encuentra un registro que sea igual


al argumento de busqueda (IMKY01)

AS/400

Pgina 65

Posiciona el apuntador antes del registro que sea mayor o igual al argumento de
bsqueda y con el indicador en el Hi verifica que se cumpla esta condicin
Ejemplo

Factor 1
IMKY01

OpCode
SETLL

Factor2
I4101

Hi
72

Lo

Eq

En este caso es al revs el indicador se activara si ningn registro es mayor o igual a la


llave
- Se pueden usar ambos indicadores al mismo tiempo si asi se necesita
Ejemplo
Factor 1
IMKY01

OpCode
SETLL

Factor2
I4101

Hi
72

Lo

Eq
71

Por ejemplo si tuvieramos los siguientes valores para la llave IMKY01


23
1) si IMKY01=60
30
2) si IMKY01=35
60
3) si IMKY01=90
70
80
85
Para el caso 1
1) indicador 71 se activa
2) indicador 71 no se activa
3) indicador 71 no se activa

AS/400

Para el caso 2
1) indicador 72 no se activa
2) indicador 72 no se activa
3) indicador 72 se activa

Pgina 66

SETGT
Posiciona el apuntador antes de el primer registro que sea mayor a la llave dada
Sintaxis
Factor 1
KEY

OpCode
SETGT

Factor2
FILE REG.

Hi
In

Lo

Eq
In

KEY.- es la llave que se va a usar para posicionar el apuntador en el registro buscado


FILE REG.- nombre del archivo o registro al que se le va hacer el SETGT
Factor 1
IMKY01

OpCode
SETGT

Factor2
I4101

Hi

Lo

Eq

Hi

Lo

Eq

READ
Hace una lectura secuencial al archivo
Sintaxis
Factor 1

OpCode
READ

Factor2
File Reg.

File Reg.- nombre del File o registro que se va a leer


Ejem.
Factor 1

OpCode
READ

Factor2
I41021

Hi

Lo

Eq

READE
Es parecido al read, con la diferencia de que lee solo los registros que sean iguales a la
llave. El indicador se prendera cuando el registro leido no sea igual a la llave dada
cuando se llegue al fin del archivo
Sintaxis
Factor 1
Key

OpCode
READE

Factor2
File Reg.

Hi

Lo

Eq
81

KEY.- es la llave que se va a usar para posicionar el apuntador en el registro buscado


FILE REG.- nombre del archivo o registro al que se le va hacer el READE
Ejem.
Factor 1
IMITM

OpCode
READE

Factor2
I4101

Hi

Lo

Eq
81

Suponiendo que el valor de IMITM=1542 y que el archivo I41021 estuviera llaveado


por IMITM solo van a leer los registros del F4101 cuyo IMITM sea igual a 1542, y el
indicador 81 se prendera cuando ya no sean iguales los registros a la llave buscada.
El READE casi siempre se maneja en conjunto con el SETLL, para primero posicionar
el apuntador y luego ir leyendo los registros que sean iguales a la llave especificada.
AS/400

Pgina 67

READP
Lee el registro anterior, al que esta posicionado actualmente, hace una lectura regresiva
Sintaxis
Factor 1

OpCode
READP

Factor2
File Reg.

Hi

Lo

Eq
81

OpCode
READP

Factor2
I4101A

Hi

Lo

Eq
81

Ejem.
Factor 1

Por ejemplo si el registro en el que se encuentra actualmente


45
50
al hacerle el READP
52
en el que se encuentra actualmente
60

CHAIN
Posiciona y lee el registro que cumpla con la llave dada, este comando es utilizado para
hacer una busqueda directa.
El indicador se activara cuando no se encuentre ningn registro que cumpla con la llave,
si indicador esta apagado quiere decir que se encontr el registro, lo lee y se posiciona
en el primer registro que cumpla con la llave.
Sintaxis
Factor 1
Key

OpCode
CHAIN

Factor2
File Reg.

Hi

Lo

Eq
81

KEY.- es la llave que se va a usar para posicionar el apuntador en el registro buscado


FILE REG.- nombre del archivo o registro al que se le va a hacer el CHAIN
Ejem.
Factor 1
LIKY01

AS/400

OpCode
CHAIN

Factor2
I41021

Hi

Lo

Eq
81

Pgina 68

Operacines aritmticas:
ADD
Operacin de suma
Sintaxis
Factor 1
Valor1

OpCode
ADD

Factor2
Valor2

Resultado

Factor2
Valor

Resultado

Resultado= Valor1 + Valor2


Factor 1

OpCode
ADD

Resultado= Resultado + Valor


Ejem.
Factor 1
Precio

OpCode
ADD

Factor2
Iva

CantT

15

NOTA: hay que definir los campos de trabajo en este caso CantT se definio como un
campo nmerico de 15 enteros con 2 decimales, solo es necesario definirlos una vez, el
campo de Precio e Iva deben haber estado definidos si no provenian de ningn archivo.

SUB
Operacin de resta
Sintaxis
Factor 1
Valor1

OpCode
SUB

Factor2
Valor2

Resultado

Factor2
Valor1

Resultado

Resultado= Valor1 Valor2

Factor 1

OpCode
SUB

Resultado= Resultado Valor1


Valor1.- Cantidad a restar
Valor2.- Cantidad a la que se le va a restar
Resultado.- variable donde quedara el resultado
Ejem.
Factor 1
CantInv

AS/400

OpCode
SUB

Factor2
CantVend

CantRest

15

Pgina 69

MULT
Operacin de multiplicacin
Sintaxis
Factor1
Valor1

OpCode
MULT

Factor2
Valor2

Resultado
Resultado

Len
15

Dec
0

Resultado

Len
15

Dec
0

Resultado= Valor1 * Valor2

Factor1

OpCode
MULT

Factor2
Valor1

Resultado= Resultado * Valor1


Nota: el campo de Resultado debe estar definido, es decir hay que especificar que sea
nmerico, su longuitud y nmero de decimales

DIV
Operacin de divisin
Sintaxis
Factor1
Valor1

OpCode
DIV

Factor2
Valor2

Resultado
resultado

Len
15

Dec
0

Resultado

Len
15

Dec
0

Result
Cant_Div

Len
15

Dec
2

Resultado= Valor1/ Valor2


Factor1

OpCode
DIV

Factor2
Valor1

Resultado= Resultado/Valor1
Factor1
Cant1

OpCode
DIV

Factor2
5

Cant_Div = Cant1/5= 450.2/5= 90.04


SQRT
Raz cuadrada
Factor1 OpCode Factor2
Resultad Len Dec
SQRT
Valor
resultado 15 0
Valor.- cantidad a la que se le va a sacar la raz cuadrada
Ejem.
Factor1

OpCode
SQRT

Factor2
100

Resultad
RazC

Len
15

Dec
0

RazC= 10

AS/400

Pgina 70

Mover Datos
Z-ADD
La operacin Z-ADD sirve para inicializar el campo de resultado con el valor del
factor1, esta operacin solo es valida para campor numricos
Sintaxis
Factor1

OpCode
Z-ADD

Factor2
Valor2

Resultad
Resultado

Len
15

Dec
0

Valor2= cantidad con la que se va a inicializar el campo de resultado


Ejem.
Factor1

OpCode
Z-ADD

Factor2
500

Resultad
Cant

Len
15

Dec
0

Quedaria
Cant= 500
Nota: ambos deben ser de tipo numrico, con el Z-ADD no se utiliza el factor1

MOVE
Esta operacin es utilizada para mover datos y alinearlos a la derecha, la operacin
MOVE transfiere los caracteres del factor 2 al campo de resultado . el movimiento
empieza con el carcter que esta ms a la derecha del factor 2.
Sintaxis
Factor1

OpCode
MOVE

Factor2
Campo2

Resultad
Campo3

Len
20

Dec

Hay varias maneras en que se pueden mover los datos con move a continuacion se dan
algunos ejemplos para el move
Caso1
Cuando ambos campos son de tipo carcter y el campo de resultado es ms largo que el
factor 2
Ejem
ANTES
Factor2=

F I

L E

Resultado=

S O F T W A R E

DESPUES
Resultado= S O F T F I L E
Caso 2

AS/400

Pgina 71

Cuando ambos campos son de tipo nmerico y el campo de resultado es ms largo que
el factor 2
ANTES
Factor2=
7 8 9
Resultado= 1 2 3 4 5 6
DESPUES
Resultado= 1 2 3 7 8 9

Caso 3
El factor 2 es nmerico y el campo resultado es tipo carcter y es ms largo que el
factor2
ANTES
Campo1=

2 3 4

Campo2=

u n o d o s

DESPUES
Campo2= u n o 2 3 4

Caso 4
Ambos campos son de tipo carcter solo que el campo de resultado es ms corto que el
factor2
ANTES
Factor2=
u n o d o s
Resultado=

t r e s

DESPUES
Resultado=

o d o s

Caso 5
Ambos campos son numericos el campo resultado es ms corto que el factor2
ANTES
Campo1=

u n o d o s

Campo2=

t r e s

DESPUES
Campo2=
MOVEL

o d o s

AS/400

Pgina 72

La operacin MOVEL transfiere los caracteres del factor2 al campo de resultado,


empieza a mover los caracteres de izquierda a derecha del factor 2 al campo de
resultado.
La forma en que mueve los caracteres es muy parecida a la del MOVEL solo que al
revs empieza a mover de izquierda a derecha.
Estos son algunos ejemplos
Caso 1
El campo resultado es ms largo que el del factor2, ambos campos son de tipo carcter
ANTES
Factor2=
F I LE
Resultado= S O F T W A R E
DESPUES
Resultado= F I L E W A R E
Caso 2
El campo resultado es ms largo que el del factor2, ambos campos son de tipo numerico
ANTES
Factor2=
1 2 3 4
Resultado= 5 6 7 8 9 0 1 2
DESPUES
Resultado= 1 2 3 4 9 0 1 2
Los dems ejemplos son parecidos a los vistos en el move solo que en lugar de alinear
el campo del factor2 a la derecha lo alinea a la izquierda al utilizar el movel
MOVEA
Mueve todos los campos de un arreglo a una variable
Sintaxis
Factor1 OpCode
MOVEA

Factor2
Resultad Len Dec
NomArregl VarResult Lon
o
g

Por ejemplo si tenemos un arreglo llamado NAME de longuitud 10 tipo caracter y se


quiere mover a una variable llamada alumno de la misma longuitud y tipo.

AS/400

Pgina 73

NAME
E
1

D
2

Factor1

G
3

A
4

R
5

OpCode
MOVEA

O
7

M
8

Factor2
NAME

A
9

R
10

Resultad
Alumno

Len
10

Dec

Al hacer el MOVEA quedara:


Alumno= EDGAR OMAR
Condicionales y Ciclos

IFxx
Condicin IFxx, es un condicional para realizar determinada accin o no
Sintaxis
Factor1
OpCode Factor2
Campo1 Ifxx
Campo2
{Operac
ELSE
{Operac
ENDIF

Resultad

Len

Dec

Campo1.- campo que se va a comparar


xx.- tipo de comparacin, pueden ser: EQ,NE,GE,GT,LE,LT
Campo2.- variable o valor con el que se comparara
Tambin se pueden adicionar los operadores lgicos AND y OR
Sintaxis
Factor1
Campo1

OpCode Factor2
IFxx
Campo2
ANDxx
Orxx
{Operac
ENDIF

Resultad

Len

Dec

OpCode
IFEQ
ANDNE
MOVE
ELSE
MOVE
ENDIF

Dec

Ejem
Factor1
$DOC
$CANT

AS/400

Factor2
PA
0
A

Resultad

Len

CLIEN

CLIEN

Pgina 74

CASxx
Este comando permite hacer una seleccin de la subrutina a ejecutar; si se cumple la
comparacin entre el factor1 y el factor2, la subrutina especificada en el campo
resultante es ejecutada.
Sintaxis
Factor1
Campo1

OpCode
CASxx

Factor2
Campo2

Resultad
NomSubrutina

Len

Dec

OpCode
CASEQ

Factor2
b

Resultad
Baja

Len

Dec

Ejem.
Factor1
Mov

CABxx
Este comando permite hacer una comparacin entre el factor1 y el factor2; si esta
comparacin resulta verdadera el programa mandara el control al TAG asociado con la
etiqueta especificada en el campo resultante
Sintaxis
Factor1
Campo1

OpCode
CABxx

Factor2
Campo2

Resultad
Etiqueta

Len

OpCode
CABEQ

Factor2
1

Resultad Len
Alta

Dec

Ejem.
Factor1
Mov

Dec

DO
Inicia y procesa un grupo de operaciones y se llevan acabo tantas veces como se
especifique en el contador o variable
Sintaxis
Factor1

OpCode Factor2
Resultad
DO
Cte. Var
{Operac
ENDDO

Len

Dec

OpCode Factor2
DO
10
Add
2
ENDDO

Resultad

Len

Dec

Sum

ejem
Factor1

Estar sumando 2 a Sum hasta que sean 10 veces, que es lo que se especifico

AS/400

Pgina 75

DOWxx
Este ciclo se va a llevar acabo mientras la condicin especificada para este ciclo sea
verdadera
Sintaxis
Factor1
Campo1

OpCode Factor2
DOWxx Campo2
{Operac
ENDDO

Resultad

Len

Dec

Campo1.- campo que se va a comparar


xx.- tipo de comparacin, pueden ser: EQ,NE,GE,GT,LE,LT
Campo2.- variable o valor con el que se comparara
Factor1
ILMCU

OpCode
DOWEQ
WRITE
ENDDO

Factor2
01
I5701

Resultad

Len

Dec

EXSR
Manda ejecutar una subrutina, puede ser ejecutada desde el men principal o de
cualquier otra subrutina que la mande ejecutar.
Sintaxis
Factor1

OpCode
EXSR

Factor2
NomRutina

Resultad Len

Dec

NomRutina.- nombre de la subrutina que se va a ejecutar

BEGSR ENDSR
El begsr marca el inicio de una subrutina y con el endsr se cierra el bloque de la
subrutina
Sintaxis
Factor1
Precios

OpCode
BEGSR
Bloque
De la
Rutina
ENDSR

Factor2

Resultad Len

Dec

EXFMT
Permite enviar y leer un formato de pantalla
Sintaxis
Factor 1

AS/400

OpCode
EXFMT

Factor2
NomPantalla

Hi

Lo

Eq

Pgina 76

GOTO,TAG
El Goto permite variar el flujo de un programa, al llegar a el Goto Etiqueta manda el
control del programa a donde se encuentra la etiqueta especificada en el Goto. Esto se
hace con el TAG Etiqueta que marca la parte del programa a donde se mandara el
control del programa cuando se ejecute el GOTO.
Sintaxis
Factor1

OpCode
GOTO
{cuerpo
{del pgm
TAG

Factor2
Etiqueta

Resultad Len

Dec

Etiqueta

Actualizacin de Registros
UPDAT
Actualiza los cambios hechos a un registro
Sintaxis
Factor1

OpCode
UPDAT

Factor2
NomRegistro
Archivo

Resultad Len

Dec

Nota: primero hay que posicionar el apuntador en el registro que se desea actualizar
Si en el factor 2 se especifica el nombre de un formato de pantalla, la operacin
UPDATE actualiza los datos de la pantalla .
ejem
Factor1

OpCode
UPDAT

Factor2
V01200

Resultad Len

Dec

DELET
Borra el registro en que esta posicionado actualmente el apuntador
Sintaxis
Factor1

AS/400

OpCode
DELET

Factor2
NomRegistro
Archivo

Resultad Len

Dec

Pgina 77

WRITE
Escribe un registro nuevo en el archivo especificado, para esto el archivo en el que se
desea escribir debe estar declarado en la hoja F una A en la columna de Adicin.
Sintaxis
Factor1

OpCode
WRITE

Factor2
NomRegistro
o File

Resultad Len

Dec

OpCode
WRITE

Factor2
I4111

Resultad Len

Dec

ejem
Factor1

Si en el factor 2 se especifica el nombre de un formato de pantalla, la operacin WRITE


escribe ese formato en la pantalla .
Si en el factor 2 se especifica el nombre de un formato de impresora, la operacin
WRITE imprime ese formato.
ejem
Factor1

OpCode
WRITE

Factor2
Heading

Resultad Len

Dec

Definicin de llaves
KLIST
Define una llave compuesta, se utiliza para declarar una lista de campos llave (KFLD).
Esta lista puede ser usada como argumento de busqueda.
Los KFLDs son los campos que forman la llave como campos de archivos, valores fijos
o variables; pueden ser de uno a ms campos.
Sintaxis
Factor1
OpCode
NomKey KLIST
KFLD
KFLD
KFLD

Factor2

Resultad Len

Dec

Campo1
Campo2
Campo3

NomKey .- nombre con el que se identificara la llave, este es el nombre con el cual se
llamara la llave para una busqueda.
Campo13.- son los campos que forma a esta llave
Ejem.
Factor1

OpCode

Factor2

LIKY01

KLIST
KFLD
KFLD
KFLD

LIMCU
LILOCN
LIITM

Resultad

Len

Dec

Parmetros
PLIST
AS/400

Pgina 78

Define un nombre nico para la lista de parmetros que recibir o pasara el programa, al
ser ejecutado o mandado ejecutar con la operacin CALL
Sintaxis
Factor1
OpCode
*ENTRY PLIST
PARM

Factor2

PARM
PARM

Resultad

Len

Dec

Parmetro1

Lon1

#de
c

Parmetro2
Parmetro3

Lon2
Lon3

PARM.- Define cada uno de los parmetros que componen la lista de parmetros del
programa
Lon1..n.- longuitud de cada uno de los parmetros y tipo

CALL
Manda llamar un programa para ser ejecutado, si el programa al que va a ser llamado
requiere que le sean pasado parmetros se especificaran aqu, al mandarlo ejecutar con
el comando CALL
Sintaxis
Factor1

OpCode
Move
Movel

Movel
CALL
PARM
PARM

PARM

Factor2
Dato1
Dato2

Daton
Programa

Resultad
ParaEntr1
ParaEntr2

ParaEntrn

Len

Dec

ParaSal1
ParaSal2

ParaSaln

Dato1..n .- son los datos de entrada que requiere el programa que se esta llamando para
ejecutado
ParaEnt1..n.- nombres de los parmetros, pueden ser iguales o no, lo que si es
importante es el oreden en que son dados, deben ser en el mismo orden en que son
especificados en el programa llamado y del mismo tipo.
ParaSal1..n .- son los parmetros que regresa el programa.

OPEN
Comando para abrir un archivo
Sintaxis
Factor1 OpCode Factor2 Resultad
OPEN
Archivo

Len Dec

CLOSE
Cierra un archivo abierto

AS/400

Pgina 79

Sintaxis
Factor1

OpCode
CLOSE

Factor2
Archivo

Resultad

Len

Dec

SETOF
Apaga los indicadores especificados en el Hi,Lo,Eq le asigna el valor de 0 al indicador
Sintaxis
Factor 1

OpCode
SETOF

Factor2

Hi
In

Lo
In

Eq
In

OpCode
SETOF

Factor2

Hi
82

Lo

Eq

Ejem
Factor 1

SETON
Operacin para activar los indicadores contenidos en Hi,Lo,Eq le asigna el valor de 1 al
indicador.
Sintaxis
Factor 1

OpCode
SETON

Factor2

Hi
In

Lo
In

Eq
In

OpCode
SETON

Factor2

Hi

Lo
81

Eq

Ejem
Factor 1

Manejo de Arreglos
LOKUP
Hace una bsqueda a un arreglo o tabla
Sintaxis
Factor 1
Argumento

OpCode Factor2
LOKUP Arreglo tabla

Hi

Lo

Eq
In

Argumento.- elemento del arreglo o tabla buscado


Arreglo tabla.- nombre del arreglo o tabla donde se va a hacer la bsqueda
El indicador se prendera cuando el argumento de busqueda sea encontrado en el arreglo
o tabla especificado en el factor 2

AS/400

Pgina 80

Ejem.
Factor 1
500

OpCode Factor2
LOKUP Precios

Hi

Lo

Eq
81

El arreglo de precios contiene los sig elementos


100
300
500
800
:
en este caso el indicador 81 se prendera, ya que el valor 500 si existe en el arreglo
XFOOT (Cross Foot an Array)
La operacin XFOOT suma todos los elementos de el arreglo nmerico especificado en
el factor2 y deja la suma en el campo resultado
Sintaxis
Factor1

OpCode
XFOOT

Factor2
Arreglo

Resultad
VarResul

Len Dec
Long #dec

OpCode
XFOOT

Factor2
ArreIva

Resultad
Suma

Len
15

Ejem
Factor1

Dec
2

Manejo de Cadenas
CAT
Une dos cadenas de caracteres en una sola
Sintaxis
Factor1
String1

OpCode
CAT

Factor2
String2

Resultad
StringRes

Len
20

Dec

String1 .- es el primer campo que se va a concatenar


String2.- segundo campo string que se unira con el primero
StringRes.- es la cadena de caracteres resultante que quedara da la unin de ambos
campos
Ejem.
Factor1
Nom1

OpCode
CAT

Factor2
Nom2

Resultad
Nombre

Len
20

Dec

Nom1= Maria
Nom2=Cristina
Al concatenar de esta manera quedaria asi:
Nombre= Maria Cristina

AS/400

Pgina 81

O si se quiere que al concatenar quite los espacios, o deje solo algunos la sintaxis es
Factor1
String1

OpCode
CAT

Factor2
String2:n

Resultad
StringRes

Len
20

Dec

Len
20

Dec

n.- nmero de espacios entre los string


Ejem.
Factor1
Nom1

OpCode
CAT

Factor2
Nom2:1

Resultad
Nombre

Nom1= Maria
Nom2=Cristina
Al concatenar de esta manera quedaria asi:
Nombre= Maria Cristina

SCAN (Scan String or Array)


La operacin SCAN checa la variable tipo carcter o arreglo especificado en el factor2
con el argumento especificado en el factor1. Si el argumento fue encontrado, la posicin
del el primer carcter de el argumento es pasado al campo resultante. Si un arreglo
numerico es especificado como el campo resultante, cada ocurrencia del argumento
encontrado en factor2 es pasado en un correspondiente elemento del arreglo.
Sintaxis
Factor1
Argumento:1

OpCode
SCAN

Factor2
NomVar

Resultad
Posicion

Len Dec
Long #Dec

Argumento.- cadena de caracteres a buscar


NomVar.- variable o campo donde se buscara el argumento
Posicin.- nombre de la variable donde se regresa la posicin donde encuentra al
argumeto (la primera letra de izq. a derecha)
Long. #Dec.- atributos del cammpo resultante
Ejem
Factor1
Apellido:1

OpCode
SCAN

Factor2
Name

Resultad
ResPos

Len
1

Dec
0

Apellido= Gu
Name=Pablo Guzmn
Al hacer el SCAN
ResPos=7

AS/400

Pgina 82

AS/400

Pgina 83

AS/400

Pgina 84

AS/400

Pgina 85

AS/400

Pgina 86

AS/400

Pgina 87

AS/400

Pgina 88

AS/400

Pgina 89

AS/400

Pgina 90

El lenguaje de control es:


Es nico interface consistente para todas las funciones del sistema,Con un CLP
podemos controlar programas de aplicacin.

INTERACTIVO
 PALABRA CALVE O POSICIONAL
 CON SOLOCITUD (PROMPT)
COMPILABLE
 RAPIDO
 LOGICA POTENTE
 MANEJO DE ERRORES
 MANIPULACION DE DATOS
 INTERFACE CON PANATALLA Y DB.
DISEO PARA CONTROLAR EL FLUJO DE UNA APLICACIN.
PGM (opcional)
DCLF (
archivo)
DCL (variables)
MONMSG
IF
ELSE
SNDRCVF
[PROGARMA]
SNDMSG
CHGVAR
MONMSG
GOTO TOP
ENDPGM(optional)

Reglas de codificacin
Nombre de variable.- Para almacenar y actualizar datos y recibir parmetros.
Debe empezar con el carcter &.
Dos puntos (:)._ Separa la etiqueta del mandato
Blancos. Separa los parmetros de un mandato.
Parntesis ( ) .- Separa las palabras claves y valores.
Diagonal (/). Conecta las partes de nombres calificados.
Apstrofe .- Al comienzo y al final de una serie de caracteres en comillas, tal
como ALL.

DCLF declaracin de archivo, este comando sirve para declarar archivos

AS/400

Pgina 91

DCL
Toda las variable en un cl siempre se declara con el carcter & antes del nombre de la
variable.
DCL VAR (&NAME) TYPE ( ) LEN ( ) VALUE ( )
TYPE( )
*DEC

*CHAR

*LGL

LEN ( )
VALUE( )
Por deafult (15 Default (0)
5)
Maximo (15
9)
Default
Default (0)
(32)
Maximo
(9999)
1 Default (0)

Ejemplo:
(2) DCL &A *LGL
VALUE (1)
(2) DCL &B *CHAR 5
ABCD
(3) DLC &c *DEC (5 2) 543.21
CHGVAR.
Este comando nos permite cambiar valores a:
Constantes
Otras variable
Expresiones
Conversin entre valores decimales y de caracteres.
CHGVAR VAR (CL- variable) VALUE (expresin)
Ejemplos de CHRVAR
1.- CHGVAR &MONT 37.2
2.- CHGVAR &NAME TOM SMITH
3._ CHGVAR &CODE A
4.- CHGVAR &COUNT (&CONTEO + 1)
5.- CHGVAR &IN20 (&IN10 *OR &IN15)
6.- CHGVAR &IN99 (&OPCION = 90)
7.- CHGVAR &AMT ((&PRECIO. & DESCUENTO /0 * & CANT)

AS/400

Pgina 92

Usar CHGVAR para cambiar tipo de datos, en un CL podemos cambiar el tipo de dato
que tengamos de un valor numrico a carcter o viceversa.

CHARVAR VAR (&A) VALUE(&A)


Variable carcter &A
Longitud ResultadoConvertido

Variable Decimal &A


Longitud Valor Especificado

7
7
7

5.2
5.2
5.2

0023.00
-003.90
-123.67

23.00
-3.90
-123.67

CHARVAR VAR (&A) VALUE(&A)


Variable decimal &A
Longitud ResultadoConvertido

Variable Carcter &A


Longitud Valor Especificado

5.2
5.0
5.2

10
10
10

123.00
123
-123.00

bb+123.1bb
bbb+123.000
-123bbbbbb

Mas acerca de cambiar variable, CHGVAR


Podemos Trabajar con parte de una variable de caracteres usando %SST
Recuperar o cambiar, todo o parte de local data rea.
Uso de los interruptores de trabajo como una variable lgica.
%SUBSTRING O %SST FUNCIN INTEGRADA
Identifica parte de una variable de caracteres o *LDA

( *LDA

%SS

]- Posicion-inicial longitud )

nombre variable

Contenido de la variable o *LDA :


1 2 3 ....

X= posicin inicial.
Y= longitud.
CHGVAR VAR (&PART) VALUE (%SST(&WHOLE 5 10 ))
CHGVAR VAR (%STT (&WHOLE 5 10)) VALUE (&PART)

AS/400

Pgina 93

Ejemplo de %SUBSTRING
ANTES &NAME: DAVE
CHGVAR VAR(%SUBSTRING(&NAME 4 2)) VALUE(ID)
DESPUS &NAME: DAVID
ANTES &DATA: ABCDE12345
&NAME: DAVE
CHGVAR VAR(&NAME) VALUE(%SST(&DATA 2 1))
DESPUS &NAME: B

ejemplo 2
usar una variable para posicin inicial
PGM
DCL VAR (&TEAM) TYPE(*CHAR) VALUE (ABCDEFGHIJKL)
DCL VAR(&LIB) TYPE (*CHAR) LEN (6) VALUE (IWLIBX)

CONCATENACION
Serie2

Resultad
o
Serie
Serie

Serie2

Serie
b

A B b

*CA
T
*TCA
T

A B C

*BCAT Serie2

ABC

*BCA
T

Serie1

A b

b
Serie2

Ejemplo de concatenacin:
Cliente XYZ corporacin, numero de cuentea 54321, su crdito vencido por 30 das.
&CUSNAME &CUSNUMALPH &DAYSALPH
PGM
DCL &CUSNAME
*CHAR 25 XYZ CORPORATION
DCL &CUSNUM
*DEC (5 0)
DCL &CUSNUMALPH
*CHAR 5
DCL &DAYS
*DEC
30
DCL &DAYSALPH
*CHAR 3
CHGVAR &DAYSALPH
&DAYS
CHGVAR &CUSNUMALPH &CUSNUM
SNDMSG MSG(Cliente *Bcat & cusname + CUSNUMALPH + *CAT , numero de
cuenta
*BCAT & c

AS/400

Pgina 94

CONDICION
Cuando deseamos condicionar un programa CL solo puede ejecutar un comando o una
etiqueta despus de la condicin.
IF COND ( exprecion ) THEN (comando)
ELSE CMD(comando)
Operadores relacionales :

<
=
>
<=
_<
_>
>=
_=

Operadores relacionales
*LT Menor que
*EQ Igual
*GT Mayor que
*LE Menor igual
*NL No menor
*NG No mayor
*GE Mayor igual
*NE No igual o distinto

Ejemplo :
1.- IF COND (&RESP * EQ 5 ) THEN ( CALL PGM (CUSING))
2.- IF (&AMTDUE > ) THEN ( CALL ARC900)
3.- IF (&AMTDUE *GT 1000) SENBRKMSG MSG (HOLA)
ELSE CDM (GOTO LABEL3)
4.- IF (&A *NE &b) RETURN
5.- IF (&A = &B)
ELSE RETURN
6.- IF (&IN99) GOTO ENDLABEL
Otra forma de usar el IF para que ejecute mas de una lnea se utiliza la siguiente
sentencia
IF COND (condicin) THEN (DO)
CALL PGM1
CALL PGM2
END DO
ELSE CMD (DO)
CALL PGM3
CALL PGM4
ENDDO

Mandato de conversin de fecha, cvtdat


Cvtdat date (constannte o variable cl) tovar( variable CL)
Fromfmt *JOB
*SYSVAL
*MDY
TOFMT
*YMD
SEPARADOR
AS/400

*JOB
*SYSVAL
*MDY
*DMY

*JOB
*SYSVAL
TOSEP
*NONE
*CARCTER

Pgina 95

*JUL

AS/400

*JUL

Pgina 96

EJEMPLO CVTDAT
PGM
DCL VAR (&DATE) TYPE (*CHAR) LEN(6)
DCL VAR (& YMRD) TYPE (*CHAR) LEN(6)
RTVSYSVAL SYSVAL(QDATE) TOVAR(&YRMD) +
FORMFTM(*SYSVAL) TO FMT(*YMD) TOSEP (*NONE)
CALL PGM(PYC50) PARM(&YRMD)
....
....
....
ENDPGM
MONMSG
Este comando se utiliza para supervisar mensajes de error dentro de un
programa
Ejemplo: Disponibilidad de archivo.
ALCOBJ OBJ((PRLIB/PRMST *FILE *EXCL) WAIT(0)
MONMDG MSGID(CPF1002) EXEC(SNDURSMSG MSG(ARCHIVO +
PLANILLAS EN USO) TOMSGQ(*EXT)
...
...
...
DLCOBJ OBJ((PRLIB/PRMST * FILE *EXCL))
Ejemplo de algunos mensajes de eerro que pueden ser supervisado
ALCOBJ
CPF1002
CPF1040
CPF1085
CPF5739

No puede asignar objetos.


Numero maximo de objetos asignados en el sistema
Objetos no asignados
No puede asignarse o liberar archivo(S) DDM

Mandato para supervisar mensaje


MONMSG MSGID() CMPDTA9) EXEC()
MSGID- requerido
MSGID (MCH1211)
solo este mensaje.
MSGID (CPF1500)
CPF1500 - CPF1599
MSGID (CPF0000)
CPF0000 - CPF9999
MSGID (CPF9999)
Error de funcion: se activa por mensaje de
Escape no supervisados
CMPDTA (Opcional)
Ejemplo
MONMSG MSGID(CPF2182) CMPDTA(PLALIB)
EXEC (Opcional)
Mandato CL

AS/400

Pgina 97

MONMSG: Nivel programa, nivel de mandato


Pgm
DCL
DCL
DCL
MONMSG
Nivel de programa
MONMSG
compruebe aqu si el mensaje esta supervisado
MONMSG
Supervisin de todos los mandatos de programa
NO EXEC: ignore
MONMSG
MONMSG

Nivel de mandato
Compruebe aqu primero si el mensaje esta supervisado
Supervisar solo el mandato anterior.
NO EXEC: ignore.

ENDPGM
Ejemplo de supervisar mensajes
Comprobar existencia y autorizacin de un objeto
CHKOBJ OBJ (nombre-objeto) +
OBJTYPE(CPF- tipo-de-objeto) + AUT(derecho-de automatizacin)
Ejemplo:
1 CHGOBJ OBJ(IWLIB/APR010 OBJTYPE(*PGM) /* existencia*/
MONMSG..............
2 CHKOBJ OBJ(APPVEND) OBJTYPE(*PGM) + /* existencia*/
MBR(APPVAND) AUTO(*DLT) /*y autorizacion*/
MONMSG............
Ejemplo de supervisar mensajes
PGM
DCL...
/*NVEL DE PROGRAMA
MONMSG CPF9801 EXCE(GOTO NO ENCONT)
MONMSG CPF7302
/* FIN NIVEL DE PROGRAMA
CHKOBJ PYPMAST *FILE
CHKOBJ GLPMAST *FILE
DE NUEVO: CRTPF QTEMP/WORK.....
MONMSG CPF7302 EXEC (DO)
DTLF QTEMP/WORK
GOTO DE NUEVO
ENDDO
CRTPF PLALIB/PYPTRAN
GOTO FIN
NO ENCONT: SNDURSMSG TOMSGQ(*EXT) MSG( NO ENCUENTRA EL
ARCHIVO+ CHECAR LISTA DE BILBIOTECA DE LA SESIOBN0
FIN: ENDPGM

AS/400

Pgina 98