Engångsbatch för att skapa kurstillfällen för avvikande FOterminer 2016-08-19
David Andersson 2016-08-19 2 (9) Ändringshistorik Datum Av Kommentar Godkänd av 2015-02-26 David Andersson Första versionen - 2015-03-19 David Andersson Tillägg för avbrott på fortsättningstermin 2015-11-11 Anna-Carin Wiklund LADOK-20295. Utökar intervallet på kursomgång från 1-9 till 1-9, A-Ö, 0 så att fler tillfällen kan skapas upp. 2016-04-11 PerLindgren EB50 uppdaterar inte LOKHST och poängfördelning mellan utbildningsområden och institutioner https//jira.its.umu.se/browse/ladok-20500 2016-04-11 PerLindgren EB50 skapar ofullständiga kurstillfällen https//jira.its.umu.se/browse/ladok-20539 2016-08-19 Thom Jönsson EB50 skapar i vissa fall flera poster i KTILL2 för samma kalendertermin, men med olika termin i ordningen. https//jira.its.umu.se/browse/ladok-20722
David Andersson 2016-08-19 3 (9) Innehållsförteckning 1 INLEDNING... 4 1.1 SYFTE... 4 1.2 BAKGRUND... 4 1.3 BESKRIVNING... 4 2 BATCHBESTÄLLNING... 5 2.1 PARAMETRAR... 5 2.1.1 Obligatoriska parametrar... 5 3 RESULTATLISTA... 6 3.1 SAMMANFATTNING AV KÖRNINGEN... 6 3.2 FELMEDDELANDE... 6 3.2.1 Om anmälningskoden uppnår högsta tillåtna värde... 7 3.3 VARNINGSMEDDELANDEN... 7 3.4 DETALJRADER... 9
David Andersson 2016-08-19 4 (9) 1 Inledning 1.1 Syfte Engångsbatchen EB50 har som uppgift att förbereda ladok-databasen inför konverteringen av data till Ladok3. Batchen utgår ifrån studenters kursregistreringar på kurser som sträcker sig över två eller fler terminer och skapar nya kurstillfällen i de fall där sådana saknas. 1.2 Bakgrund I Ladok är det i dag möjligt att lägga in fortsättningsregistreringar som inte stämmer överens med kurstillfället. FO-terminen kan ligga på en senare kalendertermin. Detta kan man göra i delfunktionen RG01_F, FO-reg på kurs. Ladok3 och informationskonverteraren kan inte hantera sådana fortsättningsregistreringar på ett korrekt sätt. Vi behöver därför en engångsbatch som skapar kurstillfällen som stämmer överens med den faktiska fördelningen av FO-registreringarna på kalenderterminerna. Dessa kurstillfällen måste få ett nytt värde för kursomgång, något som medför att posten i FFGKURS måste uppdateras med detta värde Till skillnad mot andra engångsbatchar ska i detta fall de ordinarie kurstillfällestabellerna KTILL2 och KTFORT2 uppdateras eftersom även FFGKURS uppdateras. På detta sätt säkerställer man att årsredovisningen i UB50 fungerar utan problem. Om det sedan tidigare finns något i KTILLHST som motsvarar det kurstillfälle i KTILL2/KTFORT2 som används som mall ska även KTILLHST uppdateras. Batchen kan på detta sätt även ta hand om kurstillfällen som inte kunnat skapas av EB47 eller EB48. Det förekommer dessutom ofta att en kurs som startar en viss kalendertermin har olika fördelning mellan terminer inom olika program. I ett visst program kan hela kursen läsas första terminen, i ett annat program är kursen fördelad på två terminer. KTILLP kan lagra dessa alternativ utan problem. Men när KTILL3 ska uppdateras kommer bara en post med, troligen för det program vars kod kommer först i alfabetet. Resultatet blir en fellista i resultatfilen från EB47 med alla FO-poster för termin 2 inom det andra programmet. EB50 måste hantera även dessa fall. 1.3 Beskrivning Batchen ska kunna köras både i inspektionsläge och i uppdateringsläge enligt standard för engångsbatchar. Programmet läser i första hand tabellerna FFGKURS och FORTKURS/INREGFO. Utifrån dessa tabeller skapas kurstillfällen som saknas i KTILL2 och KTFORT2 och dessutom uppdateras FFGKURS med motsvarande nya omgång.
David Andersson 2016-08-19 5 (9) En kontrollista skrivs ut med de poster som skapas. Egenskaper hos EB50 Inspektionsläge eller uppdateringsläge kan väljas. Batchen går att köra mer än en gång. Efter körningen skapas en resultatfil med sammanfattning och detaljer om körningen. En sammanfattning skickas även via mail till beställaren. 2 Batchbeställning 2.1 Parametrar I RB70 anges EB50 som engångsprogram. 2.1.1 Obligatoriska parametrar UPPDATERA måste anges för att bestämma om batchen skall köras i Inspektionsläge eller Uppdateringsläge. Anges UPPDATERA=N kommer ingen uppdatering att genomföras. Inspektionsläge. Anges UPPDATERA=J sker uppdatering. Uppdateringsläge. INLEDANDETECKEN bestämmer det första tecknet i de anmälningskoder som används för nya kurstillfällen som skapas av batchen. Det är en stark rekommendation att välja ett tecken som inte används i KTILL2/KTILL3 sedan tidigare för att kunna särskilja de poster som skapats av just EB50. Exempel INLEDANDETECKEN=A innebär att nya kurstillfällen får anmälningskoderna A0001, A0002, A0003 o.s.v.
David Andersson 2016-08-19 6 (9) 3 Resultatlista En lista skapas som redovisar resultatet av körningen. Överst i resultatlistan visas en sammanfattning av körningen inklusive eventuella fel som har hittats. Under sammanfattningen i resultatlistan visas mer utförlig information om eventuella fel, samt de kurstillfällen som har skapats under körningen. För att underlätta sökning i resultatfiler med många rader matchas varje summeringsrad i sammanfattningen med tillhörande detaljrubrik genom en gemensam siffra till vänster om raderna. 3.1 Sammanfattning av körningen En sammanfattning skrivs både i mailet till beställaren och överst i resultatlistan. Exempel på sammanfattning i inspektionsläge (1) Antal poster som kommer att läggas in i tabellen KTILL2 vid skarp körning 659. (2) Antal poster som kommer att läggas in i tabellen KTFORT2 vid skarp körning 876. (3) Antal poster som kommer att uppdateras med ny OMGANG in i tabellen FFGKURS vid skarp körning 13724. Exempel på sammanfattning i uppdateringsläge (1) Antal poster som har lagts in i tabellen KTILL2 659. (2) Antal poster som har lagts in i tabellen KTFORT2 876. (3) Antal poster som har uppdaterats med ny OMGANG in i tabellen FFGKURS 13724. (4) Antal poster som har lagts in med ny kursomgång i tabellen KTILLHST 71. 3.2 Felmeddelande Följande fall resulterar i fellista utan att vidare behandling görs Terminer som har samtliga anmälningskoder upptagna för givet inledande tecken listas med information om att batchen bör köras igen med annat inledande tecken för att ta om hand dessa terminer. FFG-/FO-terminer som kommer i ologisk ordning behandlas inte. Exempelvis o En FO-termin ligger samtidigt eller före motsvarande FFG-termin. o En FO-termin med högre terminsordning än en annan FO-termin har en lägre termin än densamma. o Två FO-poster har olika terminsordning men samma termin. Poster i FFGKURS som saknar något av de värden som används som nyckel i KTILL2 läggs på fellistan utan att behandlas vidare.
David Andersson 2016-08-19 7 (9) Om poängen som hämtas från KURS är för stor (efter att ha fördelats på samtliga terminer) kan KTILL2/KTFORT2-poster inte skapas och hamnar istället på fellistan (KURS.POANG rymmer fler tecken än KTILL2.FFGPOANG). Om samtliga KTILL2.KURSOMG (1-9, A-Ö, 0) är upptagna kan inga ytterligare kurstillfällen med samma nycklar skapas. Dessa hamnar då istället på fellistan. Om KURS.POANG av någon anledning inte går att tolka, t ex för att kursen saknas eller POANG-fältet inte innehåller siffror, läggs FFG-posten på fellistan. Felen kommer ut med både summering och detaljer precis som de övriga resultaten. Exempel på felmeddelande i summeringen (5) Antal FFGKURS-poster som inte behandlas för att det saknas kurstillfällesparametrar för att skapa upp en KTILL2-post 17. (6) Antal poster som inte kan behandlas på grund av att ingen ledig kursomgång finns 10. 3.2.1 Om anmälningskoden uppnår högsta tillåtna värde Om värdet som följer det inledande tecknet uppnår 9999 en viss termin kommer inga ytterligare kurstillfällen att skapas på denna termin under pågående batchkörning. Körningen kommer istället att gå vidare med nästa termin och vid avslut ge följande meddelande överst i resultatlistan (1) Varning! Högsta tillåtna värde för anmälningskod i KTILL2 har uppnåtts för valt INLEDANDETECKEN. Antal terminer som inte avslutats 2 Välj nytt INLEDANDETECKEN och kör EB50 igen för att skapa återstående kurstillfällen. De kurstillfällen som redan har skapats under körningen kommer att behandlas som om batchen slutförts normalt, d.v.s. de kommer att läggas in i KTILL2 och KTFORT2 om batchen körts i Uppdateringsläge. 3.3 Varningsmeddelanden Varningsmeddelande ges för följande fall. Dessa kommer dock ändå att resultera i nya kurstillfällen Om de fördelade poängen överskrider maxpoäng per termin (30 hp för kurstakt 100%) Om värden till kolumnerna LOK1/LOK2 i KTILL2/KTFORT2 lagts på en annan termin än det som finns i det original som användes som mall för det nya kurstillfället. Om poängsumman i KTILL2 och KTFORT2 för ett kurstillfälle skiljer sig från poängen i KURS. Dessa fall bör lösas genom att via KA15 radera eller ändra aktuell post i KTFORT2, samt radera eller ändra eventuell post i KTILLHST. Dessa uppgifter kommer även de ut med både summering och detaljrader. Exempel på varningsmeddelande i summeringen
David Andersson 2016-08-19 8 (9) (6) Antal nya kurstillfällen som har poängfördelning som överstiger 30 hp per termin på 100% 322 (7) Nedanstående nya kurstillfällen har LOK1/LOK2-fördelning som skiljer sig från orginalets höst/vår-fördelning i KTILL2/KTFORT2 (8) Nedanstående nya kurstillfällen har LOK1/LOK2-fördelning som skiljer sig från orginalets höst/vår-fördelning i KTILLP
David Andersson 2016-08-19 9 (9) 3.4 Detaljrader Under sammanfattningen visas detaljer om de poster som har skapats och lagts in i KTILL2 och KTFORT2, uppdaterats i FFGKURS, eventuella fel som medfört att poster inte kunnat behandlas samt eventuella varningar gällande poäng/kurstakt. Samtliga listor sorteras stigande på termin och kurs (och i förekommande fall även personnummer) Exempel på detaljrader i inspektionsläge (1) Nedanstående poster skulle ha lagts in i KTILL2 vid skarp körning KURSKOD;STARTTER;KURSTAKT;KURSTID;UNDFORM;ORT;KURSOMG;KURSTYP;FFGPOANG;KOD;STARTV;SLUTV;L OK1;LOK2;PLANTAL;ANTALORD;ANTALRES;VALUTA;KONVERT;AVGFRI; XSH221;19761;100;DAG;NML;1281;2; _;15.0;Q0002;;;;;;;;;;; XSL037;19761;100;DAG;NML;1281;2; _;7.5;Q0003;;;;;;;;;;; (2) Nedanstående poster skulle ha lagts in i KTFORT2 vid skarp körning KURSKOD;STARTTER;KURSTAKT;KURSTID;UNDFORM;ORT;KURSOMG;KURSTYP;TERMORDN;FORPOANG;KOD;TERMI N;STARTV;SLUTV;LOK1;LOK2;VALUTA;KONVERT; XSH221;19761;100;DAG;NML;1281;2; _; 2;15.0;Q0002;19762;;;;;;;;;;; XSL037;19761;100;DAG;NML;1281;2; _; 2;7.5;Q0003;19781;;;;;;;;;;; (3) Nedanstående poster skulle ha uppdaterats med ny OMGANG i FFGKURS vid skarp körning PNR;KURS;PROGR;PROGINR;TERMIN;KURSTAKT;KURSTID;UNDFORM;ORT;OMGANG;KURSTYP;IDATUM;ITID;IAN V;VERNR; 4003120000;XSH221;; _;19761;100;DAG;NML;1281;2; _;2015-02-23;104150;EB50;null; 4510240000;XSL037;; _;19761;100;DAG;NML;1281;2; _;2015-02-23;104150;EB50;null; Exempel på detaljrader vid fel (4) Nedanstående poster har inte kunnat behandlas på grund av oordnade terminer och/eller terminsordningar FFGKURS pnr='5409040000', kurs='xfs001', progr='', proginr=' _', termin='19781', kurstakt='100', kurstid='dag', undform='nml', ort='1281', omgang='1', kurstyp=' _', idatum='null', itid='null', ianv='null', vernr='null' FORTKURS pnr='5409040000', kurs='xfs001', termordn=' 2', termin='19782' FORTKURS pnr='5409040000', kurs='xfs001', termordn=' 3', termin='19782' (5) Nedanstående poster har inte kunnat behandlas för att det saknas kurstillfällesparametrar för att skapa upp en KTILL2-post FFGKURS pnr='6903270000', kurs='timie2', progr='tmail', proginr=' _', termin='19892', kurstakt='100', kurstid='', undform='nml', ort='0680', omgang='1', kurstyp=' _', idatum='null', itid='null', ianv='null', vernr='null' Exempel på detaljrader vid varningar (7) Nedanstående nya kurstillfällen har poäng i förhållande till kurstakt som överskrider maximalt tillåten poäng per termin KTILL2 kurskod='log001', startter='19771', kurstakt='100', kurstid='dag', undform='nml', ort='1281', kursomg='2', kurstyp=' _', ffgpoang='45.0', kod='q0001', startv='', slutv=''