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

Responder a