Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Algunas instruccion en CobolWOW DIEGO RM/COBOL 9 21 de agosto de 2020 22:40
[Sintaxis] Instruccion LIMIT de SQL en DBControl Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 1 5 de julio de 2015 16:56
[Sintaxis] Duda sobre STRING e INSPECT Anthony AcuCobol 2 9 de abril de 2015 20:18

Respuesta

  #1
Antiguo 6 de abril de 2016, 20:04
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Guiño Instrucción INSPECT
0 Inactivo Inactivo

Tengo la siguiente la variable WS-SQL, que vale

SELECT * FROM CLIENTES WHERE CLICOD BETWEEN ...

Como lo único que sé seguro que hay en es variable es la palabra CLIENTES, quiero asegurarlo para que no me de error el programa y utilizo la siguiente instrucción:

Código COBOL:
  1. INSPECT WS-SQL TALLYING CONTA FOR LEADING "CLIENTES" BEFORE INITIAL "S".

Pero la variable CONTA, siempre vale 0, como es una instrucción que hace mucho que no uso, no le pillo el punto :o :o , ¿alguien sabe qué estoy haciendo mal?, he probado poniendo y quitando la sentencia BEFORE INITIAL ... y cambiándola por AFTER INITIAL ..., pero hace lo mismo e internet, no me aclara mucho.

Muchas gracias.
Josber is offline   Responder Con Cita
  #2
Antiguo 6 de abril de 2016, 20:39
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Josber Ver Mensaje
BEFORE INITIAL "S"
¿Por qué le pones "S"? Es por eso que no lo encuentra



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 6 de abril de 2016, 20:40
Hrmcobol
Guardián del Foro
Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por implicación en la vida del Foro 
Última Actividad 01.03.2022 02:59
Posts Posts: 323
Likes enviados Enviados: 102
Likes recibidos Recibidos: 120

Hola Amigo, Esto uso Yo

Código COBOL:
  1.  01 HMS.
  2.     02 HM-TEXTO  PIC X(300).
  3.     02 HM-CPO    PIC 9(006).
  4.  
  5.  
  6.      MOVE SPACES              TO HM-TEXTO
  7.      MOVE ZEROS               TO HM-CPO
  8.      MOVE "Text" OF STX-MOBRA TO HM-TEXTO
  9.      INSPECT HM-TEXTO TALLYING HM-CPO FOR ALL ";".
  10.      INSPECT HM-TEXTO TALLYING HM-CPO FOR ALL '"'.
  11.      INSPECT HM-TEXTO TALLYING HM-CPO FOR ALL "'".
  12.      IF HM-CPO NOT = ZEROS
  13.         INVOKE POW-SELF "DisplayMessage"
Hrmcobol is offline   Responder Con Cita
  #4
Antiguo 7 de abril de 2016, 00:28
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

Josber,

Do manual "Programers Guide":

An initial value must be assigned to identifier-2 prior to execution of the INSPECT statement.

O identifier-2 é o teu CONTA.

Experimenta inicializar o campo conta com 0 ou com 1.


e também :

If identifier-1, identifier-3 occupies the same storage area as identifier-2, the validity of the result of execution of the INSPECT statement is undefined.

O identifier-3 é o teu "CLIENTES". O identifier-1 é o teu WS-SQL
Tens que verificar como estão definidos os campos.
Cria um campo
01 CLISTR PIC X(08) VALUE "CLIENTES" e faz o inspect assim:

Código COBOL:
  1. INITIALIZE CONTA.
  2. INSPECT WS_SQL TALLYING CONTA FOR LEADING CLISTR BEFORE INITIAL "S"

Espero que ajude.
Rui
Rapinto is offline   Responder Con Cita
  #5
Antiguo 7 de abril de 2016, 09:26
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de Kuk Ver Mensaje
¿Por qué le pones "S"? Es por eso que no lo encuentra
Kuk, eso es para que empiece desde el principio, lo primero que hay siempre será una S, y que encuanto encuentre la cadena, deje de inspeccionar.

Rapinto, Tampoco funciona así como indicas tú, sigue devolviendo 0 en CONTA

Al final he cambiado LEADING por ALL como indica Hrmcobol, y ya funciona perfectamente.

Como curiosidad, el verbo INSPECT, no tiene un final de instrucción del tipo END-INSPECT, como pasa con la mayoría ...

Muchas gracias a todos.
Josber is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:22.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.