MainframeSupports
tip uge 52/2017:

Jeg har før skrevet tip om at submitte jobs fra et SYSPLEX til et andet, og også om, hvordan man kan pakke et dataset, så det kan udpakkes fuldstændig magen til på et helt andet SYSPLEX. Disse to ideer kan kobles sammen til et samlet job, der kan overføre et dataset fra et SYSPLEX til et andet. Der findes forskellige produkter, der kan klare opgaven mere elegant, men disse produkter kræver at blive sat rigtigt op for at virke. Det gode ved dette tip er, at det virker bare der er forbindelse via JES mellem to SYSPLEX og, at det samme TSO userid findes på begge SYSPLEX og har samme password (går jeg ud fra, lige netop den detalje har jeg ikke prøvet).

Følgende eksempel kan bruges til at overføre dataset MYUSER.DATASET fra et SYSPLEX til et andet. User MYUSER skal findes begge steder. Igen har jeg været nødt til at inkludere et JOB-kort, som du skal huske at rette til, så det virker på den JES som JES-node OTHERPLX vil repræsentere på din installation. THISPLEX skal erstattes med navnet på JES-noden for det SYSPLEX, hvor du submitter nedenstående job og dermed også der, hvor MYUSER.DATASET findes.

//TRANSMIT EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
DELETE 'MYUSER.DATASET.XMT'
XMIT THISPLEX.MYUSER DA('MYUSER.DATASET') OUTDSN('MYUSER.DATASET.XMT')
/*
//SUBMIT   EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSIN    DD DUMMY
//SYSUT2   DD SYSOUT=(,INTRDR)
//SYSUT1   DD DATA,DLM='##',LRECL=80
//MYUSERX  JOB ,,CLASS=A,MSGCLASS=X,COND=(4,LT)
/*ROUTE XEQ OTHERPLX
//RECEIVE  EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
DELETE 'MYUSER.DATASET'
RECEIVE INFILE(MYDATA)
DA('MYUSER.DATASET')
//MYDATA    DD DATA,DLM='?#'
##
//         DD DISP=SHR,DSN=MYUSER.DATASET.XMT

Og hvad er det så lige, der foregår? Første step pakker MYUSER.DATASET i XMIT-format i MYUSER.DATASET.XMT (og sletter lige sidstnævnte først). Andet step submitter et job til OTHERPLX. Dette job findes inline i DD-navnet SYSUT1, starter i linien med job-kortet og slutter med linien ##. Men hov, der står et DD-kort og flagrer i allersidste linie, hvad er nu det? Jo, her bliver det i XMIT-format pakkede oprindelige dataset (MYUSER.DATASET) til inline input til DD-navnet MYDATA i det job, der kommer til at køre på OTHERPLX. XMIT-formatet er kendetegnet ved altid at være i FB 80 format, så det er ideelt som inline data i JCL.

Jobbet, der kommer til at køre på OTHERPLX, starter med at delete MYUSER.DATASET og herefter laver jobbet en RECEIVE af de inline data, der findes på DD-navn MYDATA. Disse inline data udpakkes, og MYUSER.DATASET genskabes med samme DCB-oplysninger og data som det originale dataset på THISPLEX. Og nu vil du sikkert sige, at det da var meget lettere, at lave en TSO XMIT af MYUSER.DATASET til OTHERPLX og herefter at lave en RECEIVE på OTHERPLX. Og det kan du have ret i, men det kræver, at du logger på OTHERPLX ud over at logge på THISPLEX. Og så har XMIT/RECEIVE den ulempe, at kommandoerne skal passe sammen parvis. Hvis der går kuk i denne rækkefølge, så kan du være ilde ude. Disse problemer har du ikke med ovenstående teknik.

Alt er dog ikke rosenrødt med ovenstående metode. Det er ikke ubegrænsede datamængder, der kan overføres. MVS systemprogrammørerne kan begrænse antallet af linier, der kan overføres med ROUTE XEQ teknikken. Og så har du måske også bemærket DLM='?#' på MYDATA DD-navnet. Hvis denne tegnkombination optræder som de to første tegn i en linie i XMIT-formatet, så vil MYUSER.DATASET på OTHERPLX kun indeholde data indtil disse to tegn optræder. Du kan selv udtænke andre kombinationer af to tegn, som er endnu mere usandsynlige. Jeg vil dog sige, at hvis du overfører SMF-data eller LOAD-moduler med overstående teknik, så er der overhængende fare for, at du ikke får alle data med. Jeg har selv været der. Men teknikken fungerer fint til almindelig tekstbaserede datasets.

Ved hjælp at dette tip har jeg implementeret CUT og PASTE på tværs af de forskellige SYSPLEX, der er på min installation. Det er en af de vildeste ideer, jeg nogensinde har fået. Det er tæt på ren magi!! Du er velkommen til at kontakte mig for at høre nærmere.

Forrige danske tip        Last tip in english        Tip oversigten