Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

MVS JobLog Doctor V2 – Analyseur intelligent JES2 / JESMSGLG / JESYSMSG

Objectif du guide

Installer, tester et exploiter mvs_joblog_doctor_v2.py, un utilitaire autonome qui analyse les listings de jobs MVS/zOS, détecte les ABEND, les return codes, les messages critiques et produit une synthÚse exploitable.

TĂ©lĂ©charger l’utilitaire MVS JobLog Doctor V2

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

Les joblogs JES2/JES3, les sorties JESMSGLG, JESYSMSG, JESJCL, SYSOUT, SYSPRINT ou SYSABEND sont extrĂȘmement riches mais souvent difficiles Ă  lire rapidement. Cette V2 transforme un listing texte en diagnostic structurĂ© : statut du job, steps, ABEND, root-cause candidates, timeline, score de risque, recommandations et exports.

Parser
Lecture des lignes JES/HASP/IEF/IEC/ICH/IGD/CEE/IDC/DFH/DSN et extraction des signaux utiles.
Doctor
Classification des ABEND, return codes, datasets, sécurité, JCL, espace disque et messages applicatifs.
Exporter
Production HTML, JSON, CSV issues, CSV steps, CSV messages, et codes retour batch.

Ce que le moteur analyse

DomaineSignaux analysésDiagnostic produit
Job identityJOBNAME, JOBID, $HASP373, $HASP395Début/fin du job, statut global, contexte JES.
Step executionEXEC PGM=, IEF142I, IEF450I, IEF472ISteps détectés, RC, ABEND, completion code, step fautif.
ABENDS0C7, S0C4, S806, S913, SB37, U4038Cause probable, domaine technique, recommandations.
DatasetsDSN=, IEC, IGD, B37/D37/E37Problùmes d’allocation, espace, catalogage, volumes.
SécuritéICH, RACF, access denied, S913AccÚs refusé, profil RACF, permission dataset ou programme.
ExploitationMessages warning/error, familles de messages, timelineRésumé humain, score de risque, evidence lines, root cause.
Positionnement : cet outil est idéal pour moderniser la lecture des joblogs mainframe, aider les jeunes mainframers, accélérer le support de production, documenter les incidents batch et préparer un futur moteur expert.

Téléchargement des fichiers

Cette page doit fournir des liens explicites vers l’utilitaire Python, les fichiers de test et les rapports de dĂ©monstration. Pour IDEO-Lab, les fichiers doivent ĂȘtre placĂ©s sous /static/toolbox/.

Utilitaire principal

Script autonome Python, sans dépendance externe, à lancer depuis Windows, Linux, macOS ou serveur batch.

Sample S0C7

Data exception COBOL / packed decimal / input layout mismatch.

Download S0C7 sample

Sample SB37

Dataset space problem, allocation failure, volume or SPACE issue.

Download SB37 sample

Sample S913

Security/RACF problem, access denied, protected dataset.

Download S913 sample

Arborescence static recommandée

static files
static/
  toolbox/
    mvs_joblog_doctor_v2.py
    sample_joblog_v2_s0c7.txt
    sample_joblog_v2_sb37.txt
    sample_joblog_v2_s913.txt
    mvs_joblog_doctor_v2_guide.html
ContrĂŽle visuel : les boutons de tĂ©lĂ©chargement doivent ĂȘtre visibles en haut de la page, dans l’onglet TĂ©lĂ©chargement, dans l’onglet Installation et dans la section Fichiers input.

Installation de MVS JobLog Doctor V2

Le script est autonome et ne nĂ©cessite aucune base de donnĂ©es. Il suffit d’avoir Python disponible et un fichier texte reprĂ©sentant un joblog exportĂ© depuis JES/SDSF ou un sample synthĂ©tique.

1. Arborescence locale recommandée

Project tree
mvs_joblog_lab/
  bin/
    mvs_joblog_doctor_v2.py
  input/
    sample_joblog_v2_s0c7.txt
    sample_joblog_v2_sb37.txt
    sample_joblog_v2_s913.txt
  output/
    reports/
    csv/
    json/
Lien direct du script Ă  installer

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

2. Installation Linux / macOS

Linux / macOS setup
mkdir -p mvs_joblog_lab/bin mvs_joblog_lab/input mvs_joblog_lab/output/reports mvs_joblog_lab/output/csv mvs_joblog_lab/output/json
cp mvs_joblog_doctor_v2.py mvs_joblog_lab/bin/
cp sample_joblog_v2_*.txt mvs_joblog_lab/input/
cd mvs_joblog_lab
python3 bin/mvs_joblog_doctor_v2.py --demo

3. Installation Windows PowerShell

