Dataset / Catalog Doctor V2 â Analyseur LISTCAT / IDCAMS / VSAM / GDG / JCL
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.
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.
Ce que le moteur analyse
| Domaine | Signaux analysés | Diagnostic produit |
|---|---|---|
| LISTCAT / IDCAMS | NONVSAM, CLUSTER, DATA, INDEX, IDC3012I, NOT CATALOGED | Inventaire catalog, erreurs catalog, datasets absents, objets VSAM. |
| JCL references | //DD DD DSN=, DISP=, SPACE=, MGMTCLAS, STORCLAS | Références de datasets, créations, suppressions, espaces faibles, SMS absent. |
| VSAM | CI splits, CA splits, high-used RBA, cluster names. | Suspicion de fragmentation, cluster plein ou performance dégradée. |
| GDG | GDG 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 compare | Comparaison dâun Ă©tat courant avec un Ă©tat de rĂ©fĂ©rence. | Datasets ajoutĂ©s, supprimĂ©s, rĂ©fĂ©rences nouvelles, dĂ©rives de risque. |
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/.
Script Python autonome, sans dépendance externe, à lancer sur un fichier LISTCAT / IDCAMS / JCL / mixed text.
LISTCAT + JCL + IDCAMS, idéal pour tester toutes les rÚgles principales.
Ătat de rĂ©fĂ©rence pour comparer les Ă©carts avec --compare-with.
Cluster VSAM avec métriques CI/CA splits et risque de fragmentation.
Datasets sensibles, DELETE, RACF/SYS1/PROD et rĂšgles security.
GDG base, générations, LIMIT et références (+1) / (-1).
Script, samples, policy, rules catalog, exports et rapports de démonstration.
Fichiers de configuration
Patterns sensibles, naming convention, banned patterns et seuils site-specific.
Catalogue des rÚgles intégrées, exportable et documentable.
Arborescence static recommandée
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.htmlInstallation 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
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/Ce bouton pointe explicitement vers /static/toolbox/dataset_catalog_doctor_v2.py.
2. Installation Linux / macOS
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 mixed3. Installation Windows PowerShell
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 mixed4. Test de validation
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.csvFichiers 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.
TĂ©lĂ©charger dâabord le script Python, puis lancer lâanalyse sur un export LISTCAT / IDCAMS / JCL.
1. Sources acceptées
| Source | Contenu typique | Usage |
|---|---|---|
LISTCAT | EntrĂ©es catalog, NONVSAM, CLUSTER, GDG, ALIAS, DATA, INDEX. | Inventaire catalog, prĂ©sence des datasets, types dâobjets. |
IDCAMS | DELETE, DEFINE, IDC3012I, IDC3009I, messages dâerreur catalog. | DĂ©tecter opĂ©rations dangereuses, not found, not cataloged. |
JCL | DD statements, DSN, DISP, SPACE, UNIT, STORCLAS, MGMTCLAS. | Comparer références JCL et catalog, repérer DISP dangereux. |
VSAM | CI-SPLITS, CA-SPLITS, high-used RBA, cluster statistics. | Détecter fragmentation, croissance et risque performance. |
GDG | GDG base, LIMIT, generation entries, (+1), (-1). | Détecter génération manquante ou mauvaise création. |
2. Exemple minimal de contenu mixed
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
Cas général pour tester LISTCAT, JCL, VSAM, GDG et policy.
Ătat de rĂ©fĂ©rence pour comparer une dĂ©rive catalog.
Cas orienté clusters VSAM et CI/CA splits.
Datasets sensibles et opérations dangereuses.
GDG bases et références générationnelles.
--redact avant partage externe.Utilisation quotidienne
1. Modes démo intégrés
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 gdg2. Analyse simple dâun fichier
python dataset_catalog_doctor_v2.py input/sample_dataset_catalog_v2_mixed.txt3. Analyse complĂšte avec exports
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.csv4. Mode sécurité anonymisé
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.csv5. Exporter policy et catalogue de rĂšgles
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.json6. Mode batch strict
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 CRITICALParamĂštres de ligne de commande
1. ParamĂštres dâentrĂ©e et de sortie
| ParamĂštre | Description | Exemple |
|---|---|---|
input_file | Fichier LISTCAT / IDCAMS / JCL / mixed text Ă analyser. | input/catalog_snapshot.txt |
--demo | Lance un sample intégré : mixed, baseline, vsam, security, gdg. | --demo mixed |
--json | Exporte lâanalyse complĂšte en JSON. | --json output/analysis.json |
--html | GénÚre le rapport HTML. | --html output/report.html |
--csv-findings | Exporte les anomalies détectées. | --csv-findings output/findings.csv |
--csv-datasets | Exporte les datasets reconnus dans LISTCAT et JCL. | --csv-datasets output/datasets.csv |
--csv-references | Exporte les références JCL DD/DSN/DISP/SPACE. | --csv-references output/references.csv |
--csv-categories | Exporte le scoring par catégorie de risque. | --csv-categories output/categories.csv |
--csv-compare | Exporte les écarts baseline vs current. | --csv-compare output/compare.csv |
2. ParamĂštres dâanalyse et de gouvernance
| ParamÚtre | Effet | Usage recommandé |
|---|---|---|
--profile | Profil : production, batch, storage, security, training, strict. | Ajuster le niveau de sévérité et le type de rÚgles prioritaires. |
--custom-policy | Charge une policy JSON site-specific. | Définir patterns sensibles, naming convention et banned patterns. |
--compare-with | Compare le fichier courant avec une baseline. | Détecter les datasets ajoutés/supprimés ou nouvelles références. |
--redact | Masque les noms de datasets dans les sorties. | Partage externe, support, ticket ou démonstration. |
--fail-on | Retourne 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
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.jsonExemples 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.
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.csvScĂ©nario 2 â Analyse VSAM
Repérer les clusters qui montrent des splits élevés ou une croissance suspecte.
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.csvScĂ©nario 3 â Audit sĂ©curitĂ© dataset
Identifier des opérations DELETE, des datasets sensibles et produire un rapport anonymisé.
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.csvScĂ©nario 4 â Comparaison baseline vs current
Comparer un export catalog de rĂ©fĂ©rence avec lâĂ©tat courant avant changement.
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.htmlScĂ©nario 5 â ContrĂŽle nocturne automatisĂ©
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>&1RĂš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.
Ces fichiers servent Ă documenter les contrĂŽles et Ă adapter les patterns au contexte dâune entreprise.
1. Familles de rĂšgles
| Famille | ContrĂŽle | Exemple de finding |
|---|---|---|
| Catalog consistency | Référence JCL présente mais dataset absent du LISTCAT. | CRITICAL Dataset referenced but not cataloged. |
| DISP safety | Détection DISP=(OLD,DELETE) ou DELETE sur dataset sensible. | CRITICAL Dangerous delete operation. |
| Allocation | DISP=NEW sans SPACE ni SMS classes. | WARNING New dataset allocation lacks sizing policy. |
| VSAM health | CI/CA splits élevés ou usage proche de la limite. | WARNING VSAM cluster may need reorg. |
| GDG consistency | Référence (+1) sans création correcte ou base sans génération. | WARNING GDG generation pattern suspicious. |
| Naming | Nom de dataset hors convention site. | INFO Naming convention mismatch. |
2. Exemple de 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
Vue lisible : score, findings, datasets, références JCL, catégories, comparaison baseline.
Format complet pour API, ingestion SQL, archivage ou comparaison automatique.
Une ligne par anomalie, avec sévérité, rÚgle, catégorie et recommandation.
Inventaire des datasets détectés dans catalog, LISTCAT, IDCAMS et JCL.
Références JCL DD/DSN/DISP/SPACE pour audit et rapprochement.
Ăcarts entre baseline et current pour analyse de changement.
Exemple de synthĂšse console
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 : 1Idée de table SQL pour historisation
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
);Dépannage et bonnes pratiques
1. Le script ne détecte pas les datasets attendus
| Cause possible | Correction |
|---|---|
| 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.
python dataset_catalog_doctor_v2.py input/catalog_snapshot.txt \
--profile training \
--custom-policy input/site_policy.json \
--html output/reports/catalog_training_report.html3. Check-list avant partage externe
- Utiliser
--redactpour 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.
