MainframeSupports
tip uge 34/2009:

Nu om dage er CICS programmering mange steder forvandlet til kodning af services, der fungerer som back-end for en web-grænseflade. Der findes dog stadig mange systemer, der fortsat benytter CICS skærmbilleder. At udvikle et CICS program, der skal kommunikere med et skærmbillede kan være en besværlig omgang. Men hvis du ikke har de store krav til hverken farver eller felter, så kan du lave en utrolig simpel gang skærm-kommunikation.

De centrale CICS kommandoer til skærm-kommunikation er SEND og RECEIVE. Disse to kommandoer findes i utroligt mange udgaver, afhængig af hvad man skal. Jeg vil her vise en simpel programstump, som giver dig mulighed for at indlæse alt, hvad der er indtastet på et blankt CICS skærmbillede (der, hvor du indtaster en transaktionskode i øverste venstre hjørne):

01  screenArea.
  03  screenLine          pic x(80) occurs 24.
01  screenAreaLength      pic s9(4) binary.
01  maxAreaLength         pic s9(4) binary.
...
move length of screenArea to maxAreaLength
exec cics
  receive into(screenArea)
  length(screenAreaLength)
  maxlength(maxAreaLength)
  notruncate
  nohandle
end-exec
perform processScreenArea
if screenAreaLength < maxAreaLength
  move spaces to screenArea(screenAreaLength + 1:)
end-if
exec cics
  send text noedit from(screenArea)
  erase
  nohandle
end-exec
goback.

Hvis din CICS session kører med 24 linier, så vil arealet screenArea indeholde alt, hvad der er indtastet på skærmen på det sted, hvor processScreenArea kaldes. I processScreenArea kan du manipulere rundt med indholdet af screenArea, hvorefter den eferfølgende SEND vil udskrive arealet på skærmen igen med de ændringer, processScreenArea måtte have foretaget. Option NOEDIT gør, at når du trykker på Enter eller en funktionstast, så opfattes data, som om de var indtastet på et blankt CICS skærmbillede. Du behøver altså ikke at lave EXEC CICS RETURN TRANSID, hvis du bare sørger for, at de første fire tegn i screenArea indeholder den transaktionskode, du gerne vil have eksekveret som den næste. Det forudsætter selvfølgelig, at brugeren ikke skriver noget andet i de første fire tegn.

Som du nok kan regne ud, så er ovennævnte metode ikke til avancerede CICS dialoger. Jeg bruger metoden som en nem måde at få data læst ind i mit CICS program (med tryk på mit), og så give et svar, hvor jeg så kan nøjes med at rette lidt i det foregående input for at få programmet til at foretage sig noget andet. Mange installationer vedligeholder diverse DB2-tabeller med SQL-kald, der typisk udføres med SPUFI eller egenudviklede værktøjer. Denne måde at vedligeholde DB2-tabeller på skyldes typisk, at man ikke lige kan afse tid til at udvikle en CICS-applikation til at klare vedligeholdelsen. Med ovenstående metode burde det være en forholdsvis smal sag at lave en sådan CICS-applikation.

Forrige danske tip        Last tip in english        Tip oversigten