|
Yo, en
vista de las instrucciones que has indicado pondría CRMSIC(4:10) Not = Clave1 y T-LNK-PRE(P) not
= Clave2 en la PERFROM THRU.
Son
los datos que esta usando en el posicionaminento, oh ¿son OGDEAP= CRMSIC(4:10) y OGR6CF =
T-LNK-PRE(P).
Espero
haber ayudado.
Saludos
SAIDI,
Luis
A. Lumbreras
-----Mensaje
original----- De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]En nombre de
Edgardo Enviado el: jueves, 10 de junio de 2004
13:04 Para: [EMAIL PROTECTED] Asunto: Re: Instrucción
START en Cobol/400
como esta no veo error, pero para
asegurarme cambiaria lo siguiente:
ACCESS MODE IS SEQUENTIAL.
----- Original Message -----
Sent: Thursday, June 10, 2004 11:57
AM
Subject: Instrucción START en
Cobol/400
Hola:
me está despistando el START y READ NEXT para un
fichero que tiene 3 claves y solo sé el valor de las 2 primeras y la tercera
es una fecha.
Bien, os muestro el estado del
tema:
Registro-1 Clave1: 16908
Clave2: ES 00057 Clave3:
2004-05-15 Registro-2 Clave2: 16908
Clave2: ES 00058 Clave3: 2004-05-15
Las sentencias Cobol son
las siguientes:
SELECT LKIC3OG3 ASSIGN TO
DATABASE-LKIC3OG3
ORGANIZATION IS
INDEXED
RECORD KEY IS EXTERNALLY-DESCRIBED-KEY
WITH
DUPLICATES
ACCESS IS
DYNAMIC.
--------------------------------------------------------------------- 03
EXISTE-OG PIC X.
88 SI-EXISTE-OG VALUE B"1". 88 NO-EXISTE-OG
VALUE B"0". 03 FIN-OG PIC
X.
88 SI-FIN-OG VALUE B"1". 88
NO-FIN-OG VALUE B"0".
------------------------------------------------------------------------------- 9100-SITUAR-OG.
MOVE "1" TO
EXISTE-OG.
START LKIC3OG3 KEY NOT < EXTERNALLY-DESCRIBED-KEY
INVALID MOVE "0" TO
EXISTE-OG.
9100-SITUAR-OG-X.
EXIT.
9110-LEER-OG.
MOVE "0" TO
FIN-OG.
READ LKIC3OG3 NEXT AT END MOVE "1" TO
FIN-OG. 9110-LEER-OG-X.
EXIT.
---------------------------------------------------------------------------
MOVE CRMSIC(4:10) TO
CLAVE1
MOVE T-LNK-PRE(P) TO
CLAVE2
MOVE "0001-01-01" TO
CLAVE3
PERFORM 9100-SITUAR-OG THRU 9100-SITUAR-OG-X IF
SI-EXISTE-OG
PERFORM 9110-LEER-OG THRU 9110-LEER-OG-X
PERFORM
UNTIL
SI-FIN-OG
OR OGDEAP NOT =
CLAVE1
OR OGR6CF NOT =
CLAVE2 PERFORM 2200-DESCRIP THRU
2200-DESCRIP-X
END-PERFORM
END-IF
-----------------------------------------------------------------
Bueno,
pués del START el switch me dice que ha encontrado algo donde posicionarse
ya que lo hace por NOT < (es decir mayor o igual). Al hacer el READ
NEXT, curiosamente me lee el segundo registro y no el primero que pensaba
que era el registro MAYOR (debido a la fecha leída). Entonces no me
cumple la tercera condición del PERFORM.
Yo que vengo de programar en
RPG, con SETLL y READ, y con claves parciales hay cosas del Cobol que no
comprendo.
¿Me podéis ayudar?
Muchas gracias de
antemano.
Francisco Rubio Enríquez Analista Cibernos
Consulting, SAU
-- Disclaimer
------------------------------------ Ce message ainsi que les eventuelles
pieces jointes constituent une correspondance privee et confidentielle a
l'attention exclusive du destinataire designe ci-dessus. Si vous n'etes pas
le destinataire du present message ou une personne susceptible de pouvoir le
lui delivrer, il vous est signifie que toute divulgation, distribution ou
copie de cette transmission est strictement interdite. Si vous avez recu ce
message par erreur, nous vous remercions d'en informer l'expediteur par
telephone ou de lui retourner le present message, puis d'effacer
immediatement ce message de votre systeme. *** This e-mail and any
attachments is a confidential correspondence intended only for use of the
individual or entity named above. If you are not the intended recipient or
the agent responsible for delivering the message to the intended recipient,
you are hereby notified that any disclosure, distribution or copying of this
communication is strictly prohibited. If you have received this
communication in error, please notify the sender by phone or by replying
this message, and then delete this message from your
system.
_____________________________________________________ Forum.HELP400
es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los
derechos reservados http://www.help400.es _____________________________________________________
Para
darte de baja, envía el mensaje resultante de pulsar mailto:[EMAIL PROTECTED]
|