Windows PowerShell setup
New-Item -ItemType Directory -Force mvs_joblog_lab\bin, mvs_joblog_lab\input, mvs_joblog_lab\output\reports, mvs_joblog_lab\output\csv, mvs_joblog_lab\output\json
Copy-Item .\mvs_joblog_doctor_v2.py .\mvs_joblog_lab\bin\
Copy-Item .\sample_joblog_v2_*.txt .\mvs_joblog_lab\input\
Set-Location .\mvs_joblog_lab
python .\bin\mvs_joblog_doctor_v2.py --demo

4. Test de validation

Validation command
python bin/mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
  --html output/reports/sample_s0c7_report.html \
  --json output/json/sample_s0c7_analysis.json \
  --csv-issues output/csv/sample_s0c7_issues.csv \
  --csv-steps output/csv/sample_s0c7_steps.csv \
  --csv-messages output/csv/sample_s0c7_messages.csv
Résultat attendu : le sample S0C7 doit sortir un statut FAILED, un score de risque élevé, une issue critique et une recommandation de contrÎle des données numériques COBOL.

Fichiers input attendus

MVS JobLog Doctor V2 attend un fichier texte brut représentant un joblog ou une sortie associée. Les extensions possibles sont .txt, .log, .jes, .lst ou équivalent.

Utilitaire nécessaire pour analyser les inputs

TĂ©lĂ©charger d’abord le script Python, puis lancer l’analyse sur un fichier JES/JOBLOG.

1. Types de fichiers acceptés

SourceContenu typiqueUsage
JESMSGLGMessages de début/fin job, informations JES/HASP.Détecter start/end, jobname, jobid, statut global.
JESYSMSGMessages systÚme IEF/IEC/ICH/IGD/CEE liés aux steps.Détecter RC, ABEND, dataset error, sécurité, allocation.
JESJCLJCL expandé, EXEC, DD, PROC, paramÚtres.Identifier les steps, programmes et datasets.
SYSOUT/SYSPRINTSorties applicatives, compiler, utilities, messages internes.Compléter la root cause avec messages applicatifs.
SYSABEND/SYSUDUMP/CEEDUMPDump ou informations Language Environment.Contexte avancé pour ABEND ou U4038.

2. Exemple minimal de JOBLOG

sample_joblog_v2_s0c7.txt
1 //PAYROLL1 JOB (ACCT),'PAYROLL NIGHTLY',CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
  $HASP373 PAYROLL1 STARTED - INIT 1 - CLASS A - SYS ZOS1
  IEF403I PAYROLL1 - STARTED - TIME=22.15.02
  IEF142I PAYROLL1 STEP010 - STEP WAS EXECUTED - COND CODE 0000
  IEF142I PAYROLL1 STEP020 - STEP WAS EXECUTED - COND CODE 0004
  IEF450I PAYROLL1 STEP030 PAYLOAD - ABEND=S0C7 U0000 REASON=00000000
  CEE3207S The system detected a data exception.
  $HASP395 PAYROLL1 ENDED - RC=0012

3. Samples disponibles

S0C7 Data exception

ContrĂŽle numeric fields, copybook, packed decimal, feed applicatif.

Download

SB37 Space abend

ContrĂŽle SPACE, volumes, SMS, allocation et dataset full.

Download

S913 Security abend

ContrÎle RACF, permission dataset, accÚs refusé, profil sécurité.

Download

RÚgle de sécurité : un vrai joblog peut exposer des noms de datasets, user IDs, jobnames, applications, environnements, volumes, classes JES et messages métier. Utiliser --redact avant de partager un rapport.

Utilisation quotidienne

1. Mode démo intégré

Trois modes dĂ©mo permettent de tester l’outil sans fichier externe.

Demo modes
python mvs_joblog_doctor_v2.py --demo
python mvs_joblog_doctor_v2.py --demo-space
python mvs_joblog_doctor_v2.py --demo-security

2. Analyse simple d’un joblog

Simple analysis
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt

3. Analyse avec tous les exports

Full export analysis
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
  --json output/json/sample_s0c7_analysis.json \
  --csv-issues output/csv/sample_s0c7_issues.csv \
  --csv-steps output/csv/sample_s0c7_steps.csv \
  --csv-messages output/csv/sample_s0c7_messages.csv \
  --html output/reports/sample_s0c7_report.html

4. Mode anonymisé

Le paramÚtre --redact masque les noms de datasets dans les sorties pour éviter de diffuser des informations sensibles.

Redacted report
python mvs_joblog_doctor_v2.py input/production_joblog.txt \
  --redact \
  --html output/reports/production_joblog_redacted.html \
  --json output/json/production_joblog_redacted.json

