Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

Dataset / Catalog Doctor V2 – Analyseur LISTCAT / IDCAMS / VSAM / GDG / JCL

Objectif du guide

Installer, tester et exploiter dataset_catalog_doctor_v2.py, un utilitaire autonome qui analyse les exports LISTCAT, les sorties IDCAMS, les définitions VSAM/GDG et les références datasets présentes dans du JCL.

TĂ©lĂ©charger l’utilitaire Dataset / Catalog Doctor V2

Le bouton principal pointe explicitement vers /static/toolbox/dataset_catalog_doctor_v2.py. DĂ©pose ce script dans static/toolbox/ pour l’exposer depuis IDEO-Lab.

Dataset / Catalog Doctor V2 est conçu pour les Ă©quipes batch, production, storage et sĂ©curitĂ©. Il permet de repĂ©rer les datasets non cataloguĂ©s, les rĂ©fĂ©rences JCL dangereuses, les GDG incohĂ©rents, les VSAM suspects, les politiques d’allocation risquĂ©es et les Ă©carts entre un Ă©tat baseline et un Ă©tat courant.

Catalog
Analyse LISTCAT, IDCAMS, dataset names, GDG bases, VSAM clusters et messages catalog.
JCL refs
Extraction DD/DSN/DISP/SPACE/SMS pour détecter les références risquées ou absentes.
Governance
Policy JSON, scoring par catégorie, comparaison baseline, exports HTML/JSON/CSV.

Ce que le moteur analyse

DomaineSignaux analysésDiagnostic produit
LISTCAT / IDCAMSNONVSAM, CLUSTER, DATA, INDEX, IDC3012I, NOT CATALOGEDInventaire catalog, erreurs catalog, datasets absents, objets VSAM.
JCL references//DD DD DSN=, DISP=, SPACE=, MGMTCLAS, STORCLASRéférences de datasets, créations, suppressions, espaces faibles, SMS absent.
VSAMCI splits, CA splits, high-used RBA, cluster names.Suspicion de fragmentation, cluster plein ou performance dégradée.
GDGGDG base, LIMIT, générations (+1), (-1), générations absentes.Incohérences de génération, mauvaise création ou consommation GDG.
Sécurité / conformitéPatterns sensibles : PROD, PAYROLL, RACF, HR, SYS1.Datasets sensibles, opérations DELETE dangereuses, naming hors standard.
Baseline compareComparaison d’un Ă©tat courant avec un Ă©tat de rĂ©fĂ©rence.Datasets ajoutĂ©s, supprimĂ©s, rĂ©fĂ©rences nouvelles, dĂ©rives de risque.
Positionnement : la V2 est une base sérieuse pour un portail de gouvernance dataset : qualité JCL, cohérence catalog, contrÎle VSAM/GDG, audit sécurité et préparation de changements batch.

Téléchargement des fichiers

Cette page fournit les liens explicites vers le script Python, les samples, le catalogue de rĂšgles, la policy JSON et le pack complet. Pour IDEO-Lab, les fichiers doivent ĂȘtre dĂ©posĂ©s sous /static/toolbox/.

Utilitaire principal

Script Python autonome, sans dépendance externe, à lancer sur un fichier LISTCAT / IDCAMS / JCL / mixed text.

Sample mixed

LISTCAT + JCL + IDCAMS, idéal pour tester toutes les rÚgles principales.

Download mixed

Sample baseline

État de rĂ©fĂ©rence pour comparer les Ă©carts avec --compare-with.

Download baseline

Sample VSAM

Cluster VSAM avec métriques CI/CA splits et risque de fragmentation.

Download VSAM

Sample Security

Datasets sensibles, DELETE, RACF/SYS1/PROD et rĂšgles security.

Download security

Sample GDG

GDG base, générations, LIMIT et références (+1) / (-1).

Download GDG

Pack ZIP

Script, samples, policy, rules catalog, exports et rapports de démonstration.

Download ZIP

