BMP oder nicht BMP

IBM MVS / IMS Batch Message Processing
Jobs parallel zur Online Session durchführen


Inhalt

Kriterien

Beispiel:
//AMC6904  EXEC PGM=XMSDCTL0,REGION=80M,
//        PARM='BMP,DIAM900,BMLB65B,,,C00000,,,,1,,,,IMSB'
----------------------------------------------------------------------
 
Checkliste
Pgm benutzt Aufruf Bemerkungen
ASYS3 EXEC PGM=XMSDCTL0,
PARM='BMP,DIAM900,....,
 echter BMP Job
ASYS3 EXEC PGM=XMSDCTL0,
PARM='DLI,DIAM900,...
kein echter BMP, 
nicht restartfähig, kein Online Update
läuft jedoch schneller
keine DB EXEC PGM=<pgmname> normales Batch Programm
offline DBs
z.B. Parallel
EXEC PGM=DFSRRC00,
PARM='DLI,SBSP59A9
es werden keine Datenbanken gelesen, die gleichzeitig online sind


Echte BMP Jobs

müssen bei der BMP Steuerung angemeldet werden:

//* -------------------------------------------------------------
//*    BMP008   ANMELDEN DES JOBS BEI DER BMP-STEUERUNG
//*             STEPNAME UND DATEIEN MÜSSEN angemeldet werden
//* -------------------------------------------------------------
//ANMELDEN  EXEC PGM=XMSDCTL0,REGION=2560K,
//            PARM='BMP,BMP008,BMCH01__,,,,,,,,,,,IMST'
//PROTO     DD SYSOUT=*
//*           RUNNING ) -
//BMPSYSIN  DD *
 ANMELDEN  (  JOB   (JOBNAME(SLBARME4)                   -
              RUNNING RESTARTABLE (SOFORT)) -
              STEP  (STEPNAME(AF106274) PGM(DIAM900)    -
                     DATEI (DD(FAKUNDI)  OPT(INPUT)   )  -
                     DATEI (DD(LISTE1)   OPT(OUTPUT)  )  -
                    )                                    -
           )
 

Echte BMP Jobs Löschen

Vorgehensweise

  1. Status von RUNNING auf ABENDED setzen
  2. DELETE Job
  3. Job normal neu starten


Ablaufsteuerung per Aktionsfolge

________________________________________________________________

|                AKTIONSFOLGE AF699375                          |

|                                                               |
|     BMP-VERARBEITUNG: NEUZUORDNUNG VON AFS-KUNDEN             |
|                                                               |
|     U. BARMEYER, PRISMA GMBH                                  |
|                                                               |
|     XC6975 - VERARBEITEN KONTEN BIS CHCKPT ERFORDERLICH       |
|     XC6975R - RESTART             (BEIDE IN AMC6975)          |
|                                                               |
|                        ÿÿÿÿÿÿÿÿÿÿ                             |
|                        |XC6975R |                             |
|                        ÿÿÿÿÿÿÿÿÿ'                             |
|                            !                                  |
|                            V                                  |
|                        ÿÿÿÿÿÿÿÿÿ                              |
|    +-- RC=200(ENDE)----|XC6975 |-- RC=100(CHKPT)------+       |
|    !              +--> ÿÿÿÿÿÿÿÿ'                      !       |
|    !              !                                ÿÿÿÿÿÿÿ    |
| ÿÿÿÿÿÿÿ           +--------------------------------|CHKPT|    |
| |CHKPT|                                            ÿÿÿÿÿÿ'    |
| ÿÿÿÿÿÿ'                                                       |
|    !                    ÿÿÿÿÿÿ                                |
|    +------------------> |ENDE|                                |
|                         ÿÿÿÿÿ'                                |
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|



 
 

Programmbeispiel

main()
...
...// -----------------------------------------------
// noch kein Checkpoint vorhanden: alles initialisieren
// -----------------------------------------------
if (up_rc EQ 1)
  {
  TRC_wto13 ("Module: XC6975: no chkpt");
  xcstr_copy (g.progname, "AMC6975          ");
  init_globals (pAmkb);
  c.protok_seite = 1;
  c.counter9 = 0;
  c.loopcnt  = 0;
  rc_xb1 = dbget_vertrag (user_ktonr, &LB1, "FIRST");
  rc_xb1 = dbget_vertrag (user_ktonr, &LB1, "NKEY");
  xcstr_copy (c.chckpntktonr, LB1KTONR);
  // Open, Reopen Files
  c.eufile=xcfil_bmp_open ("EUFILE", BMPOUTPUT)        // Outputfile
  xcprt_open_bmp (&c.protok,"PROTOK", header_protok);  // Listenkopf
  }

// -----------------------------------------------
// Es gab einen Checkpoint: DB positionieren
// -----------------------------------------------
if (up_rc EQ 0)
  {
  TRC_wto13 ("Module: XC6975: mit chkpt");
  rc_xb1 = dbget_vertrag (c.chckpntktonr, &LB1, "FIRST");
  if (rc_xb1 NE OK)
    xc_abbrechen("AMC6975", (fehler, "Kein XB1 nach Checkpoint"));
  }

// ---------------------------------------------------------
// Bearbeitung oder Fortsetzung der Bearbeitung nach Checkpoint
// ---------------------------------------------------------
up_rc = bestand_bearbeiten(&LB1);

...