util-lab / CompBind

BASE24 / NonStop

CompBind

v

Compara dependencias de BIND LIST SOURCE FROM entre dos objetos: detecta archivos idénticos, movidos o distintos.

Entrada 01

Esta herramienta espera la salida de una macro TACL. La macro ejecuta un FUP INFO del objeto para registrar su timestamp, después corre BIND LIST SOURCE FROM sobre el objeto, recorta la salida a las rutas de dependencias, y le hace FUP INFO a cada una para obtener su timestamp. Si no puede hacerle FUP INFO a una dependencia (equipo inaccesible, archivo no disponible al momento de ejecutarla), la marca con "---> file does not exist!!!". La salida completa de esta macro es lo que se pega tal cual en los cuadros de entrada de abajo.

?SECTION BLSF MACRO

  == Verificamos si el archivo principal existe
  [#IF NOT [#FILEINFO /EXISTENCE/ %1%] |THEN|
      #OUTPUT ---> file does not exist!!!
      #RETURN
  ]

  == Timestamp del objeto principal en una linea
  #OUTPUT
  #OUTPUT OBJETO - TIMESTAMP:
  #OUTPUT
  fih %1%
  #OUTPUT
  #OUTPUT OBJETO - DEPENDENCIAS (BIND LIST SOURCE):
  #OUTPUT

  #PUSH CONTENIDO content lncnt lncnt2 NLINEA NLINEA2 LINEA LINEA2 CHPOS CHPOS2
  #PUSH LINEAFIXED TIEMPO
  BIND /OUTV CONTENIDO / LIST SOURCE FROM %1%
  #SET lncnt2 [#LINECOUNT contenido]
  #SET lncnt2 [#COMPUTE   lncnt2 + 1]
  #SET NLINEA2 1
  [#LOOP
       |WHILE| [NLINEA2] < [lncnt2]
       |DO|
       #LINEGETV contenido LINEA2 [NLINEA2] FOR 1
       #SET CHPOS  [#CHARFIND LINEA2 1 \]
       [#IF ([CHPOS] > 0) |THEN|
           ==#OUTPUT [LINEA2]

           #CHARGETV  LINEA2 LINEAFIXED 1 to 34
           ==#OUTPUT LINEAFIXED:[LINEAFIXED]

           == NUEVA VALIDACION
           == Verificamos si el archivo extraido en LINEAFIXED realmente existe
           [#IF NOT [#FILEINFO /EXISTENCE/ [LINEAFIXED]] |THEN|
               #OUTPUT [LINEAFIXED] ---> file does not exist!!!
           |ELSE|
               == Si el archivo existe, ejecutamos el FUP INFO normalmente
               FUP /OUTV content /INFO [LINEAFIXED]
               #SET lncnt [#LINECOUNT content]
               #SET lncnt [#COMPUTE   lncnt + 1]
               #SET NLINEA 1
               [#LOOP
                   |WHILE| [NLINEA] < [lncnt]
                   |DO|
                   #LINEGETV content LINEA [NLINEA] FOR 1
                   #SET CHPOS2  [#CHARFIND LINEA 1 ,]
                   [#IF ([CHPOS2] > 0) |THEN|
                            #CHARGETV LINEA TIEMPO 28 for 24
                            #OUTPUT [LINEAFIXED] [TIEMPO]
                   ]
                   #SET NLINEA [#COMPUTE NLINEA + 1]
               ]
            ==Fin del IF de existencia
           ]
       ]
       #SET NLINEA2 [#COMPUTE NLINEA2 + 1]
   ]

El nombre de la macro (después de ?SECTION) es libre: podés llamarla blsf, blsf3, o como quieras. El nombre con el que la invocás en TACL depende de cómo la hayas nombrado en tu archivo de macros.

Ejemplo de ejecución:

blsf $DATA5.BI1447SW.BNETQ

Ejemplo de salida (fragmento representativo):

OBJETO - TIMESTAMP:

$DATA5.BI1447SW
              CODE              EOF   LAST MODIFIED  OWNER  RWEP  PExt  SExt
BNETQ          100         10047488 07AUG2026  7:51 111,183 NNNU  224   224

OBJETO - DEPENDENCIAS (BIND LIST SOURCE):

\PRODEV.$DATA5.BI1447SW.BNETD        75150 31Jul2026 11:22
\PRODEV.$DATA5.BI1447SW.BNETQ         8420 07Aug2026  7:51
\OMA3T06.$SWORD.BA10UTIL.UTILS     ---> file does not exist!!!

Cómo agregarla a tu archivo de macros de TACL:

  1. Abrí tu archivo de macros de TACL (el que tengas configurado en tu perfil/sesión).
  2. Pegá el código completo de arriba, desde ?SECTION hasta el último ], al final del archivo.
  3. Guardá el archivo y volvé a cargarlo en tu sesión de TACL (según cómo tengas configurada la carga de macros) para que la nueva sección quede disponible.
  4. Invocá la macro con el nombre que le hayas puesto, seguido del objeto a analizar (ver ejemplo de ejecución arriba).

Este procedimiento es genérico -- puede variar según cómo esté configurado tu perfil de TACL. Ajustalo a tu entorno si hace falta.

Ejecutá “BIND LIST SOURCE FROM” para el objeto 1 y pegá la salida completa en este cuadro.
Ejecutá “BIND LIST SOURCE FROM” para el objeto 2 y pegá la salida completa en este cuadro.
Acciones 02

  
Resultado 03
Esperando comparación...

Dependencias diferentes (sección 3), emparejadas, agrupadas por subvolumen del objeto 1 (línea en blanco entre grupos, misma posición en las 4 columnas). Rutas sin su nodo inicial. Se excluyen las diferencias sin par en ambos objetos. Cada columna es texto plano -- pegala directo en un editor de texto (Notepad).

Objeto 1 (Código Origen):


        

        

Objeto 2 (Código CSM):


        

        

Formato tabla (TAB) — para pegar en Word

Objeto 1 (Código Origen)

        
Objeto 2 (Código CSM)