Fichiers de configuration

Policy JSON

Patterns sensibles, naming convention, banned patterns et seuils site-specific.

Download policy

Rule catalog JSON

Catalogue des rÚgles intégrées, exportable et documentable.

Download rules

Arborescence static recommandée

static files
static/
  toolbox/
    dataset_catalog_doctor_v2.py
    dataset_catalog_doctor_v2_pack.zip
    dataset_catalog_doctor_v2_rules_catalog.json
    sample_dataset_catalog_v2_policy.json
    sample_dataset_catalog_v2_mixed.txt
    sample_dataset_catalog_v2_baseline.txt
    sample_dataset_catalog_v2_vsam.txt
    sample_dataset_catalog_v2_security.txt
    sample_dataset_catalog_v2_gdg.txt
    dataset_catalog_doctor_v2_guide.html
ContrÎle visuel : le bouton Download dataset_catalog_doctor_v2.py est présent en haut de la page, dans Téléchargement, Installation et Fichiers input.

Installation de Dataset / Catalog Doctor V2

Le script est autonome. Une version Python moderne suffit. Il peut tourner sur un poste Windows, Linux, macOS, un serveur d’audit, ou dans un job batch d’analyse offline.

1. Arborescence locale recommandée

Project tree
dataset_catalog_lab/
  bin/
    dataset_catalog_doctor_v2.py
  input/
    sample_dataset_catalog_v2_mixed.txt
    sample_dataset_catalog_v2_baseline.txt
    sample_dataset_catalog_v2_vsam.txt
    sample_dataset_catalog_v2_security.txt
    sample_dataset_catalog_v2_gdg.txt
    sample_dataset_catalog_v2_policy.json
  output/
    reports/
    csv/
    json/
Lien direct du script Ă  installer

Ce bouton pointe explicitement vers /static/toolbox/dataset_catalog_doctor_v2.py.

2. Installation Linux / macOS

Linux / macOS setup
mkdir -p dataset_catalog_lab/bin dataset_catalog_lab/input dataset_catalog_lab/output/reports dataset_catalog_lab/output/csv dataset_catalog_lab/output/json
cp dataset_catalog_doctor_v2.py dataset_catalog_lab/bin/
cp sample_dataset_catalog_v2_*.txt dataset_catalog_lab/input/
cp sample_dataset_catalog_v2_policy.json dataset_catalog_lab/input/
cd dataset_catalog_lab
python3 bin/dataset_catalog_doctor_v2.py --demo mixed

3. Installation Windows PowerShell

Windows PowerShell setup
New-Item -ItemType Directory -Force dataset_catalog_lab\bin, dataset_catalog_lab\input, dataset_catalog_lab\output\reports, dataset_catalog_lab\output\csv, dataset_catalog_lab\output\json
Copy-Item .\dataset_catalog_doctor_v2.py .\dataset_catalog_lab\bin\
Copy-Item .\sample_dataset_catalog_v2_*.txt .\dataset_catalog_lab\input\
Copy-Item .\sample_dataset_catalog_v2_policy.json .\dataset_catalog_lab\input\
Set-Location .\dataset_catalog_lab
python .\bin\dataset_catalog_doctor_v2.py --demo mixed

4. Test de validation

Validation command
python bin/dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_mixed.txt \
  --profile production \
  --custom-policy input/sample_dataset_catalog_v2_policy.json \
  --compare-with input/sample_dataset_catalog_v2_baseline.txt \
  --html output/reports/sample_dataset_catalog_v2_mixed_report.html \
  --json output/json/sample_dataset_catalog_v2_mixed_analysis.json \
  --csv-findings output/csv/sample_dataset_catalog_v2_mixed_findings.csv \
  --csv-datasets output/csv/sample_dataset_catalog_v2_mixed_datasets.csv \
  --csv-references output/csv/sample_dataset_catalog_v2_mixed_references.csv \
  --csv-categories output/csv/sample_dataset_catalog_v2_mixed_categories.csv \
  --csv-compare output/csv/sample_dataset_catalog_v2_mixed_compare.csv
