Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Separata
TALLER DE APLICACIONES
ISERIES/400
2012
Prof. Ing. Alberto Moreno
AS/400
Pgina 1
INDICE
SQL EMBEBIDO
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.
AS/400
Pgina 3
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).
Pgina 5
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
.
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
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
AS/400
Pgina 7
JOB
Trabajo
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.
AS/400
Pgina 8
Donde:
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.
AS/400
Pgina 9
*USER.- Usuario
*SYSOPR.- Operador del Sistema
*PGMR.- Programador
*SECADM.- Administrador de Seguridad
*SECORF.- Responsable de Seguridad
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
AS/400
Pgina 11
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.
AS/400
Pgina 12
Valor a usar
*EXCLUDE
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
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.
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
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
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
AS/400
Pgina 17
Luego pulsamos [Enter], para poder ver el estado del sistema, tal como la
siguiente pantalla.
AS/400
Pgina 18
AS/400
Pgina 19
Pgina 20
f) Displayar mensajes
g) trabajar con el Spool
h) Borrar cola de mensaje
i ) displayar el perfil de Usuario
Trabajar con miembros de la QCLPSRC
AS/400
Pgina 21
Utilitarios.
Los utilitarios te permiten crear ciertos archivos tales como Pantallas,
Programas, Tablas, Comandos, Reportes, ETC.
AS/400
Pgina 22
Pgina 23
AS/400
Pgina 24
AS/400
Pgina 25
Para Insertar lnea solo tienes que usar el mandato a nivel de lnea I, como se
muestra en la siguiente figura.
Luego pulsar [ENTER], para que te inserte una linea en blanco, como en la
Luego si quieres seguir insertando, sigue los pasos anteriores.
Para copiar una linea debes de utilizar el mandato a nivel de lnea C, tal como
la siguiente figura.
AS/400
Pgina 26
Pgina 27
Ahora si quieres seguir cambiando de nuevo la serie Instituto por INST, solo
tienes que pulsar la tecla [F17], para realizar de nuevo el cambio, tal como se
muestra en la siguiente figura.
ENDPGM
AS/400
Pgina 28
ENDPGM
Pgina 29
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)
PARM(&USER)
VAR(&USER) TYPE(*CHAR) LEN(7)
MSG('HOLA') TOUSR(&USER)
MSGID(CPF2469) EXEC(DO)
MSG('LA COLA DE MENSAJES NO EXISTE')
AS/400
Pgina 30
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')
PARM(&OP)
VAR(&OP) TYPE(*CHAR) LEN(1)
COND(&OP = '1') THEN(DO)
DSPSYSVAL QDATE
ENDDO
ELSE
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)
AS/400
Pgina 31
ENDPGM
Ejecucin: CALL CLP005 PARM(1)
Ejemplo6: CLP006
PGM
DCL
DCL
DCL
DCL
INICIO:
IF
GOTO FIN
ENDDO
ELSE
CHGVAR
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))
DSPMSG
MSGQ(&USER)
CHGVAR
VAR(&POS) VALUE(&POS + 1)
GOTO INICIO
ENDDO
FIN:
ENDPGM
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
AS/400
Pgina 32
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.
*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)
AS/400
Pgina 33
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)
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.
7
7
7
5.2
5.2
5.2
0023.00
-003.90
-123.67
23.00
-3.90
-123.67
5.2
5.0
5.2
10
10
10
123.00
123
-123.00
bb+123.1bb
bbb+123.000
-123bbbbbb
( *LDA
%SS
]- Posicion-inicial longitud )
nombre variable
AS/400
Y
Pgina 34
X= posicin inicial.
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 35
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
AS/400
REGCLI
CODCLI
PATCLI
MATCLI
NOMCLI
DIRCLI
TELCLI
FECNAC
CODCLI
5A
10A
10A
10A
30A
7S00
8A
Pgina 36
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 .
AS/400
Pgina 37
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 38
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.
AS/400
Pgina 39
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
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
AS/400
Pgina 40
Pgina 41
14
AS/400
Pgina 42
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
Pgina 43
*USER
5=Work with
6=Release
User
Type
-----Status-----
MTY02
MTY09
BATCH
BATCH
OUTQ
ACTIVE
MTY09
BATCH
JOBQ
CMD-
AS/400
Pgina 44
TRABAJO 2
Se tiene Las siguientes tablas de un sistema de Infraccin
Policia
PF
Infraccin Pf
codPol
P001
P002
P003
P004
nomPol
JOse Diaz
Dany Alva
Patricia Donayre
Aba Vega
codinf
I001
I002
I003
I004
Descripcion
Luz Roja
Sin Semaforos
Mal estacionado
Sin cinturon
Vehiculo
V0001
V0002
V0003
V0004
Multa
200
150
80
90
Papeletas
Rene Cristobal
Juan Alonaca
Luis Ramirez
Ruth Mendoza
Datsun
Hundai
Toyota
Nissan
10001
10002
10003
10004
10005
P001
P002
P003
P004
P005
V0002
V0001
V0002
V0001
V0001
I001
I002
I001
I003
I002
Descripcin:
- Un vehculo puede cometer una o varias infracciones
- Hay un registro Infracciones donde se almacena las tarifas por cada
infraccin
- En la tabla papeleta , hay un nmero que identifica a la papeleta ,
adems se tiene que colocar la identificacin del polica , la placa del
vehculo y el cdigo de infraccin que ha cometido el vehiculo
Crear los siguientes objetos:
a) Creacin de los fiscos
b) Llenar datos de manera consistentes
c) Creacin del lgico 6 puntos (para el siguiente captulo)
d) Creacin de un lgico simple ordenado por nombre del propietario del
vehiculo.
e) Que lgico de unin empleara para realizar la siguiente consulta.
Fecha 99/99/99
Consulta de Papeletas xVehiculo
Placa XXXXXXXX
(se ingresa por teclado)
Nombre del Propietario xxxxxxxxxxxxxxxxxxxxxxxxxxxxx Modelo de auto xxxxxxxx
Papeleta
Codinf Descripcion
Multa Id.Poli
XXXXX
AS/400
XXXX
XXXXXXXXXXXXX
xxxxx
XXXXXXXXXXXXX
Pgina 45
2.- Contestar las siguientes preguntas de forma clara y precisa (cada pregunta
vale 1 punto)
a) Cual es la diferencia entre un miembro y objeto.
b) Diferencia entre un fsico de datos y fsico fuente y lgico
c) Que entiende por perfil de usuario
d)Cambiar la cola de mensajes
e) Que significa spool
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.
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:
AS/400
Pgina 46
Descripcin
Caracteres
Pgina 47
JFILE(A1 A2 )
JOIN(A1 A2)
JFLD
JREF(N)
RANGE
VALUES
COMP
SST
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
AS/400
Pgina 48
AS/400
Pgina 49
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
Pgina 50
Solo tienes que ingresar los parmetros 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 51
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 52
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
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
AS/400
Pgina 53
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.
Donde:
AS/400
Pgina 54
Pgina 55
AS/400
Pgina 56
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 57
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 58
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 59
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.
AS/400
Pgina 60
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.
Nota: para modificar un campo solamente tienes que colocar el cursor en el campo
a modificar y pulsar [F23], y luego [F10]
AS/400
Pgina 61
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 62
AS/400
Pgina 63
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 64
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
AS/400
Pgina 65
RPGIV
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 66
LE
EQ
NE
<=
=
<>
FACTOR1
TEXTO
OPERADOR
DSPLY
FACTOR2
RESULTADO
VARIABLE
C
C
FACTOR1
AS/400
OPERADOR
EVAL
FACTOR2
RESULTADO
VARIABLE=EXPRESION
Pgina 67
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
MENSAJES
*NORMALMENTE:
*ANOMALA:
SINTAXIS CORRECTA.
SINTAXIS NO CORRECTA
(CORREGIR ERRORES).
EJECUCION DE UN PROGRAMA
Solo se pueden ejecutar programas cuyo mensaje sean NORMALMENTE
CALL
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 68
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 69
AS/400
Pgina 70
AS/400
Pgina 71
AS/400
Pgina 72
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 73
AS/400
Pgina 74
PROGRAMA DE
CONSULTA DE
CLIENTES
ARCHIVO DE
CLIENTES
AS/400
Pgina 75
IDENTIFICACION DE PANTALLAS
AS/400
Pgina 76
EJEMPLO:
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
OpCode
SETLL
Factor2
REG1
Hi Lo Eq
71
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
AS/400
Pgina 77
Ejemplo
Factor 1
IMKY01
OpCode
SETLL
Factor2
I4101
Hi Lo Eq
72
Para el caso 2
1) indicador 72 no se activa
2) indicador 72 no se activa
3) indicador 72 se activa
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
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.
AS/400
OpCode
READ
Factor2
I41021
Hi
Lo
Eq
Pgina 78
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
OpCode
READE
Factor2
I4101
Hi
Lo
Eq
81
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
Pgina 79
Factor 1
Key
OpCode
CHAIN
Factor2
File Reg.
Hi
Lo
Eq
81
OpCode
CHAIN
Factor2
I41021
Hi
Lo
Eq
81
Operacines aritmticas:
ADD
Operacin de suma
Sintaxis
Factor 1
Valor1
OpCode
ADD
Factor2
Valor2
Resultado
Factor2
Valor
Resultado
OpCode
ADD
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
Factor 1
OpCode
SUB
Pgina 80
Factor 1
CantInv
OpCode
SUB
Factor2
CantVend
CantRest
15
MULT
Operacin de multiplicacin
Sintaxis
Factor1
Valor1
OpCode
MULT
Factor2
Valor2
Resultado
Resultado
Len
15
Dec
0
Resultado
Len
15
Dec
0
Factor1
OpCode
MULT
Factor2
Valor1
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
OpCode
DIV
Factor2
Valor1
Resultado= Resultado/Valor1
Factor1
Cant1
OpCode
DIV
Factor2
5
OpCode
SQRT
Factor2
100
Resultad
RazC
Len
15
Dec
0
RazC= 10
AS/400
Pgina 81
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
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 82
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 34
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 83
Factor2
Resultad Len Dec
NomArregl VarResult Lon
o
g
AS/400
Pgina 84
NAME
E
1
D
2
G
3
A
4
R
5
O
7
M
8
A
9
R
10
Resultad
Alumno
Len Dec
10
IFxx
Condicin IFxx, es un condicional para realizar determinada accin o no
Sintaxis
Factor1
OpCode
Factor2
IF
{Operac
ELSE
{Operac
ENDIF
condicion
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
AS/400
OpCode
CABxx
Factor2
Campo2
Resultad
Etiqueta
Len
Dec
Pgina 85
Ejem.
Factor1
Mov
OpCode
CABEQ
Factor2
1
Resultad Len
Alta
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
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
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
Pgina 86
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
OpCode
EXFMT
Factor2
NomPantalla
Hi
Lo
Eq
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 .
AS/400
Pgina 87
ejem
Factor1
OpCode
UPDAT
Factor2
V01200
Resultad Len
Dec
DELET
Borra el registro en que esta posicionado actualmente el apuntador
Sintaxis
Factor1
OpCode
DELET
Factor2
NomRegistro
Archivo
Resultad Len
Dec
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
ejem
Factor1
OpCode
Factor2
WRITE
NomRegistro
o File
OpCode
Factor2
WRITE
Reg1
Resultad
Resultad
Len
Len
Dec
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
AS/400
Pgina 88
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
LIKY0 KLIST
1
KFLD
KFLD
KFLD
LIMCU
LILOCN
LIITM
Parmetros
PLIST
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
AS/400
OpCode
Move
Movel
Factor2
Dato1
Dato2
Resultad
ParaEntr1
ParaEntr2
Len
Dec
Pgina 89
Movel
CALL
PARM
PARM
PARM
Daton
Programa
ParaEntrn
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
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
AS/400
Pgina 90
Manejo de Arreglos
LOKUP
Hace una bsqueda a un arreglo o tabla
Sintaxis
Factor 1
OpCode
Factor2
Argumento
LOKUP
Arreglo tabla
Hi
Lo
Eq
In
LOKUP
Precios
81
Ejem
Factor1
OpCode
XFOOT
Factor2
Arreglo
Resultad
VarResul
Len
Long
Dec
#dec
OpCode
XFOOT
Factor2
ArreIva
Resultad
Suma
Len
15
Dec
2
Manejo de Cadenas
AS/400
Pgina 91
CAT
Une dos cadenas de caracteres en una sola
Sintaxis
Factor1 OpCode Factor2
String1 CAT
String2
Len
20
Dec
Nom1= Maria
Nom2=Cristina
Al concatenar de esta manera quedaria asi:
Nombre= Maria Cristina
Sintaxis
Factor1
AS/400
OpCode
Factor2
Resultad
Len
Dec
Pgina 92
Argumento:1
SCAN
NomVar
Posicion
Long
#Dec
OpCode
SCAN
Factor2
Name
Resultad
ResPos
Len
1
Dec
0
Apellido= Gu
Name=Pablo Guzmn
Al hacer el SCAN
ResPos=7
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
AS/400
Pgina 93
AS/400
Pgina 94
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 95
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.
7
7
7
5.2
5.2
5.2
0023.00
-003.90
-123.67
23.00
-3.90
-123.67
5.2
5.0
5.2
11
10
10
123.00
123
-123.00
bb+123.1bb
bbb+123.000
-123bbbbbb
( *LDA
%SS
]- Posicion-inicial longitud )
nombre variable
X= posicin inicial.
Y= longitud.
CHGVAR VAR (&PART) VALUE (%SST(&WHOLE 5 10 ))
CHGVAR VAR (%STT (&WHOLE 5 10)) VALUE (&PART)
AS/400
Pgina 96
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
Resultad
o
Serie
Serie
1
2
A
Serie
B
2
A
b
B b
*CA
T
*TCA
T
A
D
A
b
B C
*BCAT Serie2
ABC
D
*BCA
T
Serie1
Serie2
Serie2
b
Serie2
b
Serie2
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 97
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
*JOB
*SYSVAL
*MDY
*DMY
*JOB
*SYSVAL
TOSEP
*NONE
*CARCTER
Pgina 98
*JUL
*JUL
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
sistema
CPF1085
CPF5739
Pgina 99
EXEC (Opcional)
Mandato CL
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 100