5. Mode batch strict

Batch strict mode
python mvs_joblog_doctor_v2.py input/nightly_joblog.txt \
  --html output/reports/nightly_joblog_report.html \
  --csv-issues output/csv/nightly_joblog_issues.csv \
  --fail-on-critical
Lecture recommandĂ©e : ouvrir d’abord le rapport HTML pour le diagnostic humain, puis utiliser les CSV pour historisation, tri, base SQL ou dashboard.

ParamĂštres de ligne de commande

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

ParamĂštreDescriptionExemple
input_fileFichier joblog/JES texte Ă  analyser.input/joblog.txt
--demoLance le scénario intégré S0C7.--demo
--demo-spaceLance le scénario intégré SB37 / space abend.--demo-space
--demo-securityLance le scénario intégré S913 / sécurité.--demo-security
--jsonExporte l’analyse complùte en JSON.--json output/analysis.json
--csv-issuesExporte les anomalies détectées.--csv-issues output/issues.csv
--csv-stepsExporte les steps détectés, RC, ABEND et programmes.--csv-steps output/steps.csv
--csv-messagesExporte les messages classifiés par famille.--csv-messages output/messages.csv
--htmlGénÚre le rapport HTML.--html output/report.html

2. Paramùtres d’analyse et de gouvernance

ParamÚtreEffetUsage recommandé
--profileProfil d’analyse : production, batch, compiler, security, training.DiffĂ©rencier un job applicatif, compilateur, audit sĂ©curitĂ© ou formation.
--redactMasque les noms de datasets dans les sorties.Partage externe, ticket support, rapport anonymisé.
--fail-on-criticalRetourne un code erreur si une issue critique existe.Batch, CI, supervision, contrĂŽle nocturne.
--fail-on-errorRetourne un code erreur si une issue error ou critical existe.ContrÎle plus strict, pipeline qualité.
--rc-warningSeuil warning pour les return codes.Par défaut 4.
--rc-errorSeuil error pour les return codes.Par défaut 8.
--rc-criticalSeuil critical pour les return codes.Par défaut 12.
--evidence-limitNombre de lignes d’évidence affichĂ©es en console par root cause.RĂ©duire le bruit dans les sorties batch.

3. Exemple avec seuils personnalisés

Custom RC thresholds
python mvs_joblog_doctor_v2.py input/compiler_joblog.txt \
  --profile compiler \
  --rc-warning 4 \
  --rc-error 8 \
  --rc-critical 12 \
  --html output/reports/compiler_joblog_report.html

Exemples d’utilisation

ScĂ©nario 1 – Incident S0C7 sur batch applicatif

Cas classique COBOL : data exception, mismatch entre copybook et fichier, champ packed/zoned decimal invalide.

S0C7 analysis
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s0c7.txt \
  --profile production \
  --html output/reports/s0c7_report.html \
  --csv-issues output/csv/s0c7_issues.csv

ScĂ©nario 2 – SB37 / problĂšme d’espace dataset

Cas exploitation : dataset plein, mauvaise allocation SPACE, volume saturé, SMS storage class à vérifier.

SB37 analysis
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_sb37.txt \
  --profile batch \
  --html output/reports/sb37_report.html \
  --csv-issues output/csv/sb37_issues.csv

ScĂ©nario 3 – S913 / problĂšme RACF

Cas sécurité : accÚs refusé à un dataset, permission RACF manquante, profil protégé ou user non autorisé.

S913 analysis
python mvs_joblog_doctor_v2.py input/sample_joblog_v2_s913.txt \
  --profile security \
  --redact \
  --html output/reports/s913_redacted_report.html \
  --json output/json/s913_redacted_analysis.json

ScĂ©nario 4 – ExĂ©cution nocturne automatisĂ©e

Cron entry
0 5 * * * /opt/mvs-joblog/bin/python /opt/mvs-joblog/mvs_joblog_doctor_v2.py \
  /data/joblogs/nightly_joblog.txt \
  --html /var/www/reports/mvs/nightly_joblog_report.html \
  --csv-issues /var/log/mvs/nightly_joblog_issues.csv \
  --json /var/log/mvs/nightly_joblog_analysis.json \
  --fail-on-critical >> /var/log/mvs/mvs_joblog_doctor.log 2>&1

ABEND catalog – Lecture opĂ©rationnelle

La V2 embarque un dictionnaire d’ABEND pour transformer un code brut en explication opĂ©rationnelle. Cette table prĂ©sente les cas prioritaires couverts par le moteur.