Résultat attendu : le sample mixed doit produire un score de risque élevé, des findings sur datasets sensibles, VSAM/GDG/JCL, et un rapport HTML consultable.

Fichiers input attendus

La V2 attend un fichier texte brut. Le contenu peut mĂ©langer LISTCAT, IDCAMS, fragments JCL, messages catalog, statistiques VSAM et dĂ©finitions GDG. L’outil est volontairement tolĂ©rant pour faciliter les analyses offline.

Utilitaire nécessaire pour analyser les inputs

TĂ©lĂ©charger d’abord le script Python, puis lancer l’analyse sur un export LISTCAT / IDCAMS / JCL.

1. Sources acceptées

SourceContenu typiqueUsage
LISTCATEntrĂ©es catalog, NONVSAM, CLUSTER, GDG, ALIAS, DATA, INDEX.Inventaire catalog, prĂ©sence des datasets, types d’objets.
IDCAMSDELETE, DEFINE, IDC3012I, IDC3009I, messages d’erreur catalog.DĂ©tecter opĂ©rations dangereuses, not found, not cataloged.
JCLDD statements, DSN, DISP, SPACE, UNIT, STORCLAS, MGMTCLAS.Comparer références JCL et catalog, repérer DISP dangereux.
VSAMCI-SPLITS, CA-SPLITS, high-used RBA, cluster statistics.Détecter fragmentation, croissance et risque performance.
GDGGDG base, LIMIT, generation entries, (+1), (-1).Détecter génération manquante ou mauvaise création.

2. Exemple minimal de contenu mixed

sample_dataset_catalog_v2_mixed.txt
NONVSAM ------- PAYROLL.PROD.INPUT
CLUSTER ------- PAYROLL.PROD.VSAM.CUSTOMER
  CI-SPLITS 000000000250
  CA-SPLITS 000000000045
GDG BASE ------ PAYROLL.PROD.TRANS.GDG LIMIT(005)
//SYSUT1   DD DSN=PAYROLL.PROD.INPUT,DISP=SHR
//SYSUT2   DD DSN=PAYROLL.PROD.OUTPUT,DISP=(NEW,CATLG,DELETE),SPACE=(TRK,(1,1))
//BADDEL   DD DSN=PAYROLL.PROD.OLD,DISP=(OLD,DELETE)

3. Samples disponibles

Mixed

Cas général pour tester LISTCAT, JCL, VSAM, GDG et policy.

Download

Baseline

État de rĂ©fĂ©rence pour comparer une dĂ©rive catalog.

Download

VSAM

Cas orienté clusters VSAM et CI/CA splits.

Download

Security

Datasets sensibles et opérations dangereuses.

Download

GDG

GDG bases et références générationnelles.

Download

RÚgle de sécurité : un vrai export catalog peut exposer des datasets sensibles, applications, normes internes, security profiles, storage classes et informations de volumétrie. Utiliser --redact avant partage externe.

Utilisation quotidienne

1. Modes démo intégrés

Demo modes
python dataset_catalog_doctor_v2.py --demo mixed
python dataset_catalog_doctor_v2.py --demo baseline
python dataset_catalog_doctor_v2.py --demo vsam
python dataset_catalog_doctor_v2.py --demo security
python dataset_catalog_doctor_v2.py --demo gdg

2. Analyse simple d’un fichier

Simple analysis
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_mixed.txt

3. Analyse complĂšte avec exports

