Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Cocina Casera
Cocina Casera Código para diferentes compiladores, creado por nuestros foreros, probado y listo para usar.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[PowerCOBOL + COM/OLE] Ligar ao Site da União Europeia VAT Number Rapinto Cocina PowerCOBOL 22 7 de septiembre de 2022 10:19
[Compilador] Chave NetCobol v11 - serial number LUIZ ANTONIO DE OLIVEIRA NetCOBOL 1 5 de enero de 2019 15:58
[Componente] Gerar QR Code Paulo PowerCOBOL (ActiveX, v4 - v11) 4 9 de noviembre de 2018 17:18
[Sintaxis] Capturar Puerto Serial Juanes RM/COBOL 2 19 de julio de 2016 12:03
[Noticia] Comando Impresion serial Roger PowerCOBOL (ActiveX, v4 - v11) 3 20 de enero de 2016 18:01

Respuesta

  #1
Antiguo 31 de agosto de 2018, 09:51
Paulo
Forero Senior
Última Actividad 17.09.2026 16:22
Posts Posts: 101
Likes enviados Enviados: 25
Likes recibidos Recibidos: 33
Predeterminado Gerar Serial Number
0 Inactivo Inactivo

Olá a todos.
Alguém tem ou pode indicar uma rotina para gerar um numero de série a partir de uma string ?
Gracias
Paulo is offline   Responder Con Cita
  #2
Antiguo 31 de agosto de 2018, 16:40
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

Citación del post de Paulo Ver Mensaje
Olá a todos.
Alguém tem ou pode indicar uma rotina para gerar um numero de série a partir de uma string ?
Gracias
O que eu já fiz:
Achar o valor decimal de cada caractere da string, multiplicar por por um numero fixo ou pela data.
mas há muitas outras formas, tudo depende da complexidade que se quer por nesse numero de série e qual o objectivo.
Num caso concreto o resultado da string multipliquei pelo numero de série do disco rígido.

Se o objectivo é segurança ainda se pode fazer algo do tipo:
Código COBOL:
  1. 01 b x(100).
  2. .
  3. .
  4. .
  5. inspect b converting
  6. "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" to
  7. "BCDEFGHIJKLMNOPQRSTUVWXYZ0123456789A"


Jose Manuel
Joseg is offline   Responder Con Cita
  #3
Antiguo 31 de agosto de 2018, 22:19
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Hola:

Tambien podes redefinir el string y hacer distintos cálculos para encontrar una clave, que cuando la quieras controlar volves a realizar la misma rutina y comparar si te da el mismo resultado.

Código COBOL:
  1. 01  nombre                   pic x(100).
  2. 01  redefines nombre.
  3.     02 letra                 pic 9999 comp-4 occurs 100 times
  4. 01  suma                     pic 9(8).
  5. 01  ii                       pic 999.

Por ejemplo podrías hacer una rutina parecida a ésta:

Código COBOL:
  1.      move zeros           to suma.
  2.      perform varying ii from 1 by 2 until ii > 100
  3.         compute suma = suma + letra(ii) + (ii / 6)
  4.      end-perform.
  5.      perform varying ii from 2 by 2 until ii > 100
  6.         compute suma = suma + letra(ii) + (ii / 3)
  7.      end-perform.

Cualquier tipo de cálculo, para el caso es lo mismo. Y te va a dar un valor en la variable "suma" que es la que tenés como serial.

Saludos.


Fito...
Fito is offline   Responder Con Cita
  #4
Antiguo 1 de septiembre de 2018, 09:59
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Joseg, yo en tu versión haría algo así:

Código COBOL:
  1.  inspect b converting
  2.      "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" to
  3.      "HC79QWH8J52IBOZFRST6VGXYP01L34KUDMEA"

Pero además hay un punto, que es que los literales de guardan en el binario/ejecutable tal cual. Es decir, con un editor hexadecimal se podría fácilmente extraer las correspondencias.

Para que esto no pase, habría que construir cada "churro" vía cálculos, algo tipo esto:

Código COBOL:
  1.      01  CHURRO-1                PIC X(37).
  2.      01  CHAR                    PIC X(2).
  3.      01  BYTE REDEFINES CHAR     PIC 9(2) COMP-5.
  4.      
  5.      PROCEDURE DIVISION.
  6.      
  7.          MOVE 1 TO IDX-1
  8.          
  9.          ADD 21 TO 20 GIVING BYTE
  10.          
  11.          PERFORM UNTIL IDX-1 > 37
  12.              MOVE BYTE TO CHURRO-1(IDX-1:1)
  13.              
  14.              ADD 1 TO IDX-1 BYTE
  15.              
  16.              IF  BYTE > H"5A"
  17.                  MOVE H"30" TO BYTE
  18.              END-IF
  19.          END-PERFORM

Y lo mismo para el "churro-2", pero con cálculo individual para cada posición.



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
  #5
Antiguo 4 de septiembre de 2018, 14:58
Paulo
Forero Senior
Última Actividad 17.09.2026 16:22
Posts Posts: 101
Likes enviados Enviados: 25
Likes recibidos Recibidos: 33

Vou testar os vossos exemplos e ver qual o que melhor se adequa ao que pretendo, que é uma chave relativamente simples.
Gracias
Paulo 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:12.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.