De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

ING Insurance: REXX-scripting voor IBM-mainframe

Verwante presentaties


Presentatie over: "ING Insurance: REXX-scripting voor IBM-mainframe"— Transcript van de presentatie:

1 ING Insurance: REXX-scripting voor IBM-mainframe
Tijl Van den Broeck Stage 14/03/2005 – 03/06/2005

2 Overzicht Inleiding Situering Omgevingsschets Stageopdrachten Besluit

3 1. Inleiding Fusie (1999 – 2001) ING Group ING Insurance Vaderlandsche
RVS BBL Verzekeringen

4 2. Situering ING België OPS/IT … BIS IT Services System Engineering
Afdeling: IBM Mainframe Engineering 350 MIPS want hardware licensed, afhankelijk van betaling, wordt er meer soft- en hardware beschikbaar. Bij OPS/IT van ING België, maar opdrachten waren gerelateerd aan Insurance IBM MF Engineering

5 IBM z/890 A04 Mainframe @ 350 MIPS
3. Omgevingsschets 4 x FICON EMC² Symmetrix 8830 Disk Subsystem IBM z/890 A MIPS 2 x 1GBit OSA Express (Ethernet) 10 x ESCON ESCON = Enterprise Systems connection, seriële aansluiting van IBM FICON = ESCON over FIBER OSA Express  ethernet Symmetrix = SAN server, storage systeem, aangesloten op mainframe ING Netwerk IBM 3494 Tape Library

6 4. Stageopdrachten Disaster Recovery Procedure Volume movement VPS met Europese printers

7 4. Stageopdracht: Disaster Recovery Procedure (1)
INSERT PRENTJE WTC crash HERE

8 4. Stageopdracht: Disaster Recovery Procedure (2)
Tape ± 1 TB  5 uur

9 4. Stageopdracht: Disaster Recovery Procedure (3)
Timefinder: ESTABLISH SPLIT RE-ESTABLISH Origineel BCV

10 4. Stageopdracht: Disaster Recovery Procedure (4)

11 4. Stageopdracht: Disaster Recovery Procedure (5)
REXX-scripting: Keten 14 JCL-code datasets 6 REXX-programma’s Werking: 16u: ESTABLISH / RE-ESTABLISH 0  2u: SPLIT Back-up BCV naar tape Genereer herstelling JCL-code Schrijf JCL-code naar tape Stuur met tapenummers

12 4. Stageopdracht: Volume movement (1)
//SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR 4. Stageopdracht: Volume movement (1) //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR Verplaatsen volumes adressen en 3020 ? //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR Formateren ? //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR Rollback ? //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR //SLUOA1 JOB ,'PHYSICAL FULL COPY',CLASS=L,MSGCLASS=T,TYPRUN=HOLD //* //STEP0010 EXEC PGM=ADRDSSU,REGION=6M PARM='TYPRUN=NORUN' //* //SYSPRINT DD SYSOUT=* //INVOL1 DD VOL=SER=SLUOA1,UNIT=3390,DISP=SHR //OUTVOL1 DD VOL=SER=EM3040,UNIT=3390,DISP=SHR //SYSIN DD * COPY FULL INDD(INVOL1) OUTDD(OUTVOL1) - COPYVOLID - ALLEXCP - ALLDATA(*) - CHECKVTOC - CANCELERROR - ADMINISTRATOR Initialiseren ?

13 4. Stageopdracht: Volume movement (2)
// VOLSMIGR.CNTLSET // EXCLUDES: E3012 // IN-VOLS: S S3020 // OUT-VOLS: D32A1-32A7 VOLSMIGR.REX 3010 32A1 3011 32A2 3012 32A3 3013 32A4 TEMPLATES 3014 32A5 3015 32A6 3020 32A7 INIT COPYJCL REFORMAT REFORMUN

14 4. Stageopdracht: VPS met Europese printers (1)
Migratie Insurance  Europees Printernamen wijzigen Mainframe printers hardcoded Probleem ! Common Insurance Desktop Services naar Common European Desktop Services Printernamen moeten wijzigen naar CEDS naamgeving zoals PPBE2525 etc… Mainframe: verschillende printers hardcoded in programma’s, probleem! Oplossing: printernamen behouden, maar VPS aanpassen. VPS = VTAM Printer Support System, VTAM = Virtual Telecommunications Access Method, interface naar SNA (Systems Network Architecture). SNA is een mainframe printing protocol van IBM. VPS maakt dus “universeel” gebruik van printers mogelijk, mbv TCP/IP printing, direct printing, printen naar andere printer server,… Oplossing: VPS aanpassen

15 4. Stageopdracht: VPS met Europese printers (2)
Insurance  European Naam + L / P Vb. DEST=H016L Naam + L / P Vb. DEST=H016L Printer op MF Naam + Parameters: PRODLAND of PRODPORT Vb. TCPPRTR=H016, PCMDSTRT= (PRODLAND,PRODLAND) Naam + Parameters: PRODLAND of PRODPORT Vb. TCPPRTR=PPBE2548, PCMDSTRT= (PRODLAND,PRODLAND) Printer bestemming Printernaam OP MAINFRAME ! én Uitzonderingen !

16 4. Stageopdracht: VPS met Europese printers (3)
CEDS-IIB_printing.xls FTP (VINF3SOF.VPSCEDS.EXPORT.CSV) Programma VPSGENER CEDS NONCEDS 1 2 3 4

17 4. Stageopdracht: VPS met Europese printers (4)
Oplossing uitzonderingen ? Alle printers geladen uit LISTVPS Splitsing: STATLVPS: Statisch DYNLVPS: Dynamisch, door VPSGENER LISTVPS

18 4. Stageopdrachten Disaster Recovery Procedure  Productie Volume movement  Productie VPS met Europese printers  Tested

19 Besluit IBM Mainframes: ≠ School ≠ Windows / MacOS / Unix / Linux
≠ Dood !  MF streeft naar integratie Vragen ?


Download ppt "ING Insurance: REXX-scripting voor IBM-mainframe"

Verwante presentaties


Ads door Google