Full export analysis
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_mixed.txt \
  --profile production \
  --custom-policy input/sample_dataset_catalog_v2_policy.json \
  --compare-with input/sample_dataset_catalog_v2_baseline.txt \
  --json output/json/sample_dataset_catalog_v2_mixed_analysis.json \
  --html output/reports/sample_dataset_catalog_v2_mixed_report.html \
  --csv-findings output/csv/sample_dataset_catalog_v2_mixed_findings.csv \
  --csv-datasets output/csv/sample_dataset_catalog_v2_mixed_datasets.csv \
  --csv-references output/csv/sample_dataset_catalog_v2_mixed_references.csv \
  --csv-categories output/csv/sample_dataset_catalog_v2_mixed_categories.csv \
  --csv-compare output/csv/sample_dataset_catalog_v2_mixed_compare.csv

4. Mode sécurité anonymisé

Security redacted analysis
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_security.txt \
  --profile security \
  --custom-policy input/sample_dataset_catalog_v2_policy.json \
  --redact \
  --html output/reports/security_redacted_report.html \
  --csv-findings output/csv/security_findings.csv

5. Exporter policy et catalogue de rĂšgles

Export policy and rules
python dataset_catalog_doctor_v2.py --write-policy output/json/sample_policy.json
python dataset_catalog_doctor_v2.py --export-rules output/json/dataset_catalog_rules.json

6. Mode batch strict

Batch strict mode
python dataset_catalog_doctor_v2.py input/production_catalog_snapshot.txt \
  --profile strict \
  --custom-policy input/site_policy.json \
  --html output/reports/production_catalog_report.html \
  --csv-findings output/csv/production_catalog_findings.csv \
  --fail-on CRITICAL
Lecture recommandĂ©e : commencer par le rapport HTML pour l’analyse humaine, puis utiliser les CSV pour historisation, Excel, SQL, reporting ou tableau de bord.

ParamĂštres de ligne de commande

1. ParamĂštres d’entrĂ©e et de sortie

ParamĂštreDescriptionExemple
input_fileFichier LISTCAT / IDCAMS / JCL / mixed text Ă  analyser.input/catalog_snapshot.txt
--demoLance un sample intégré : mixed, baseline, vsam, security, gdg.--demo mixed
--jsonExporte l’analyse complùte en JSON.--json output/analysis.json
--htmlGénÚre le rapport HTML.--html output/report.html
--csv-findingsExporte les anomalies détectées.--csv-findings output/findings.csv
--csv-datasetsExporte les datasets reconnus dans LISTCAT et JCL.--csv-datasets output/datasets.csv
--csv-referencesExporte les références JCL DD/DSN/DISP/SPACE.--csv-references output/references.csv
--csv-categoriesExporte le scoring par catégorie de risque.--csv-categories output/categories.csv
--csv-compareExporte les écarts baseline vs current.--csv-compare output/compare.csv

2. Paramùtres d’analyse et de gouvernance

ParamÚtreEffetUsage recommandé
--profileProfil : production, batch, storage, security, training, strict.Ajuster le niveau de sévérité et le type de rÚgles prioritaires.
--custom-policyCharge une policy JSON site-specific.Définir patterns sensibles, naming convention et banned patterns.
--compare-withCompare le fichier courant avec une baseline.Détecter les datasets ajoutés/supprimés ou nouvelles références.
--redactMasque les noms de datasets dans les sorties.Partage externe, support, ticket ou démonstration.
--fail-onRetourne un code erreur Ă  partir d’une sĂ©vĂ©ritĂ© donnĂ©e.--fail-on ERROR ou --fail-on CRITICAL.

3. Génération de fichiers de référence

Generate support files
python dataset_catalog_doctor_v2.py --write-sample-input output/sample_mixed.txt
python dataset_catalog_doctor_v2.py --write-baseline-input output/sample_baseline.txt
python dataset_catalog_doctor_v2.py --write-policy output/sample_policy.json
python dataset_catalog_doctor_v2.py --export-rules output/rules_catalog.json

Exemples d’utilisation

ScĂ©nario 1 – Audit catalog avant mise en production batch

ContrÎler que les datasets référencés par le JCL existent, que les DISP ne sont pas dangereux et que les allocations sont cohérentes.

