training people monitors Bättre COBOL Peter Sterwe Bättra på dina kunskaper i COBOL på ett översiktligt och pedagogiskt sätt från företaget som har mer än trettio års erfarenhet av utbildning inom IBM z/os Mainframe.
Identification Division Identifierar programmet IDENTIFICATION ID DIVISION. PROGRAM ID. pgmnamn [ IS COMMON RECURSIVE INITIAL [ PROGRAM pgmnamn ]] Identifierar programmet Maxlängd bestäms av kompilator-option PGMNAME(COMPAT LONGUPPER LONGMIXED) COMMON RECURSIVE INITIAL behandlas senare 1
Environment Division Configuration Section ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. [ DECIMAL-POINT IS COMMA ] [ CLASS classnamn IS lit1, lit2,... ] Special-Names. Beskriver att decimaltecken är komma i stället för punkt Egna Klasser för alfanumeriskt data 2
DataDivision Working-Storage Section WORKING-STORAGE SECTION. Beskrivning av dataelement Alla dataelement är av en viss datatyp Beskrivning av datastrukturer En struktur består av flera dataelement Nivåindikatorer Alla dataelement har en nivåindikator: 01-49, 66, 77 eller 88 01-nivå För enskilda dataelement eller hela strukturer 77-nivå För fristående dataelement 3
DataDivision Working-Storage Section Redigering Data Division. Working-Storage Section. 77 Summa1 Pic S999999V99 COMP-3 Value +123,50. 77 Summa2 Pic S999999V99 Packed-Decimal Value -4,50. 01 Raden. 05 Pic X(10) Value Summan är:. 05 Rad-Summa Pic ZZZZ99,99-. Procedure Division. Move Summa1 to Rad-Summa Display Raden Summan är: 123,50 Move Summa2 to Rad-Summa Display Raden Summan är: 04,50-4
Filer Rewrite För att återskriva en post i en indexerad fil REWRITE postnamn [ FROM postarea ] INVALID KEY uttryck... NOT INVALID KEY uttryck... END-WRITE postnamn är namnet på strukturen i FD postarea är namnet på en postbeskrivning i Working-Storage Section Not Invalid Key är uppfyllt vid lyckad återskrivning Invalid Key är uppfyllt om posten med angiven nyckel inte finns i filen 5
Aritmetik Divide För att dividera innehållet i en variabel med innehållet i en annan variabel och lagra resultatet i en eller flera andra variabler DIVIDE var1 BY varx GIVING vary, varz,... [ROUNDED] För att dividera innehållet i en variabel med innehållet i en annan variabel och lagra resultatet i en tredje variabel och den överblivna resten i ytterligare en variabel DIVIDE var1 BY varx GIVING vary REMAINDER varz [ROUNDED] 6
Aritmetik Mellanresultat Maximal noggrannhet behålls i alla aritmetiska operationer tills resultatet lagras 77 Var1 Pic S999V9999. 77 Var2 Pic S9999V999. 77 Res Pic S99999V99. Variabel med 9(05)V9(04) underförstådd för tillfälliga resultat Mottagande variabel bestämmer noggrannheten Uttrycket bestämmer trunkering eller avrundning (Rounded) 7
Strängar 10 String WORKING-STORAGE SECTION. 01 Fnamn Pic X(20) Value 'Peter'. Peter 01 Enamn Pic X(20) Value 'Sterwe'. Sterwe 77 Tid Pic XX/XX/XX/XX. 10/15/20/30 01 Res Pic X(50) Value 'Jag heter'. Jag heter 77 Pekare Pic 99 Value 11. Procedure Division. Accept Tid from Time String Fnamn Delimited by Space Space Delimited by Size Enamn Delimited by Space Space Delimited by Size,klockan är ungefär Delimited by Size End-String Display Res GoBack. Tid Into Res Pointer Pekare Delimited by '/' <- Jag heter Peter Sterwe,klockan är ungefär 8
Villkor Villkorsvariabler För att testa om en variabel innehåller ett eller flera värden nn varnamn PIC( ) vardex... 88 villkorsnamn1 VALUE varde1[, varde2,...] [varde1 THRU varde2] varnamn är ett fristående dataelement eller ett element i en struktur varde1 varde2 är de värden som varnamn skall innehålla för att villkorsnamn1 skall vara uppfyllt (sant) Innehållet i varnamn kan vara fast eller beroende av innehållet i en fil eller databas 9
Binära tal Usage Is Binary Hanteras som fastlängd med tecken i den vänstra biten Med tecken, positivt värde = 0 Med tecken, negativt värde= komplementvärde Utan tecken = 0 Pic S9999 Binary Value +1234 04 D2 Pic S999999 Binary Value +1234 00 00 04 D2 Pic S9999 Binary Value -1234 FB 2E Pic 9999 Binary Value +1234 04 D2 Pic 9999 Binary Value -1234 04 D2 10
Nästlade program Programanrop Inbakade program anropas med Call Ett inbakat program kan endast anropas av sitt yttre program PGM12 kan anropas av PGM1 PGM123 kan endast anropas av PGM12 PGM1 PGM12 PGM123 11
Översikt Inbyggda funktioner För att få tillgång till värden i exekveringsläge Skrivs som uttryck i Procedure Division Funktionsanropet utvärderas och det returnerade värdet blir en del av uttrycket Identifieras med det reserverade ordet Function FUNCTION funktionsnamn [(arg1, arg2,...)] Compute Resultat = Function EN-INBYGGD-FUNKTION(DATA1, DATA2) 12
Generella regler Fritt format Alla kolumner (1-80) kan användas Uttryck begränsade till maximalt 255 tecken >>SOURCE FORMAT IS FREE *> Detta är en kommentar Move A to B >>D Display B *> Detta är också en kommentar *> Detta är en debug-rad >>SOURCE FORMAT IS FIXED * Detta är en kommentar Move A to B D Display B 13