CodeLecture rapideZone probableAction recommandée
S0C7Data exceptionDonnées numériques COBOLContrÎler copybook, packed decimal, feed amont, record fautif.
S0C4Protection exceptionAdressage mémoireContrÎler pointeurs, linkage section, bounds, dump registers.
S806Load module not foundSTEPLIB/JOBLIB/LNKLSTVérifier EXEC PGM, bibliothÚques, module load, APF si nécessaire.
S913Security violationRACF / dataset accessVérifier user, dataset profile, access list, classe RACF.
SB37Dataset space exhaustedAllocation disqueContrĂŽler SPACE, volume, secondary allocation, SMS storage class.
SD37No secondary extentAllocation datasetAugmenter allocation ou définir secondary quantity.
SE37Extent/volume limitVolume/dataset growthRéviser allocation, multi-volume, SMS policies.
S322CPU time limit exceededRuntime / boucle / volumĂ©trieContrĂŽler TIME, boucle applicative, explosion volume, requĂȘtes DB2.
U4038Language Environment user abendCOBOL/LE runtimeLire messages CEE, SYSOUT applicatif et cause précédente.
Important : un ABEND n’est pas toujours la root cause initiale. Le moteur cherche aussi les messages juste avant l’ABEND : dataset allocation, RACF, message applicatif, compiler/binder ou utility.

Exports et exploitation des résultats

Rapport HTML

Vue lisible : statut, score, root causes, issues, steps, messages, datasets et evidence lines.

Analyse JSON

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

Issues CSV

Une ligne par anomalie, avec sévérité, code, contexte et recommandation.

Steps CSV

Une ligne par step, avec programme, RC, ABEND et statut.

Messages CSV

Messages classifiés par famille : HASP, IEF, IEC, ICH, CEE, IDC, DFH, DSN, etc.

Exit code

Mode batch strict via --fail-on-critical ou --fail-on-error.

Exemple de synthĂšse console

Console output
MVS JobLog Doctor V2
Status           : FAILED
Highest severity : CRITICAL
Risk score       : 100/100
Max RC           : 12
Abends           : S0C7
Steps            : 3
Issues           : 8
Datasets         : 6

ROOT CAUSE CANDIDATE
S0C7 - Data exception
Area: Data quality / COBOL numeric fields
Recommendation: Validate input file layout against the COBOL copybook.

Idée de table SQL pour historisation

SQL model idea
CREATE TABLE mvs_joblog_run (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    job_name VARCHAR(32),
    job_id VARCHAR(32),
    status VARCHAR(32),
    highest_severity VARCHAR(16),
    risk_score INTEGER,
    max_rc INTEGER,
    abend_codes VARCHAR(255),
    issue_count INTEGER,
    dataset_count INTEGER,
    report_path VARCHAR(500),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Vision produit : la V2 devient une base solide pour un futur portail d’exploitation mainframe : historique SQL, recherche par ABEND, corrĂ©lation batch window, dashboard, et moteur expert plus riche.

Dépannage et bonnes pratiques

1. Le script ne détecte pas le job ou les steps

Cause possibleCorrection
Le fichier n’est pas un texte brut.Exporter depuis SDSF/JES en format texte, pas en PDF image.
Les lignes ont été tronquées ou reformattées.Conserver la largeur fixe et éviter Word/Excel avant parsing.
Le joblog ne contient pas JESMSGLG ou JESYSMSG.Récupérer les sorties JES complÚtes du job.
Format site spécifique ou messages custom.Ajouter une rÚgle dédiée dans le parser V2 ou enrichir le dictionnaire de patterns.

2. Trop d’issues remontĂ©es

Certains joblogs contiennent beaucoup de warnings applicatifs. Utiliser --profile, ajuster les seuils de RC, et exploiter le CSV issues pour filtrer les messages réellement critiques.

Less strict command
python mvs_joblog_doctor_v2.py input/joblog.txt \
  --profile training \
  --rc-warning 8 \
  --rc-error 12 \
  --rc-critical 16 \
  --html output/reports/joblog_training_report.html

3. Check-list avant partage d’un vrai joblog

  • Utiliser --redact pour masquer les datasets dans les rapports.
  • Supprimer ou anonymiser user IDs, jobnames sensibles, applications, volumes et environnements.
  • Conserver une copie brute interne pour vĂ©rifier la fidĂ©litĂ© du parsing.
  • Garder le contexte : date, fenĂȘtre batch, scheduler, application, incident utilisateur.
  • Ne jamais conclure uniquement sur l’ABEND final : lire les messages prĂ©cĂ©dents.
Point critique : un joblog peut exposer des informations opérationnelles sensibles. Avant tout partage externe, générer une version anonymisée et vérifier manuellement les evidence lines.