Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdRené Smeets Laatst gewijzigd meer dan 10 jaar geleden
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 ?
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.