Professional Documents
Culture Documents
Separata
TALLER DE APLICACIONES
ISERIES/400
2010
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.
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
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:
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
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.
AS/400
Pgina 8
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
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
ENDPGM
AS/400
Pgina 19
ENDPGM
Pgina 20
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 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')
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)
ENDPGM
AS/400
Pgina 22
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)
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.
*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
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.
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
AS/400
REGCLI
CODCLI
PATCLI
MATCLI
NOMCLI
DIRCLI
TELCLI
FECNAC
CODCLI
5A
10A
10A
10A
30A
7S00
8A
Pgina 27
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
AS/400
Pgina 31
14
Pgina 32
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
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
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:
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
Descripcin
Caracteres
Pgina 36
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 37
AS/400
Pgina 38
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 39
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 40
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
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 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.
Pgina 44
AS/400
Pgina 45
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
AS/400
Pgina 47
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 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 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
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
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
AS/400
Pgina 54
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
<=
=
<>
FACTOR1
TEXTO
OPERADOR
DSPLY
FACTOR2
RESULTADO
VARIABLE
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
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 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
AS/400
Pgina 59
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
AS/400
Pgina 63
PROGRAMA DE
CONSULTA DE
CLIENTES
ARCHIVO DE
CLIENTES
IDENTIFICACION DE PANTALLAS
AS/400
Pgina 64
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
FILE REG.
Hi
In
Lo
Eq
In
OpCode
SETLL
Factor2
I4101
Hi
Lo
Eq
71
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
OpCode
SETLL
Factor2
I4101
Hi
72
Lo
Eq
71
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
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.
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
OpCode
READE
Factor2
I4101
Hi
Lo
Eq
81
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
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
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
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
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
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 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
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
Factor2
Resultad Len Dec
NomArregl VarResult Lon
o
g
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
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
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
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
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
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
AS/400
Pgina 80
Ejem.
Factor 1
500
OpCode Factor2
LOKUP Precios
Hi
Lo
Eq
81
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
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
OpCode
CAT
Factor2
Nom2:1
Resultad
Nombre
Nom1= Maria
Nom2=Cristina
Al concatenar de esta manera quedaria asi:
Nombre= Maria Cristina
OpCode
SCAN
Factor2
NomVar
Resultad
Posicion
Len Dec
Long #Dec
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
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.
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.
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
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
*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
AS/400
Pgina 97
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