Hola Sergi, por lo que comentas entiendo que el *PGM est� correctamente
enlazado con la �ltima versi�n de *MODULE que tienes. Y el problema lo
tienes en que no puedes ver el debug?
En modalidad de debug haz DSPMODSRC y te mostrar� el fuente que est�s
debugando, por omisi�n el *EntryPoint del *PGM, con F14=Trabajar con lista
de m�dulos puedes seleccionar los fuentes de otros m�dulos del mismo
programa o de otros programas y a�adirle break-points.
Si est�s haciendo un trace con F10, para ver lo que sucede en el interior
de los m�dulos has de apretar F22=Ejecuci�n pasos internos y entonces te
vas pasando por los fuentes de todos los m�dulos.
Bueno no se si me he explicado bi�n, bueno de hecho no se ni si te he
entendio y estoy respondiendo a lo que tu preguntas... me falta otro caf� ;
-)
fins aviat....
�lex Corretg�
"Sergi Yague" <[EMAIL PROTECTED]>@QUIJOTE.COMBIOS.ES con fecha 23/10/2002
17:46:33
Por favor, responda a [EMAIL PROTECTED]
Tram�s per: [EMAIL PROTECTED]
Destinataris: <[EMAIL PROTECTED]>
C�pia:
Classificat: |----------------|
| ( ) Important |
| ( ) urgent |
| ( ) hist�ric |
| ( ) temporal |
| ( ) bretolada |
| ( ) particular |
|----------------|
Assumpte: RE: Llamada entre dos Procedimientos ILE.
Lo he montado de la siguiente manera:
El primer programa es temporal, es de tipo *PGM creado con un CRTBNDRPG =
y lo unico que hace es pasar por parametro al primer modulo "A" las =
sentencias SQL.
/COPY NEWAPLICA/QPROTOSRC,PTCABDET
DSENTENCIA S 100A
DRETORN S 1A
*
*
C EVAL SENTENCIA =3D 'SELECT CPENUCPED, =
CPCLIEPED, +
C CPNPECPED, CPNOMEPED +
C FROM NEWAPLICA/PFCABEPEDI'
C EVAL RETORN =3D PR_CABDET(SENTENCIA)
C EVAL *INLR =3D *ON
=1A
El modulo "A" muestra un fichero de cabeceras en un subfichero. Lo he =
creado con un CRTSQLRPGI con *MODULE. Como retorna un parametro la =
llamada el modulo "B" la hago con una asignaci=F3n.
MODULA "A"
********************************************************
* 20/10/2002 Sergi. *
* PGM PARA MOTRAR TODAS LAS CABECERAS DEL FICHERO *
* PFCABEPEDI Y POR CADA CABECERA MUESTRA EL DETALLE *
* DEL FICHERO PFDETAPEDI. *
********************************************************
HDATEDIT(*DMY/) BNDDIR('DIENLACE01')
*
FPTCABDET CF E WORKSTN
F SFILE(SFLSFL:NRR)
F INDDS(Indicadores)
*
/COPY NEWAPLICA/QESTRUCSRC,ESINDICADO
D ActivarPagi N OVERLAY(Indicadores:80)
D Noizq N OVERLAY(Indicadores:82)
D Noder N OVERLAY(Indicadores:83)
D DeleteSfl N OVERLAY(Indicadores:91)
D HayRegSfl1 N OVERLAY(Indicadores:97)
D HayRegSfl3 N OVERLAY(Indicadores:98)
D Arriba N OVERLAY(Indicadores:17)
D Abajo N OVERLAY(Indicadores:18)
D MostrarPie N OVERLAY(Indicadores:66)
*
D NRR S 5S 0
D SSQL S 100A
/COPY NEWAPLICA/QPROTOSRC,PTCABDET
/COPY NEWAPLICA/QPROTOSRC,PTCABDET1
PPR_CABDET B EXPORT
DPR_CABDET PI 1A
D SentenciaSql 100A VALUE
*
D PPSALIR S 1A INZ('N')
*
C/EXEC SQL PREPARE S1 FROM :SentenciaSql
C/END-EXEC
*
C/EXEC SQL
C+ DECLARE CUR1 DYNAMIC SCROLL CURSOR FOR S1
C/END-EXEC
*
* BLOQUE PRINCIPAL
*
C MOVEL *BLANKS XLIBXFIL 20
C MOVEL *BLANKS PMBR 10
C EXSR DLTSFL
C EXSR OBRECURFIT
C EXSR LLEGIRFIT
C EXSR TANCARFI
C IF NRR > 0
C EVAL HayRegSfl1 =3D *ON
C ELSE
C EVAL HayRegSfl1 =3D *OFF
C ENDIF
C EVAL MOSTRARPIE =3D *ON
C WRITE PIE
C EXFMT SFLCTL
C DOW NOT Salir
C IF MdtoSistema
C CALL 'QUSCMDLN'
C ENDIF
C EXSR TRATASFL3
C IF PPSALIR =3D 'S'
C LEAVE
C ELSE
C WRITE PIE
C EXFMT SFLCTL
C ENDIF
C ENDDO
C RETURN 'A'
*
* Fin de programa
*
C MOVE *ON *INLR
********************************************************
* Subrutina para declarar cursor para PFCABEPEDI *
********************************************************
C OBRECURFIT BEGSR
*
C/EXEC SQL
C+ OPEN CUR1
C/END-EXEC
*
C ENDSR
********************************************************
* Subrutina para cargar los registros recuperados *
********************************************************
C LLEGIRFIT BEGSR
C DO 9999
C/EXEC SQL
C+ FETCH NEXT FROM CUR1 INTO :PPENUCPED,
C+ :PPCLIEPED,
C+ :PPNPECPED,
C+ :PPNOMEPED
C/END-EXEC
C SQLSTT IFEQ '02000'
C LEAVE
C ENDIF
*
C* EVAL PPENUCPED =3D WPENUCPED
C* EVAL PPCLIEPED =3D WPCLIEPED
C* EVAL PPNPECPED =3D WPNPECPED
C* EVAL PPNOMEPED =3D WPNOMEPED
C ADD 1 NRR
C WRITE SFLSFL
*
C ENDDO
*
C ENDSR
********************************************************
* Subrutina para cerrar los cursores utilizados *
********************************************************
C TANCARFI BEGSR
C/EXEC SQL
C+ CLOSE CUR1
C/END-EXEC
C ENDSR
**********************************************************
* Subrutina para tratar selecci=A2n detalle de una CABECERA*
**********************************************************
C TRATASFL3 BEGSR
*
C READC SFLSFL =
95
C EVAL PPSALIR =3D 'N'
C DOW NOT *IN95 AND PPSALIR =3D 'N'
C IF PSELEC =3D 'X'
C EXSR SENTENCIES
C EVAL PPSALIR =3D PR_CABDET1(SSQL)
C ELSE
C LEAVE
C ENDIF
C EVAL Anterior =3D *OFF
C EVAL PSELEC =3D ' '
C UPDATE SFLSFL
C READC SFLSFL =
95
C ENDDO
C ENDSR
********************************************************
* Subrutina para cerrar los cursores utilizados *
********************************************************
C SENTENCIES BEGSR
C
C
C EVAL SSQL =3D 'SELECT DPENPEPED, =
DPNUMFPED,+
C DPCODPPED, DPCANTPED, DPPRECPED, +
C DPIMPOPED, DPDTOCPED, DPCONCPED, +
C DPFOPAPED, DPIVAAPED FROM +
C NEWAPLICA/PFDETAPEDI WHERE +
C PPENUCPED =3D DPENUCPED'
C ENDSR
********************************************************
* Subrutina para inicializar el subfichero *
********************************************************
C DLTSFL BEGSR
C IF NRR > 0
C EVAL DeleteSfl =3D *ON
C Z-ADD 0 NRR 5 0
C WRITE SFLCTL
C EVAL DeleteSfl =3D *OFF
C ENDIF
C ENDSR
PPR_CABDET E
=1A
Para cada cabecera el modulo "B" muestra su detalle en otro subfichero.
Esta creado de la misma manera que el modulo "A". Al pasarle el debug, =
no consigo ver el modulo "B". La unica manera de poder ver los dos =
mudulos es llamando el modulo "B" con un CALLB, lo que passa es que el =
parametro no se passa correctamente. =09
=09
Modulo "B"=20
********************************************************
* 20/10/2002 Sergi. *
* PGM PARA MOTRAR TODAS LAS CABECERAS DEL FICHERO *
* PFCABEPEDI Y POR CADA CABECERA MUESTRA EL DETALLE *
* DEL FICHERO PFDETAPEDI. *
********************************************************
*
F*IFICHERO IF E K DISK USROPN
F* EXTFILE(XLIBXFIL) =
EXTMBR(PMBR)
FPFDETAPEDIIF E K DISK
FPTCABDET CF E WORKSTN
F SFILE(SFLSFL2:NRR2)
F INDDS(Indicadores)
D NRR2 S 5S 0
/COPY NEWAPLICA/QESTRUCSRC,ESINDICADO
D ActivarPagi N OVERLAY(Indicadores:80)
D Noizq N OVERLAY(Indicadores:82)
D Noder N OVERLAY(Indicadores:83)
D DeleteSfl N OVERLAY(Indicadores:91)
D HayRegSfl2 N OVERLAY(Indicadores:98)
D Arriba N OVERLAY(Indicadores:17)
D Abajo N OVERLAY(Indicadores:18)
D MostrarPie N OVERLAY(Indicadores:65)
*
/COPY NEWAPLICA/QPROTOSRC,PTCABDET1
PPR_CABDET1 B EXPORT
DPR_CABDET1 PI 1A
D SentenciaSql 100A VALUE
*
D WPENPEPED S 7S 0
D WPNUMFPED S 7A
D WPCODPPED S 7A
D WPCANTPED S 5S 0
D WPPRECPED S 8S 2
D WPIMPOPED S 11S 2
D WPDTOCPED S 5S 2
D WPCONCPED S 4A
D WPFOPAPED S 2A
D WPIVAAPED S 5S 2
*
D PSALIR S 1A
*
* BLOQUE PRINCIPAL
*
C MOVEL *BLANKS XLIBXFIL 20
C MOVEL *BLANKS PMBR 10
C*** EVAL XLIBXFIL =3D 'NEWAPLICA/PFDETAPEDI'
C*** EVAL PMBR =3D 'PFDETAPEDI'
C* OPEN MIFICHERO
C EXSR OBRECURFIT
C EXSR LLEGIRFIT
C EXSR TANCARFI
C IF NRR2 > 0
C EVAL HayRegSfl2 =3D *ON
C ELSE
C EVAL HayRegSfl2 =3D *OFF
C ENDIF
C IF NOT SALIR AND NOT ANTERIOR
C IF HAYREGSFL2
C EXSR TRATASFL3
C ENDIF
C WRITE PIE
C EXFMT SFLCTL2
C IF MdtoSistema
C CALL 'QUSCMDLN'
C ENDIF
C ENDIF
C IF SALIR
C EVAL PSALIR =3D 'S'
C ENDIF
C EXSR DLTSFL
C RETURN PSALIR
*
* Fin de programa
*
C MOVE *ON *INLR
********************************************************
* Subrutina para declarar cursor para PFDETAPEDI *
********************************************************
C OBRECURFIT BEGSR
*
C/EXEC SQL PREPARE S1 FROM :SentenciaSql
C/END-EXEC
*
C/EXEC SQL
C+ DECLARE CUR2 DYNAMIC SCROLL CURSOR FOR S1
C/END-EXEC
*
C/EXEC SQL
C+ OPEN CUR2
C/END-EXEC
*
C ENDSR
********************************************************
* Subrutina para cargar los registros recuperados *
********************************************************
C LLEGIRFIT BEGSR
C DO 9999
C/EXEC SQL
C+ FETCH NEXT FROM CUR2 INTO :WPENPEPED,
C+ :WPNUMFPED,
C+ :WPCODPPED,
C+ :WPCANTPED,
C+ :WPPRECPED,
C+ :WPIMPOPED,
C+ :WPDTOCPED,
C+ :WPCONCPED,
C+ :WPFOPAPED,
C+ :WPIVAAPED
C/END-EXEC
C SQLSTT IFEQ '02000'
C LEAVE
C ENDIF
*
C EVAL PPENPEPED =3D WPENPEPED
C EVAL PPNUMFPED =3D WPNUMFPED
C EVAL PPCODPPED =3D WPCODPPED
C EVAL PPCANTPED =3D WPCANTPED
C EVAL PPPRECPED =3D WPPRECPED
C EVAL PPIMPOPED =3D WPIMPOPED
C EVAL PPDTOCPED =3D WPDTOCPED
C EVAL PPCONCPED =3D WPCONCPED
C EVAL PPFOPAPED =3D WPFOPAPED
C EVAL PPIVAAPED =3D WPIVAAPED
C ADD 1 NRR2
C WRITE SFLSFL2
*
C ENDDO
*
C ENDSR
********************************************************
* Subrutina para cerrar los cursores utilizados *
********************************************************
C TANCARFI BEGSR
C/EXEC SQL
C+ CLOSE CUR2
C/END-EXEC
C ENDSR
**********************************************************
* Subrutina para tratar selecci=A2n detalle de una *
**********************************************************
C TRATASFL3 BEGSR
*
C READC SFLSFL2 =
95
C DOW NOT *IN95
C IF PSELEC =3D 'X'
C* CALL 'PGDETALLE'
C IF NOT SALIR
C EVAL Anterior =3D *OFF
C EVAL PSELEC =3D ' '
C UPDATE SFLSFL2
C READC SFLSFL2 =
95
C ELSE
C LEAVE
C ENDIF
C ENDIF
C ENDDO
C ENDSR
********************************************************
* Subrutina para inicializar el subfichero *
********************************************************
C DLTSFL BEGSR
C IF NRR2 > 0
C EVAL DeleteSfl =3D *ON
C Z-ADD 0 NRR2 5 0
C WRITE SFLCTL
C EVAL DeleteSfl =3D *OFF
C ENDIF
C ENDSR
PPR_CABDET1 E
=1A
=BFCu=E1l debo utilizar? =BFcallB? =BFLa asignaci=F3n? Os recuerdo que =
los dos modulos primero los cree como tipo *PGM, y estan bien probados y =
funcionan. Siento enviar los fuentes, y una explicaci=F3n tan larga, =
pero es que estoy deseperado y fustrado.
Muchas gracias por las molestias.
_____________________________________________________
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:forum.help400-request@;combios.es?body=LEAVE
_____________________________________________________
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:forum.help400-request@;combios.es?body=LEAVE