Iga ettevõtte suurarvuti kasutab kahte omavahel põimunud keelt, mida enamik tänapäeva arendajaid pole kunagi kirjutanud. COBOL rakendab äriloogikat, arvutusi, failide töötlemist, kirjete teisendamist ja regulatiivset aruandlust. JCL (tööjuhtimiskeel) orkestreerib selle loogika täitmist, määratledes, millised programmid, mis järjekorras, milliste failidega, millistel tingimustel töötavad ja mis juhtub siis, kui need õnnestuvad või ebaõnnestuvad. Kumbki keel pole teiseta täielik. COBOL-programmil pole aimugi, kust tema sisendfailid tulevad või kuhu tema väljund läheb; JCL vastab mõlemale küsimusele enne esimese kirje lugemist.
Suurarvutisüsteeme haldavate, auditeerivate või moderniseerivate organisatsioonide jaoks ei ole JCL-i ja COBOLi vahelise seose mõistmine valikuline taustteadmine. See on eeltingimus kõigele: mõjuanalüüs enne mis tahes muudatust, dokumenteerimine enne mis tahes migratsiooni, teadmiste edastamine enne mis tahes eksperdi pensionile jäämist. Töö, mis töötleb igaõhtust arveldust, partiitöötlus, mis genereerib kvartaliaruandeid, protseduur, mis edastab andmeid ühest süsteemist teise – kõik see on määratletud JCL-i poolt, teostatud COBOLi poolt ning arusaadav ainult kahanevale hulgale inseneridele, kes on mõlemaga töötanud.
Mis on JCL?
JCL on lühend sõnadest Job Control Language. See on skriptimiskeel, mida IBM-i suurarvutites kasutatakse partiitööde (pakktööde) täitmiseks esitamiseks. JCL ise andmeid ei töötle. See annab operatsioonisüsteemile juhiseid programmide käivitamiseks: millist programmi käivitada, milliseid faile kättesaadavaks teha, millist mälu ja protsessori ressurssi eraldada, mida teha, kui samm ebaõnnestub, ja millises järjekorras käivitada mitu sammu ühe töö raames.
Iga JCL-töö koosneb kolmest põhilisest lausetüübist:
JOB-lause, tuvastab süsteemi jaoks töö ning määratleb raamatupidamise, prioriteedi ja ajastamise parameetrid.
EXEC-lause, määrab etapis käivitatava programmi või protseduuri.
DD (andmete definitsiooni) avaldus, määratleb andmekogumid, mida programm loeb või kirjutab, sealhulgas nende asukoha, vormingu ja paigutuse.
jcl
//PAYBATCH JOB (ACCT#7), 'PAYROLL RUN',
// CLASS=A, MSGCLASS=X, NOTIFY=&SYSUID
//*
//STEP010 EXEC PGM=PAYROLL1
//STEPLIB DD DSN=PROD.PAYROLL.LOADLIB,DISP=SHR
//EMPFILE DD DSN=PROD.PAYROLL.EMPLOYEE,DISP=SHR
//TRANSACT DD DSN=PROD.PAYROLL.TRANS.D&&DATE,DISP=SHR
//PAYRPT DD SYSOUT=A
//SYSOUT DD SYSOUT=*
//SYSIN DD DUMMY
Selles näites: PAYBATCH on ametinimetus, STEP010 on töö üks etapp, PGM=PAYROLL1 annab nime käivitatavale COBOL-programmile ja DD-laused defineerivad iga faili, millele programm pääseb ligi. COBOL-programm PAYROLL1 ei tea ega hooli, kus EMPFILE or TRANSACT Kui need pärinevad füüsiliselt, loeb see neid lihtsalt ddname järgi. JCL lahendab enne täitmise algust füüsilise asukoha, kirjevormingu ja juurdepääsurežiimi.
JCL kataloogitud protseduurid (PROC-id)
Selle asemel, et kirjutada iga töö jaoks sama JCL-mustrit, defineerivad suurarvutite meeskonnad kataloogitud protseduure (PROC-e), mis kapseldavad korduvkasutatavaid täitmismustreid. PROC on protseduuriteegis talletatud mall; üksikud tööd viitavad sellele ja vajadusel tühistavad teatud parameetrid.
jcl
//PAYPROC PROC RUNDATE=TODAY
//COMPILE EXEC PGM=IGYCRCTL,PARM='OBJECT,NODUMP'
//SYSIN DD DSN=PROD.COBOL.SRC(&MEMBER),DISP=SHR
//SYSOBJ DD DSN=&&OBJSET,DISP=(NEW,PASS),
// UNIT=SYSDA,SPACE=(TRK,(10,5))
//LKED EXEC PGM=IEWL,PARM='LIST,LET,XREF'
//SYSLIN DD DSN=&&OBJSET,DISP=(OLD,DELETE)
//SYSLMOD DD DSN=PROD.PAYROLL.LOADLIB(&MEMBER),
// DISP=SHR
// PEND
PROC-i kutsumine tööülesande kaudu:
jcl
//COMPILE EXEC PAYPROC,MEMBER=PAYROLL1,RUNDATE=20251205
See üksik EXEC-lause laieneb täitmisajal täielikuks PROC-iks koos MEMBER ja RUNDATE asendatud kõikjal &MEMBER ja &RUNDATE ilmuvad. PROC-id on üks peamisi põhjuseid, miks JCL-i ja COBOL-i vaheline vastendamine on keeruline: üks töö võib ühe PROC-viite kaudu käivitada kümneid COBOL-programme ja tegelikult käivitatavad programmid sõltuvad sümboolsetest parameetritest, mis erinevad käivitamisel.
Mis vahe on JCL-il ja COBOLil?
JCL-i ja COBOLi mainitakse sageli koos, kuid neil on täiesti erinevad rollid. Kumbki ei asenda teist ja mõlemad on suurarvutite partiitöötluse toimimiseks vajalikud.
| mõõde | JCL | COBOL |
|---|---|---|
| Eesmärk | Orkestreerib teostust | Rakendab äriloogikat |
| Mida see määratleb | Tööd, sammud, failid, tingimused | Programmid, andmestruktuurid, arvutused |
| Kui see töötab | Enne programmi käivitamist (seadistamine) ja pärast (puhastamine) | Programmi täitmise ajal |
| Loeb/kirjutab andmeid | Andmekogumi eraldamise kaudu (DD-laused) | FILE SECTIONi ja READ/WRITE käskude kaudu |
| Viga käsitlemisel | Tagastuskoodid, tingimusliku sammu täitmine | ERANDITE KÄITLEJAD, PERFORM vearutiinid |
| Kaasaskantavus | IBM z/OS-i spetsiifiline | Kompilaatorite abil platvormideülene kaasaskantav |
| Kes seda kirjutab | Süsteemiprogrammeerijad, partiiinsenerid | Rakenduste arendajad |
| Kaasaegne vaste | CI/CD torujuhe + konteineri orkestreerimine | Rakenduskood (Java, Python, C++) |
Lihtsaim viis seose kontseptualiseerimiseks on järgmine: JCL on juurutamise ja orkestreerimise kiht; COBOL on rakenduste kiht. Kaasaegses pilvepõhises süsteemis täidaksid JCL-i rolli Kubernetes'i töömanifestid, shelli skriptid ja CI/CD torujuhtme etapid. COBOL-i rolli täidaksid Javas, Pythonis või Go-s kirjutatud rakendusteenused.
Kuidas JCL COBOLi käivitab: täitmisahel
Tee JCL-tööst COBOL-i teostuseni järgib järjepidevat ahelat. Iga sammu mõistmine on aluseks JCL-COBOL-i kaardi sisu mõistmisele.
1. samm: töö esitamine. JCL-töö esitatakse töö sisestamise allsüsteemile (JES). JES paneb töö järjekorda ja hakkab selle lauseid lugema.
2. samm: sammude seadistamine. Iga EXEC-sammu jaoks otsib süsteem nimetatud programmi STEPLIB DD-lausega määratud laadimisteegist. Kui STEPLIB-i pole määratud, otsib süsteem süsteemi lingiteegist.
3. samm: andmestiku eraldamine. Enne programmi käivitamist eraldab süsteem kõik selles etapis DD-lausetega määratletud andmekogumid. See hõlmab failide avamist, sisendandmekogumite olemasolu kontrollimist ja väljundandmekogumite loomist.
4. samm: programmi käivitamine. COBOL-programm käivitub. See pääseb failidele ligi JCL-is määratletud ddname-de abil. OPEN INPUT EMPFILE COBOL-is seotakse see otse DD-lausega nimega EMPFILE JCL-is.
5. samm: Tagastuskoodi hindamine. Kui COBOL-programm lõpeb, määrab see tagastuskoodi (tavaliselt 0 edu korral, 4 hoiatuse korral, 8 vea korral, 12 või 16 tõsise vea korral). JCL kasutab COND parameetrid või IF/THEN/ELSE konstruktsioonid, et teha kindlaks, kas järgmised sammud peaksid selle koodi põhjal käivituma.
6. samm: andmestiku käsutamine. Pärast seda etappi töötleb süsteem igas DD-lauses määratletud andmestiku paigutusi: säilita, kustuta, kataloogi lisa, kataloogist eemalda või järgmisse etappi edasi liigu.
Järgnev näide näitab, kuidas see ahel praktikas välja näeb, vasakul JCL, paremal vastavad COBOL-elemendid:
jcl
//STEP020 EXEC PGM=ACCTREC
//STEPLIB DD DSN=PROD.ACCOUNT.LOADLIB,DISP=SHR
//INFILE DD DSN=PROD.ACCT.DAILY.INPUT,DISP=SHR ← maps to COBOL SELECT/ASSIGN
//OUTFILE DD DSN=PROD.ACCT.PROCESSED, ← maps to COBOL SELECT/ASSIGN
// DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(CYL,(5,2),RLSE)
//RPTFILE DD SYSOUT=A ← maps to COBOL WRITE report
//SYSOUT DD SYSOUT=*
COBOL-programm ACCTREC sisaldab:
kobol
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INFILE ASSIGN TO INFILE. *> maps to DD INFILE
SELECT OUTFILE ASSIGN TO OUTFILE. *> maps to DD OUTFILE
SELECT RPTFILE ASSIGN TO RPTFILE. *> maps to DD RPTFILE
DATA DIVISION.
FILE SECTION.
FD INFILE
RECORDING MODE IS F
BLOCK CONTAINS 0 RECORDS
RECORD CONTAINS 200 CHARACTERS.
01 ACCOUNT-RECORD.
05 ACCT-NUMBER PIC X(10).
05 ACCT-BALANCE PIC S9(13)V99 COMP-3.
05 ACCT-STATUS PIC X(2).
. SELECT INFILE ASSIGN TO INFILE COBOLi FILE-CONTROL osas ühendub see DD-lausega nimega INFILE JCL-is. See on põhiline kaardistussuhe: COBOL kasutab loogilisi failinimesid; JCL lahendab need füüsilisteks andmekogumiteks.
JCL-i abendkoodid: mida need tähendavad
JCL-i abend-koodid (ebanormaalsed lõppkoodid) tuvastavad, miks tööetapp ootamatult lõppes. Need kuvatakse töö väljundis järgmiselt: S000 (süsteemi hälve) või U0000 (kasutaja abend) koodid. Nende mõistmine on oluline partiitööde tõrgete diagnoosimiseks.
| Abend-kood | KASUTUSALA | Üldine põhjus |
|---|---|---|
| S001 | süsteem | Andmestiku lugemisel või kirjutamisel sisend-/väljundviga |
| S013 | süsteem | DCB atribuudi mittevastavus, kirje pikkus või vormingu mittevastavus JCL DD ja COBOL FD vahel |
| S0C4 | süsteem | Salvestusruumi kaitse erand, programm üritas juurde pääseda mälule väljaspool oma eraldatud piirkonda |
| S0C7 | süsteem | Andmete erand, katse teha aritmeetilisi toiminguid mittenumbriliste andmetega (väga levinud COBOL-i veateade) |
| S322 | süsteem | Ajalimiit ületatud, töö kestis kauem kui TIME parameeter lubas |
| S806 | süsteem | Laadimismoodulit ei leitud, programmi nimega EXEC PGM= pole üheski otsitud laadimisteegis |
| S913 | süsteem | Andmekogumile juurdepääsu turvarikkumine, RACF või samaväärne juurdepääs keelatud |
| U0000 | Kasutaja | Rakenduse määratletud abend, COBOL-programm nimega STOP RUN kasutajakoodiga |
| U4076 | Kasutaja | IMS-i spetsiifiline abend, andmebaasi juurdepääsu tõrge |
Kõige levinum tootmise kõrvalekalle, S0C7, tekib siis, kui COBOL-programm proovib teha aritmeetilisi toiminguid väljal, mis sisaldab tühikuid või mittenumbrilisi märke. Tüüpiline põhjus on mittevastavus COBOL-programmi oodatava andmevormingu ja JCL-i edastatud tegelike andmete vahel, mis on täpselt selline lahknevus, mida JCL-i ja COBOL-i vastavusse viimine enne kesköise tootmisvea tekkimist paljastab.
COND-parameeter ja tingimuslik täitmine
JCL kontrollib, millised sammud käivitatakse, tuginedes eelmiste sammude tagastuskoodidele, kasutades COND parameetrit:
jcl
//STEP010 EXEC PGM=VALIDATE,COND=(4,LT)
//STEP020 EXEC PGM=PROCESS, COND=(4,LT,STEP010)
//STEP030 EXEC PGM=CLEANUP, COND=(0,NE,STEP010)
COND=(4,LT) tähendab: jätke see samm vahele, kui mõne eelmise sammu tagastuskood on väiksem kui 4. COND=(4,LT,STEP010) tähendab: jätke see samm vahele, kui STEP010 tagastuskood on väiksem kui 4. COND=(0,NE,STEP010) tähendab: jäta STEP030 vahele, kui STEP010 tagastuskood ei ole võrdne 0-ga, st käivita puhastus ainult siis, kui STEP010 õnnestus.
Kaasaegne JCL kasutab IF/THEN/ELSE/ENDIF selle asemel konstruktsioon, mis on loetavam:
jcl
//IF010 IF (STEP010.RC = 0) THEN
//STEP020 EXEC PGM=PROCESS
// ENDIF
//IF020 IF (STEP010.RC > 4) THEN
//STEP030 EXEC PGM=ERRORHANDLER
// ENDIF
Tingimuslike täitmisteede kaardistamine on JCL-COBOL analüüsi üks kriitilisemaid ja sagedamini kahe silma vahele jäetud elemente. COBOL-programm, mis käivitub ainult siis, kui eelmine samm ebaõnnestub, võib käsitleda veatingimusi, tagasipööramise loogikat või taastamisprotseduure – funktsioone, mis on täiesti nähtamatud, kui vaadata ainult COBOL-i lähtekoodi ilma seda käivitava JCL-ita.
JCL, COBOL ja DB2: kolmekihiline pinu
Enamik suurarvutite tehingusüsteeme sisaldab lisaks JCL-ile ja COBOL-ile ka kolmandat komponenti: DB2, IBM-i relatsioonandmebaas. COBOL-programmid pääsevad DB2-le ligi manustatud SQL-lausete (EXEC SQL-plokid) kaudu. JCL haldab DB2 alamsüsteemi ühendust ja DBRM-i (andmebaasi päringumoodulit) spetsiifiliste DD-lausete kaudu.
jcl
//DBRM DD DSN=PROD.DBRMLIB.DATA(ACCTREC),DISP=SHR
//SYSPRINT DD SYSOUT=*
kobol
WORKING-STORAGE SECTION.
EXEC SQL
INCLUDE SQLCA
END-EXEC.
PROCEDURE DIVISION.
MAIN-LOGIC.
EXEC SQL
SELECT ACCT_BALANCE, ACCT_STATUS
INTO :WS-BALANCE, :WS-STATUS
FROM ACCOUNT_MASTER
WHERE ACCT_NUMBER = :WS-ACCT-NUM
END-EXEC.
IF SQLCODE NOT = 0
PERFORM DB2-ERROR-ROUTINE
END-IF.
JCL-COBOL-DB2 pinus pakub JCL käituskeskkonda ja juurdepääsu andmestikule; COBOL rakendab äriloogikat ja kutsub andmebaasi; DB2 salvestab ja otsib andmeid vastavalt COBOL programmi manustatud SQL-ile. Iga DB2-d kasutava COBOL programmi täielik sõltuvuskaart peab sisaldama mitte ainult seda, millised JCL-tööd seda käivitavad, vaid ka seda, milliseid DB2 tabeleid see loeb ja kirjutab, millistele veergudele see juurde pääseb ja millised teised programmid samadele tabelitele juurde pääsevad, sest tabeli skeemi muutmine mõjutab kõiki sellele viitavaid COBOL programme.
Miks on JCL-COBOL-i kaardistamine moderniseerimise seisukohalt oluline?
JCL-i ja COBOL-i kaardistamine ei ole eelkõige tehniline harjutus. See on riskijuhtimise harjutus. Iga suurarvutisüsteemi muudatus, olgu selleks JCL-parameetri muutmine, sammu lisamine, andmestiku nime muutmine või töö käivitatava COBOL-programmi muutmine, toob kaasa tagajärgi, mis ulatuvad muudetud komponendist kaugemale. Ainus viis nende tagajärgede täpseks ulatuse määramiseks enne muudatuse tegemist on omada täielikku kaarti sellest, mis on olemas ja kuidas kõik on omavahel seotud.
Enne migratsiooniPakktöötluse üleviimine suurarvutist pilve nõuab teadmist, millised JCL-tööd on olemas, milliseid COBOL-programme need kutsuvad, millised andmekogumid liiguvad etappide vahel, milline on täitmisjärjestus ja mis juhtub, kui etapid ebaõnnestuvad. Ilma selle kaardita töötab migreerimismeeskond mittetäieliku dokumentatsiooni või üldse mitte mingisuguse dokumentatsiooniga. Etapid jäävad kahe silma vahele. Tootmises avastatakse sõltuvusi. Üleminekukuupäevad nihkuvad.
Enne mis tahes koodi muutmistCOBOL-programmi muutmine ilma, et oleks kontrollitud, milliseid JCL-töid see käivitab, võib katkestada tööd, mis töötavad erinevates tingimustes või erinevate andmestiku konfiguratsioonidega. JCL-parameetri muudatus, mis tundub lokaalne, võib mõjutada COBOL-programmi käitumist, mis tugineb konkreetsetele andmestiku atribuutidele. Mõjuanalüüs nõuab enne mis tahes muudatuste tegemist kogu JCL-COBOL-andmestik ahela tundmist.
Teadmiste edasiandmiseksKui COBOL-arendaja, kes on kakskümmend aastat partiisüsteemi haldanud, pensionile läheb, võtab ta endaga kaasa JCL-tööde ja COBOL-programmide vahelise seose mentaalse mudeli. Dokumenteeritud kaart on ainus mehhanism selle teadmise edastamiseks järgmisele meeskonnale. Ilma selleta pärivad uued arendajad süsteemi, mida nad ei saa ohutult muuta.
Vastavusauditi jaoksRegulatiivsed auditid nõuavad sageli selle tõendamist, et finantsarvutused, andmete teisendused või juurdepääsu kontroll toimivad vastavalt dokumenteeritule. Kui JCL-i ja COBOL-i suhe on dokumenteerimata, on selle tõendamine võimatu ilma süsteemi auditi surve all pöördprojekteerimiseta.
JCL-i haldustööriistad ja analüüsiplatvormid
Selle artikli Search Console'i andmete mitmekeelne olemus, kus päringud JCL-i haldustööriistade kohta on esitatud itaalia, prantsuse, hispaania, jaapani ja saksa keeles, peegeldab seda, kui globaalselt on suurarvutite IT-kogukond hajutatud ja kui järjepidevalt seisavad iga piirkonna meeskonnad silmitsi sama probleemiga: nende JCL-i ja COBOL-i dokumentatsioon on puudulik, aegunud või puudub üldse.
JCL-i analüüsi ja haldamise tööriistad jagunevad kolme kategooriasse:
IBM-i natiivne tööriistakomplektIBM pakub tööde sisestamise allsüsteemi funktsioone, JES-i spoolihaldust ja IBM z/OS Batch Runtime'i. Need tegelevad täitmise ja jälgimisega, kuid ei paku programmidevahelist sõltuvuste analüüsi ega visualiseerimist.
Kolmanda osapoole tööde planeerijadCA7, TWS (Tivoli Workload Scheduler) ja Broadcomi ESP Workload Automation haldavad tuhandete tööde partiiajastamist, pakuvad sõltuvuspõhist ajastamist ja hoiatavad tõrgete eest. Nad mõistavad töö tasemel sõltuvusi, kuid tavaliselt ei analüüsi igas etapis käivitatavaid COBOL-programme.
Staatilise koodi analüüsi ja sõltuvuste kaardistamise platvormidTööriistad, mis parsivad JCL-i ja COBOL-i lähtekoodi, et luua struktuurimudel selle kohta, millised tööd käivitavad milliseid programme, millised programmid pääsevad ligi millistele andmekogumitele ja kuidas andmed süsteemis voolavad. Need pakuvad kihtidevahelist nähtavust, mida tööde ajakava koostajad ja IBM-i natiivsed tööriistad ei suuda: seos konkreetse JCL-i DD-lause ja sellele vastava COBOL-i FILE-CONTROL-kirje vahel või COBOL-i programmi vahel, mis kirjutab andmekogumile, ja järgmise töö vahel, mis loeb seda andmekogumit sisendina.
SMART TS XL kuulub sellesse kolmandasse kategooriasse ja laiendab seda, et hõlmata kõiki ettevõttekeskkonna keeli – COBOL, JCL, PL/I, Assembler, SQL, Java ja teised –, pakkudes keelteülest struktuurianalüüsi, mida ükski ühekeelne tööriist ei suuda pakkuda.
Kuidas SMART TS XL JCL-i ja COBOL-i teisendamine ettevõtte tasandil
JCL-i ja COBOL-i käsitsi kaardistamine on ühe töö puhul teostatav kolmeetapilise meetodi abil. See pole aga teostatav organisatsiooni puhul, kus on 50 000 JCL-i tööd, 200 000 COBOL-programmi ja miljoneid andmekogumite viiteid, mis on kogunenud nelja aastakümne jooksul. Seost konkreetse PROC-i, selle käivitamiseks kasutatavate sümboolsete parameetrite, nende parameetritega seotud COBOL-programmide ja programmide poolt kasutatavate andmekogumite vahel ei saa sellises ulatuses käsitsi jälgida.
SMART TS XL parsib JCL-i ja COBOL-i lähtekoodi, sealhulgas sümboolse parameetri asendusega PROC-e, voosiseseid protseduure, INCLUDE-liikmeid, ülekirjutusi ja tingimusliku täitmisloogikat, ning loob ühtse ristviidete mudeli, mis esindab kõiki süsteemi struktuurilisi seoseid. See mudel on päringutele alluva, navigeeritav ja alati ajakohane, kuna see genereeritakse uuesti lähtekoodist, mitte ei hooldata käsitsi uuendatava dokumendina.
. JCL laienemine võime lahendab sümboolse parameetri asendamise, et näidata mis tahes PROC-i poolt kutsutud tegelikke programme ja andmekogumeid, arvestades iga kutsuva töö poolt rakendatud tühistamisi. PROC, mis kasutab &PGMNAME sümboolse parameetrina ilmub mudelis kõigi konkreetsete programmidena, millele see kõigi kutsujate puhul lahenduse leiab, mitte lahendamata viitena.
. rakenduse sõltuvuste kaardistamine See võimekus loob täieliku graafi JCL-tööst COBOL-programmi, DB2 tabeli ja allavoolu programmini, näidates süsteemi kõiki komponente ja nendevahelisi seoseid. Enne mis tahes moderniseerimismuudatust saab meeskond päringuid esitada: millised tööd seda programmi käivitavad? Milliseid andmekogumeid see programm loeb? Millised teised programmid nendesse andmekogumitesse kirjutavad? Millised tööd järjestuses järgmisena käivituvad?
. mõju analüüs See võimekus loob iga kavandatud muudatuse jaoks loetletud tagajärgede ulatuse: muuda seda käsiraamatut ja vaata kõiki programme, mis seda sisaldavad; muuda selle andmestiku paigutust ja vaata kõiki sellele viitavaid JCL DD lauseid; eemalda see samm ülesandest ja vaata kõiki järgnevaid samme, mis sõltusid selle väljundist.
Meeskondadele, kes seisavad silmitsi JCL-i ja COBOL-i kaardistamisega osana pärand moderniseerimine programm SMART TS XL pakub aluse, mida moderniseerimisteenuse pakkujad – Astadia, TSRI, Advanced ja teised – vajavad enne mis tahes ümberehitustööde alustamist: täielik ja täpne olemasoleva struktuuriline inventuur, nii et ümberehituse ulatus määratakse kindlaks analüüsi, mitte eelduste põhjal.
Kaart ei ole territoorium, vaid lähtepunkt
JCL ja COBOL ei kao kuhugi. Palgaarvestust, kindlustusnõuete käsitlemist, regulatiivsete aruannete koostamist ja finantstehingute arveldamist teostavad partiipõhised süsteemid jätkavad suurarvutites töötamist, samal ajal kui pilvemigratsioone planeeritakse, kinnitatakse, rahastatakse ja teostatakse – protsess, mis võtab tavaliselt aastaid, mitte kuid. Nende aastate jooksul tuleb süsteeme hooldada, muuta ja mõista.
JCL-i ja COBOL-i kaardistamine ei ole ühekordne projekt. See on pidev praktika: struktuurimudeli ajakohasena hoidmine programmide muutmisel, tööde lisamisel ja andmekogumite reorganiseerimisel. Meeskonnad, kes sellesse praktikasse investeerivad, säilitavad võime teha enesekindlaid muudatusi süsteemides, mida enamik tööstusharust käsitleb mustade kastidena. Meeskonnad, kes seda ei tee, teevad muudatusi süsteemides, mida nad täielikult ei näe keskkondades, kus sõltuvuse märkamata jätmine ei tekita kompilaatori viga, vaid tootmistõrke öise partiitöötluse ajal kell 3 öösel.