Production batch audit
python dataset_catalog_doctor_v2.py input/batch_catalog_snapshot.txt \
  --profile production \
  --custom-policy input/site_policy.json \
  --html output/reports/batch_catalog_report.html \
  --csv-findings output/csv/batch_catalog_findings.csv

ScĂ©nario 2 – Analyse VSAM

Repérer les clusters qui montrent des splits élevés ou une croissance suspecte.

VSAM analysis
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_vsam.txt \
  --profile storage \
  --html output/reports/vsam_report.html \
  --csv-datasets output/csv/vsam_datasets.csv \
  --csv-findings output/csv/vsam_findings.csv

ScĂ©nario 3 – Audit sĂ©curitĂ© dataset

Identifier des opérations DELETE, des datasets sensibles et produire un rapport anonymisé.

Security audit
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_security.txt \
  --profile security \
  --custom-policy input/sample_dataset_catalog_v2_policy.json \
  --redact \
  --html output/reports/security_dataset_report.html \
  --csv-findings output/csv/security_dataset_findings.csv

ScĂ©nario 4 – Comparaison baseline vs current

Comparer un export catalog de rĂ©fĂ©rence avec l’état courant avant changement.

Baseline compare
python dataset_catalog_doctor_v2.py input/current_catalog.txt \
  --compare-with input/baseline_catalog.txt \
  --csv-compare output/csv/catalog_compare.csv \
  --html output/reports/catalog_compare_report.html

ScĂ©nario 5 – ContrĂŽle nocturne automatisĂ©

Cron entry
0 4 * * * /opt/dataset-catalog/bin/python /opt/dataset-catalog/dataset_catalog_doctor_v2.py \
  /data/catalog/nightly_catalog_snapshot.txt \
  --profile production \
  --custom-policy /etc/dataset-catalog/site_policy.json \
  --html /var/www/reports/catalog/nightly_catalog_report.html \
  --csv-findings /var/log/dataset-catalog/nightly_findings.csv \
  --json /var/log/dataset-catalog/nightly_analysis.json \
  --fail-on CRITICAL >> /var/log/dataset-catalog/analyzer.log 2>&1

RĂšgles, policy et scoring

La V2 ne se limite pas à reconnaßtre des noms de datasets. Elle applique des rÚgles classées par domaine : catalog, JCL reference, allocation, VSAM, GDG, sécurité, naming et comparaison baseline.

Télécharger le catalogue de rÚgles et la policy

Ces fichiers servent à documenter les contrîles et à adapter les patterns au contexte d’une entreprise.

1. Familles de rĂšgles

FamilleContrĂŽleExemple de finding
Catalog consistencyRéférence JCL présente mais dataset absent du LISTCAT.CRITICAL Dataset referenced but not cataloged.
DISP safetyDétection DISP=(OLD,DELETE) ou DELETE sur dataset sensible.CRITICAL Dangerous delete operation.
AllocationDISP=NEW sans SPACE ni SMS classes.WARNING New dataset allocation lacks sizing policy.
VSAM healthCI/CA splits élevés ou usage proche de la limite.WARNING VSAM cluster may need reorg.
GDG consistencyRéférence (+1) sans création correcte ou base sans génération.WARNING GDG generation pattern suspicious.
NamingNom de dataset hors convention site.INFO Naming convention mismatch.

2. Exemple de policy JSON

sample_dataset_catalog_v2_policy.json
{
  "sensitive_patterns": ["PROD", "PAYROLL", "HR", "RACF", "SYS1"],
  "banned_patterns": ["DISP=(OLD,DELETE)", "DELETE PROD"],
  "naming_regex": "^[A-Z0-9]+\\.[A-Z0-9]+\\..+",
  "minimum_primary_space_tracks": 5
}

3. Scoring par catégorie

Le score global est complĂ©tĂ© par un score par catĂ©gorie afin d’éviter une lecture trop simpliste. Un dataset peut ĂȘtre faible en performance mais trĂšs risquĂ© cĂŽtĂ© sĂ©curitĂ©, ou inversement.

  • Catalog : cohĂ©rence LISTCAT / JCL / IDCAMS.
  • Allocation : SPACE, SMS, NEW datasets, volume growth.
  • Security : sensitive patterns, DELETE, SYS1/RACF/PROD.
  • VSAM : CI/CA splits, cluster fullness, reorg candidates.
  • GDG : base, LIMIT, generations, creation/consumption mismatch.

Exports et exploitation des résultats

Rapport HTML

Vue lisible : score, findings, datasets, références JCL, catégories, comparaison baseline.

Analyse JSON

Format complet pour API, ingestion SQL, archivage ou comparaison automatique.

Findings CSV

Une ligne par anomalie, avec sévérité, rÚgle, catégorie et recommandation.

Datasets CSV

Inventaire des datasets détectés dans catalog, LISTCAT, IDCAMS et JCL.

References CSV

Références JCL DD/DSN/DISP/SPACE pour audit et rapprochement.

Compare CSV

Écarts entre baseline et current pour analyse de changement.

Exemple de synthĂšse console

Console output
Dataset / Catalog Doctor V2
Status              : BLOCKED
Highest severity    : CRITICAL
Risk score          : 100/100
Datasets            : 12
JCL references      : 8
Findings            : 18
Sensitive datasets  : 7
VSAM clusters       : 2
GDG bases           : 1

Idée de table SQL pour historisation

SQL model idea
CREATE TABLE dataset_catalog_doctor_run (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    source_name VARCHAR(255),
    profile VARCHAR(32),
    status VARCHAR(32),
    highest_severity VARCHAR(16),
    risk_score INTEGER,
    dataset_count INTEGER,
    reference_count INTEGER,
    finding_count INTEGER,
    sensitive_dataset_count INTEGER,
    vsam_cluster_count INTEGER,
    gdg_base_count INTEGER,
    report_path VARCHAR(500),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Vision produit : la V2 peut devenir un vrai tableau de bord de gouvernance dataset : historique SQL, audit batch, contrĂŽle VSAM/GDG, recherche par dataset sensible, comparaison avant/aprĂšs release et scoring par domaine.

Dépannage et bonnes pratiques

1. Le script ne détecte pas les datasets attendus

Cause possibleCorrection
Le fichier n’est pas un texte brut.Exporter LISTCAT/IDCAMS/JCL en texte, pas en PDF image.
Les lignes JCL ont été tronquées ou reformattées.Conserver les lignes DD originales et éviter les conversions Word/Excel.
Le LISTCAT est incomplet.Inclure les sections CLUSTER, DATA, INDEX, GDG et NONVSAM nécessaires.
Convention de nommage site-specific.Utiliser --custom-policy avec un regex adapté.

2. Trop de findings remontées

Utiliser un profil moins strict, ajuster la policy JSON et commencer par analyser un pĂ©rimĂštre rĂ©duit : une application, un batch chain, un HLQ ou une fenĂȘtre de release.

Less strict command
python dataset_catalog_doctor_v2.py input/catalog_snapshot.txt \
  --profile training \
  --custom-policy input/site_policy.json \
  --html output/reports/catalog_training_report.html

3. Check-list avant partage externe

  • Utiliser --redact pour masquer les noms de datasets dans les rapports.
  • Anonymiser HLQ, applications, user IDs, volumes, storage classes et noms d’environnements.
  • Conserver une copie brute interne pour vĂ©rifier la fidĂ©litĂ© du parsing.
  • Ne pas conclure uniquement sur un nom sensible : vĂ©rifier DISP, JCL, LISTCAT et contexte.
  • Valider les findings avec l’équipe production, storage, sĂ©curitĂ© ou application concernĂ©e.
Point critique : les exports LISTCAT et JCL peuvent rĂ©vĂ©ler la topologie applicative et les conventions de sĂ©curitĂ©. Ils doivent ĂȘtre traitĂ©s comme des documents sensibles.