RAPGEN
Brugervejledning
Indholdsfortegnelse
1. Indledning......................................................................................................................................................................................... 9
1.1. Rapportgeneratoren startes........................................................................................................................................................ 11
1.2. Formålet med denne manual........................................................................................................................................................ 11
1.3. Kartoteker benyttet til eksemplerne........................................................................................................................................... 12
1.3.1. VA Varekartoteket....................................................................................................................................................................... 12
1.3.2. LE Leverandørkartoteket............................................................................................................................................................ 12
1.3.3. KU Valutakurskartotek................................................................................................................................................................ 13
1.3.4. GR Varegruppekartoteket........................................................................................................................................................... 13
1.3.5. Indholdet af kartotekerne........................................................................................................................................................... 13
1.4. Generelt om betjeningen.............................................................................................................................................................. 14
1.5. Operativsystem............................................................................................................................................................................. 14
1.6. Diskplads....................................................................................................................................................................................... 14
1.7. DATAMASTER........................................................................................................................................................................... 15
1.8. Systemer......................................................................................................................................................................................... 15
2. Definition af en rapport................................................................................................................................................................. 17
2.1. Generelt.......................................................................................................................................................................................... 19
2.2. Brug af funktion 1......................................................................................................................................................................... 19
2.2.1. Rapportnummer............................................................................................................................................................................ 20
2.2.2. Kartotek......................................................................................................................................................................................... 20
2.2.3. Kartoteks‑password.................................................................................................................................................................... 21
2.3. Rapportens stamoplysninger...................................................................................................................................................... 21
2.3.1. Rapportnavn................................................................................................................................................................................. 22
2.3.2. Antal linier pr.side....................................................................................................................................................................... 22
2.3.3. Overskrift...................................................................................................................................................................................... 22
2.3.4. Skal nul udskrives (J/N).............................................................................................................................................................. 23
2.3.5. Printer............................................................................................................................................................................................ 23
2.3.6. Brugernavn................................................................................................................................................................................... 23
2.4. TAMOS selektor........................................................................................................................................................................... 23
2.5. Rapportlinierne.............................................................................................................................................................................. 24
2.5.1. +xx flyt xx karakterer frem............................................................................................................................................................ 25
2.5.2. ‑xx flyt xx karakterer tilbage......................................................................................................................................................... 25
2.5.3. Pxxx flyt til position xxx................................................................................................................................................................ 25
2.5.4. Hxx feltnr.xx med manuel overskrift........................................................................................................................................... 26
2.5.5. D slet sidst valgte felt................................................................................................................................................................. 26
2.5.6. T tekst på linien............................................................................................................................................................................ 26
2.5.7. Nxx feltnr. xx uden overskrift...................................................................................................................................................... 26
2.5.8. N Fjern alle overskrifter fra linien.............................................................................................................................................. 26
2.5.9. H@xx feltnr.xx permanent overskrift......................................................................................................................................... 26
2.5.10. KK#xx felter fra andre kartoteker.............................................................................................................................................. 26
2.5.11. ? Hjælp oversigt over andre kartoteker................................................................................................................................... 26
2.5.12. LINIE Kontoudtogstype rapport.............................................................................................................................................. 27
2.5.13. cr afslut denne linie.................................................................................................................................................................... 27
2.5.14. Blanke linier (dobbelt linieafstand).......................................................................................................................................... 27
2.6. Frifelter........................................................................................................................................................................................... 27
2.6.1. Overskrift og navn....................................................................................................................................................................... 27
2.6.2. Feltformat...................................................................................................................................................................................... 27
2.6.3. Definition af feltformatet............................................................................................................................................................. 28
2.6.4. Ændring af feltformater............................................................................................................................................................... 28
2.6.5. Regnenøjagtighed (præcision).................................................................................................................................................. 28
2.6.6. Automatisk feltudvidelse (overflow)........................................................................................................................................ 28
2.7. Automatiske totaler...................................................................................................................................................................... 28
2.8. Højde og bredde for en rapport.................................................................................................................................................. 29
3. Selektioner...................................................................................................................................................................................... 31
3.1. Normal brug af selektionerne...................................................................................................................................................... 33
3.2. Sletning af selektioner.................................................................................................................................................................. 34
3.3. Selektion på forskellig fra nul etc............................................................................................................................................... 34
3.4. Selektion på alfanumeriske tekstfelter....................................................................................................................................... 34
3.5. Beregninger i selektionerne......................................................................................................................................................... 34
3.6. Selektionsangivelse ved start af
rapporten..............................................................................................................................
34
3.7. Selektion på dele af felter............................................................................................................................................................. 34
3.8. ELLER selektioner kombineret med
beregninger..................................................................................................................... 35
3.9. QUICK Selektioner....................................................................................................................................................................... 35
4. Beregninger.................................................................................................................................................................................... 37
4.1. Beregningsfunktionens struktur................................................................................................................................................ 39
4.2. Brug af beregningsmodulet......................................................................................................................................................... 39
4.3. Ændring af beregninger............................................................................................................................................................... 40
4.4. Operander og operatorer............................................................................................................................................................. 41
4.5. Procentberegninger og division................................................................................................................................................. 41
4.6. Dele af felter................................................................................................................................................................................... 42
4.7. Alfanumeriske tekstfelter............................................................................................................................................................. 42
4.8. Specialfelter................................................................................................................................................................................... 43
4.8.1. #DD
dags dato............................................................................................................................................................................ 43
4.8.2. #PD
pr.dato.................................................................................................................................................................................. 43
4.8.3. #Dx
data,f.eks.#D1 op til #D7................................................................................................................................................... 43
4.8.4. #DAx data,f.eks.#DA1 op til #DA7.......................................................................................................................................... 44
4.8.5. #PP
sidenummer.......................................................................................................................................................................... 44
4.8.6. #OK
status efter læsning af et andet kartotek........................................................................................................................ 44
4.8.7. #SC
skærmnummer..................................................................................................................................................................... 44
4.8.8. #LEVEL total niveau nr............................................................................................................................................................... 44
4.8.9. #GRUPPE total gruppe nummer................................................................................................................................................. 44
4.8.10. Arbejdsfelter................................................................................................................................................................................ 45
4.9. REM bemærkninger...................................................................................................................................................................... 45
4.10. Funktioner..................................................................................................................................................................................... 45
4.10.1. FNR afrunding til 2 decimaler.................................................................................................................................................... 45
4.10.2. FNH afrunding til ingen decimaler........................................................................................................................................... 46
4.10.3. FND datovending....................................................................................................................................................................... 46
4.10.4. FNA omregn dato DDMMÅÅ til antal dage fra
år 1900....................................................................................................... 46
4.10.5. FNB omregn antal dage fra år 1900 til dato
DDMMÅÅ....................................................................................................... 46
4.10.6. FNU omregn dato DDMMÅÅ til ugedag............................................................................................................................... 46
4.10.7. FNV omregn dato DDMMÅÅ til uge ÅÅUU........................................................................................................................ 46
4.10.8. Intern lagring af funktionerne................................................................................................................................................... 47
4.11. Basic funktioner........................................................................................................................................................................... 47
4.11.1. ABS Absolut‑værdien af et tal................................................................................................................................................. 47
4.11.2. SQR kvadratroden...................................................................................................................................................................... 47
4.11.3. FRA decimal‑delen af et felt...................................................................................................................................................... 47
4.11.4. INT heltalsdelen af et felt.......................................................................................................................................................... 47
4.11.5. SGN fortegnet for et felt............................................................................................................................................................. 47
4.11.6. NOT Logisk negation................................................................................................................................................................. 47
4.11.7. LEN Længden af en streng........................................................................................................................................................ 47
4.11.8. IF betingede beregninger.......................................................................................................................................................... 47
4.11.9. Relations‑operatorer................................................................................................................................................................... 48
4.11.10. NÅR, hvornår skal der beregnes............................................................................................................................................. 48
4.11.11. FØRST/NORMAL/SIDST og EFTER beregninger............................................................................................................... 49
4.11.12. LOAD kommandoen.................................................................................................................................................................. 49
4.11.12.1. OCR checkciffer for girokort................................................................................................................................................... 50
4.11.12.2. Modulus 11 check (f.eks.personnummer)............................................................................................................................. 50
4.11.12.3. Beregning af arbejdsdage........................................................................................................................................................ 51
4.11.12.4. Udplukning af for‑ og efternavne........................................................................................................................................... 51
4.11.13. < Beregningslinier med faste linienumre................................................................................................................................ 52
4.11.13.1. Fastlåsning af index for en rapport........................................................................................................................................ 52
4.11.13.2. Fastlåsning af laveste total niveau........................................................................................................................................ 52
4.11.13.3. Fastlåsning af start/stop.......................................................................................................................................................... 52
4.11.14. Skrivning i kartoteker................................................................................................................................................................ 52
5. Sortering og totaler........................................................................................................................................................................ 55
5.1. Sortering......................................................................................................................................................................................... 57
5.1.1. Subtotalniveauer.......................................................................................................................................................................... 57
5.1.2. Princippet ved sortering............................................................................................................................................................. 58
5.1.3. Sorteringskartoteket DMSORTWORK.................................................................................................................................... 58
5.1.4. Sortering i faldende orden.......................................................................................................................................................... 59
5.1.5. Sekundær sorteringsorden......................................................................................................................................................... 59
5.1.6. NY Sorteringsnøgle..................................................................................................................................................................... 59
5.2. Subtotalniveauer uden sortering................................................................................................................................................ 60
5.3. Vejede totaler................................................................................................................................................................................. 61
5.3.1. Princip............................................................................................................................................................................................ 61
5.3.2. Første gennemløb........................................................................................................................................................................ 61
5.3.3. Opsamling..................................................................................................................................................................................... 62
5.3.4. Beregning...................................................................................................................................................................................... 62
5.3.5. Vejede totaler og selektion......................................................................................................................................................... 63
5.3.6. Vejede totaler og quick selektioner........................................................................................................................................... 63
5.4. Gennemløbet af en rapports beregninger.................................................................................................................................. 64
5.5. Beregnede totaler.......................................................................................................................................................................... 64
5.5.1. Princip............................................................................................................................................................................................ 64
5.5.2. Grundregel ved beregnede totaler............................................................................................................................................. 65
5.5.3. Anvendelse af NÅR kommandoen........................................................................................................................................... 65
5.5.4. Eksempel på beregnede totaler.................................................................................................................................................. 65
5.5.5. Teknik ved beregnede totaler.................................................................................................................................................... 67
5.6. Felter der skal totaliseres............................................................................................................................................................. 67
5.6.1. ‑feltnr.udskriv felt på
totallinien................................................................................................................................................ 67
5.6.2. ‑ ingen 'grande total' tekst.......................................................................................................................................................... 68
5.6.3. 2% eller 3% totalpræcision......................................................................................................................................................... 68
5.7. Gruppetotaler................................................................................................................................................................................. 68
5.7.1. GRUPPETOTALER (J/N/NIVEAU)?......................................................................................................................................... 69
5.7.2. GRUPPE FELTNR:,ANTAL KODER og NAVN...................................................................................................................... 69
5.7.3. 'Udefinerede' gruppetotaler........................................................................................................................................................ 70
5.7.4. Dele af felter/andre kartoteker.................................................................................................................................................... 70
6. Flere kartoteker............................................................................................................................................................................... 71
6.1. Princippet ved flere kartoteker.................................................................................................................................................... 73
6.2. Hjælp tasten................................................................................................................................................................................... 73
6.3. READ i beregningerne................................................................................................................................................................. 75
6.4. Forbindelse mellem kartotekerne................................................................................................................................................ 75
6.5. Videre læsning af tredje kartotek mm......................................................................................................................................... 75
6.6. Kartoteker med flere index........................................................................................................................................................... 75
6.7. Forskellige records fra samme kartotek..................................................................................................................................... 75
6.8. Maximalt antal kartoteker............................................................................................................................................................. 76
6.9. Betinget læsning af andre kartoteker......................................................................................................................................... 76
6.10. Læsning EFTER selektionerne er
foretaget............................................................................................................................. 76
6.11. Sum af posteringer....................................................................................................................................................................... 76
6.12. Kontoudtogstype rapport.......................................................................................................................................................... 76
6.13. Ikke‑indexed (relative) kartoteker
og pointere......................................................................................................................... 76
6.14. Helt specielle nøglestrukturer.................................................................................................................................................... 76
6.15. READ(KU) Saldoliste med kursomregning.............................................................................................................................. 76
6.16. Prisberegning med READ af flere kartoteker........................................................................................................................... 77
6.17. Prisberegningen uden automatiske
forbindelser.................................................................................................................... 78
6.18. Alternative leverandører:flere opslag i
samme kartotek......................................................................................................... 78
6.19. READ i forbindelse med totaler................................................................................................................................................. 79
6.20. START/NEXT/OM Sum af posteringer................................................................................................................................... 80
6.20.1. Betinget summering med START/NEXT/OM........................................................................................................................ 81
6.20.2. Flere løkker af START/NEXT/OM inden i
hinanden............................................................................................................ 81
6.20.3. Selektion i forbindelse med START/NEXT/OM.................................................................................................................... 81
6.21. READH/LINIE kontoudtogs‑type
rapport............................................................................................................................... 82
6.21.1. Selektion i forbindelse med READH/LINIE............................................................................................................................ 83
6.21.2. Totaler i forbindelse med READH/LINIE................................................................................................................................ 83
6.22. Rapportgeneratorens nøgleopbygnings‑rutine...................................................................................................................... 84
6.22.1. Felter............................................................................................................................................................................................. 85
6.22.2. Funktioner.................................................................................................................................................................................... 85
6.22.3. Sammenstilling af felter og funktioner.....................................................................................................................................
85
6.22.4. Eksempler på nøgleopbygninger.............................................................................................................................................. 85
7. Breve og rettelse af rapporter...................................................................................................................................................... 87
7.1. Definition af et brev...................................................................................................................................................................... 89
7.2. Skærm‑forespørgselsprogrammer............................................................................................................................................... 89
7.3. Brug af funktion 6 og 7................................................................................................................................................................ 89
7.4. Rettelse af brev eller rapport....................................................................................................................................................... 90
7.5. Kommandoer i funktion 6 og 7.................................................................................................................................................... 91
7.5.1. Linienr............................................................................................................................................................................................ 91
7.5.2. Linienr.,position........................................................................................................................................................................... 91
7.5.3. cr..................................................................................................................................................................................................... 91
7.5.4. SLUT eller cr‑................................................................................................................................................................................ 91
7.5.5. ? eller hjælp‑tasten....................................................................................................................................................................... 92
7.5.6. POS
sæt startposition for skærmen........................................................................................................................................... 92
7.5.7. PRINT udskrift på printer........................................................................................................................................................... 92
7.5.8. F formular fremføring................................................................................................................................................................... 92
7.5.9. PRINTER definer printertildeling og
sidehøjde....................................................................................................................... 92
7.5.10. RASTER slå printraster til/fra................................................................................................................................................... 92
7.5.11. MODE vis feltformater/numre eller navne.............................................................................................................................. 92
7.5.12. IL eller LI indsæt en linie............................................................................................................................................................ 93
7.5.13. DL eller LD slet en linie.............................................................................................................................................................. 93
7.5.14. FORMAT ændring af format for frifelterne............................................................................................................................. 93
7.6. Specialfelter i et brev/rapport...................................................................................................................................................... 93
7.6.1. #DD dags dato............................................................................................................................................................................. 94
7.6.2. #PD pr.dato................................................................................................................................................................................... 94
7.6.3. #PP sidenummer........................................................................................................................................................................... 94
7.6.4. #KA kartoteksnr.......................................................................................................................................................................... 94
7.6.5. #SN systemnavn.......................................................................................................................................................................... 94
7.6.6. #SY systemnr............................................................................................................................................................................... 94
7.6.7. #TI systemtid............................................................................................................................................................................... 94
7.6.8. #NO programnummer.................................................................................................................................................................. 94
7.6.9. #SC skærmnummer...................................................................................................................................................................... 94
7.7. Specialtegn (gåseøjne mm.)......................................................................................................................................................... 94
7.8. Breve i flere versioner.................................................................................................................................................................. 94
7.9. Nyttige linier og positioner......................................................................................................................................................... 95
8. Kopiering,sletning og dokumentation........................................................................................................................................ 97
8.1. Kopiering af en rapport................................................................................................................................................................ 99
8.1.1. Kopiering af rapporter mellem systemer................................................................................................................................... 99
8.2. Sletning af en rapport................................................................................................................................................................... 99
8.3. Dokumentation af rapportdefinitionerne................................................................................................................................. 100
8.4. Andre funktioner........................................................................................................................................................................ 102
8.4.1. Formularfremføring.................................................................................................................................................................... 103
8.4.2. Afslutning................................................................................................................................................................................... 103
8.4.3. Skift til andet system................................................................................................................................................................. 103
8.4.4. Stop af baggrundsporten......................................................................................................................................................... 103
8.4.5. Jobkø........................................................................................................................................................................................... 104
8.4.6. Scope og systemprogrammer................................................................................................................................................... 104
9. Start af en rapport........................................................................................................................................................................ 105
9.1. Brug af funktion 9....................................................................................................................................................................... 107
9.1.1. Dags dato.................................................................................................................................................................................... 108
9.1.2. Pr.dato......................................................................................................................................................................................... 108
9.1.3. Start fra og stop ved.................................................................................................................................................................. 108
9.1.3.1. x: Valg af index ved start fra.................................................................................................................................................... 108
9.1.3.2. SORT anvend samme sortering som sidst............................................................................................................................ 109
9.1.4. Ekstra data ved opstart............................................................................................................................................................. 109
9.1.5. Advarsel om sortering/vejede totaler..................................................................................................................................... 109
9.1.6. Laveste total niveau.................................................................................................................................................................. 110
9.1.6.1. Undertrykkelse af udskrift....................................................................................................................................................... 110
9.1.7. Kartoteksnr................................................................................................................................................................................. 110
9.1.8. Start på skærm/printer/baggrundsport................................................................................................................................... 110
9.1.9. Testprint...................................................................................................................................................................................... 110
9.2. Generering af programmet......................................................................................................................................................... 111
9.3. Betjening af baggrundsporte
(phantomporte)....................................................................................................................... 111
9.4. Lampefunktioner......................................................................................................................................................................... 111
10. Meddelelser................................................................................................................................................................................. 113
10.1. Fejlmeddelelser........................................................................................................................................................................... 115
10.1.1. HJÆLP ‑ PRINTEREN ER IKKE KLAR!................................................................................................................................ 115
10.1.2. DETTE PROGRAM FINDES IKKE........................................................................................................................................ 115
10.1.3. DENNE RAPPORT ER IKKE DEFINERET............................................................................................................................ 115
10.1.4. DENNE RAPPORT ER ALLEREDE DEFINERET................................................................................................................. 115
10.1.5. DER ER IKKE FLERE FRIE RAPPORTER............................................................................................................................. 115
10.1.6. DENNE RAPPORT ER IKKE DEFINERET MED DENNE
RAPPORTGENERATOR...................................................... 115
10.1.7. DETTE ER IKKE DIN RAPPORT........................................................................................................................................... 115
10.1.8. DENNE RAPPORT ER I BRUG AF EN ANDEN.................................................................................................................. 116
10.1.9. FORKERT SYSTEMNUMMER.............................................................................................................................................. 116
10.1.10. RAPPORTGENERATOREN ER I BRUG AF EN ANDEN.................................................................................................. 116
10.1.11. RING VENLIGST TIL INSTALLATIONSGRUPPEN.......................................................................................................... 116
10.1.12. RING VENLIGST TIL SERVICEAFDELINGEN.................................................................................................................... 116
10.1.13. DETTE KARTOTEK FINDES IKKE..................................................................................................................................... 116
10.1.14. DETTE KARTOTEK ER IKKE IMPLEMENTERET........................................................................................................... 116
10.1.15. DETTE KARTOTEK ER IKKE IMPLEMENTERET (READ
MANGLER)....................................................................... 116
10.1.16. DETTE KARTOTEK ER IKKE IMPLEMENTERET (DRN
MANGLER).......................................................................... 117
10.1.17. DENNE RAPPORT KAN IKKE STARTES.......................................................................................................................... 117
10.1.18. RAPPORTFILEN ER FULD.................................................................................................................................................... 117
10.1.19. FORKERT KARAKTER I NUMERISK FELT...................................................................................................................... 117
10.1.20. FORKERT RAPPORTNR........................................................................................................................................................ 117
10.1.21. DER KAN IKKE SORTERES SAMTIDIG MED
DEFINITION AF SORTERING........................................................... 117
10.1.22. SORTERING ER IKKE IMPLEMENTERET......................................................................................................................... 117
10.1.23. FORKERT FELTNR................................................................................................................................................................. 118
10.1.24. FORKERT ANTAL.................................................................................................................................................................. 118
10.1.25. PROGRAMMET BLIVER FOR STORT................................................................................................................................ 118
10.1.26. DETTE FELT TOTALISERES ALLEREDE.......................................................................................................................... 118
10.1.27. BAGGRUNDSPORTEN ER OPTAGET, PRØV IGEN
(J/N)................................................................................................ 118
10.1.28. LINIEN ER FOR LANG........................................................................................................................................................... 118
10.1.29. BASIC FEJL NR.xxxx I LINIE NR.xxxx.................................................................................................................................... 118
10.1.30. BASIC FEJL NR.xxxx i LINIE NR.xxxx I
DMS.RAPGEN.xxx................................................................................................ 119
10.1.31. BEKLAGER ‑ DER ER IKKE NOK CORE FOR
TESTPRINT............................................................................................. 119
10.1.32. FEJL UNDER SORTERING, STATUS=x.............................................................................................................................. 119
10.1.33. FUNKTION x KAN IKKE UDFØRES PÅ DENNE
RAPPORT.......................................................................................... 119
10.1.34. DISSE RAPPORTER ER IKKE FRIE..................................................................................................................................... 119
10.1.35. FORKERT FORMAT.............................................................................................................................................................. 119
10.1.36. FORKERT FELTNUMMER, SKAL VÆRE MELLEM 1 OG
xx.......................................................................................... 119
10.1.37. DER ER INGEN TOTALER PÅ BREVE................................................................................................................................ 120
10.1.38. SORTERINGSNØGLE FORKORTET TIL xx
KARAKTERER............................................................................................ 120
10.1.39. DMS.RAPGEN ER IKKE INSTALLERET............................................................................................................................ 120
10.2. SAVE fejlnumre.......................................................................................................................................................................... 120
10.2.1. SAVE FEJL NR.104................................................................................................................................................................... 120
10.2.2. SAVE FEJL NR.108................................................................................................................................................................... 120
10.3. Basic fejlnumre........................................................................................................................................................................... 120
10.3.1. Nr.1 Syntaxfejl........................................................................................................................................................................... 121
10.3.2. Nr.2 Forkert alfanumerisk tekstbehandling........................................................................................................................... 121
10.3.3. Nr.3 Programmet er for stort.................................................................................................................................................... 121
10.3.4. Nr.5 Forkert tegn....................................................................................................................................................................... 122
10.3.5. Nr.9 Forkert ord......................................................................................................................................................................... 122
10.3.6. Nr.11 Forkert parantes‑sætning.............................................................................................................................................. 122
10.3.7. Nr.15 Division med 0 eller aritmetisk overflow..................................................................................................................... 122
10.3.8. Nr.18 For mange FOR/NEXT løkker....................................................................................................................................... 122
10.3.9. Nr.25 Alfanumerisk felt (eller matrix)
ikke dimensioneret.................................................................................................... 122
10.3.10. Nr.26 Logisk enhed er ikke aktiv............................................................................................................................................ 122
10.3.11. Nr.28 Forkert værdi for index,kanalnr.
eller signal‑parameter............................................................................................ 122
10.3.12. Nr.30 FN funktion ikke defineret............................................................................................................................................ 122
10.3.13. Nr.42 Kartoteket findes ikke................................................................................................................................................... 122
10.3.14. Nr.45 Kartoteket er læsebeskyttet......................................................................................................................................... 122
10.3.15. Nr.47 Disken er fuld................................................................................................................................................................. 122
10.3.16. Nr.50 Kartoteket er i brug af en anden.................................................................................................................................. 123
10.3.17. Nr.51 Forkert recordnr............................................................................................................................................................. 123
10.3.18. Nr.52 Record findes ikke......................................................................................................................................................... 123
10.3.19. Nr.73 Forkert parameter........................................................................................................................................................... 123
Figurer........................................................................................................................................................................................................ 124
Stikordsregister......................................................................................................................................................................................... 126
1.
Indledning.
DMS.RAPGEN er et
arbejdsredskab for ikke‑programmeringskyndige. Efter en ganske kort
indlæring kan alle ‑ i dialog med en dataskærm ‑ fremstille enkle
rapporter. DMS.RAPGEN er et gennemtestet produkt, udviklet i samarbejde med en
lang række EDB‑brugere over en 10 årig periode.
Hovedmålsætningen
for udviklingsarbejdet har været at opnå en enkel betjening ‑ således at
dette redskab kan anvendes af alle.
Rapporter kan
udskrives til alle typer printere eller vises på en dataskærm.
Rapportgeneratoren
bygger på et DATA‑DICTIONARY, der er defineret ved installationen, dette
indeholder en definition af alle kartotekerne på systemet. Herved bliver
rapportgeneratoren i stand til at vejlede brugeren igennem de forskellige
felter, uden det er nødvendigt med store manualer og beskrivelser af systemet.
2.1.
Rapportgeneratoren startes.
Når
rapportgeneratoren vælges får man følgende menu op på skærmen:
Figure 1
Rapportgeneratorens funktionsvalg.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
│
│ KODE FUNKTION │
│ 1......DEFINER
NY RAPPORT
│
│
│
│ 2......DEFINER
SELEKTIONER
│
│
│
│ 3......DEFINER
SORTERING OG TOTALER
│
│
│
│ 4......DEFINER
KALKULATIONER
│
│
│
│ 5......SLET EN
RAPPORT
│
│
│
│ 6......DEFINER
NYT BREV
│
│ │
│ 7......RETTELSE
AF RAPPORT / BREV
│
│ │
│ 8......UDSKRIFT
AF DEFINITIONER
│
│
│
│ 9......START AF
UDSKRIFT
│
│
│
│
10......KOPIERING │
│
F......FORMULARFREMFØRING │
│ STOP...STOP AF
UDSKRIFT
│
│ INDTAST
KODE: │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
og kan således
vælge en af disse funktioner ved at indtaste nummeret på den ønskede funktion.
2.3. Formålet
med denne manual.
Formålet med
denne manual er at beskrive hver enkelt funktion af rapportgeneratoren i
detaljer, for så vidt muligt illustreret med eksempler, således at brugeren kan
få de bedste betingelser for at anvende rapportgeneratoren på en kreativ måde.
Desuden gives en
række oplysninger af mere teknisk art til brug for programmører, der
installerer rapportgeneratoren eller ønsker selv at bygge videre på
rapportgeneratorens genererede programmer, normalt i form af fodnoter til de
enkelte afsnit.
Rapportgeneratoren
er yderst enkel at betjene, og kan læres i løbet af få minutter, også uden at
man læser denne manual. Samtidig kan rapportgeneratoren udnyttes til
fremstilling af endog meget komplicerede rapporter med sammenknytning af indtil
9 forskellige kartoteker samtidig. Rapportgeneratoren indeholder desuden en
lang række muligheder for opstilling af rapporter, hvilket beskrives i det
følgende.
Det kan nævnes, at
flere af vore kunder selv har opbygget mere end 100 rapporter og forespørgseler
med denne.
I manualens sidste
afsnit findes en udførlig liste over fejlmeddelelser og forskellige
fejlsituationer, man kan komme ud for i arbejdet med rapportgeneratoren.
Sidst men ikke
mindst findes en udførlig indholdsfortegnelse samt stikordsregister.
2.5. Kartoteker
benyttet til eksemplerne.
Vi har valgt at
benytte 4 små kartoteker, der alle er opbygget med DATAMASTER, til eksemplerne
i denne manual for at gøre disse så simple og overskuelige som muligt.
Rapportgeneratoren
kan naturligvis installeres på alle former for kartoteker, uanset om disse
måtte være indexed/relative, med pakkede/upakkede eller delvist pakkede nøgler,
indeholdende forskellige recordformater og hvad man ellers kan finde på. Alt
dette defineres af programmøren ved installationen af rapportgeneratoren,
betjeningen vil være den samme uanset om kartoteksstrukturen er simpel eller
kompliceret.
For at kunne
illustrere rapportgeneratorens anvendelse af flere kartoteker samtidig har vi
valgt at tage udgangspunkt i et simpelt varekartotek, hver vare refererer til
en varegruppe med oplysninger om varegruppens navn og en prisfaktor, der kan
benyttes til udregning af ny salgspris på basis af købspris i leverandørens
valuta.
Figure 2 Kartoteker
benyttet til eksemplerne.
KARTOTEKER.
┌───
Varenr
│┌──
Leverandørnr ┌──
Gruppenr
┌────────────────┴┴┐ ┌─────────────────┴┐
│VA │ │GR │
│Varekartotek ├───────────Ψ┤Varegruppekartotek│
└────────┬─────────┘ └──────────────────┘
Ω
│
│
Ϊ ┌──
Leverandørnr ┌──
Valutakode
┌────────┴────────┴┐ ┌─────────────────┴┐
│LE │ │KU │
│Leverandørkartotek├───────────Ψ┤Valutakartotek │
└──────────────────┘ └──────────────────┘
2.6.1. VA
Varekartoteket.
Figure 3 VA
Varekartoteket.
NR NAVN FORMAT LAYOUT INDEX
1 VARENR. 4
xxxx NØGLE 1
2 NAVN 20 xxxxxxxxxxxxxxxxxxxx
3 SALGSPRIS 6,2
999999,99
4 KØBSPRIS 6,2
999999,99
5 SIDSTE KØBSDATO ,6, 99,99,99
6 LEV.NR. 3
xxx NØGLE 2
7 GRUPPENR. 2,
99,
8 BEHOLDNING ‑6 ‑999999
9 ALTERNATIV LEV 3
xxx
10 FRIFELT ‑6,2 ‑999999,99
2.6.3. LE
Leverandørkartoteket.
Figure 4 LE
Leverandørkartoteket.
NR NAVN FORMAT LAYOUT INDEX
1 LEV.NR. 3
xxx NØGLE 1
2 NAVN 24 xxxxxxxxxxxxxxxxxxxxxxxx
3 ADRESSE 24
xxxxxxxxxxxxxxxxxxxxxxxx
4 BY 24 xxxxxxxxxxxxxxxxxxxxxxxx
5 VALUTAKODE 2,
99
6 SALDO ,8,2 ‑99,999,999,99
2.6.5. KU
Valutakurskartotek.
Figure 5 KU
Valutakurskartotek.
NR NAVN FORMAT LAYOUT INDEX
1 VALUTAKODE 2,
99 NØGLE
2 NAVN 4 xxxx
3 KURS 4,4 9999,9999
2.6.7. GR
Varegruppekartoteket.
Figure 6 GR
Varegruppekartoteket.
NR NAVN FORMAT LAYOUT INDEX
1 GRUPPENR. 2,
99 NØGLE
2 GRUPPENAVN 16
xxxxxxxxxxxxxxxx
3 PRISFAKTOR 4,4
9999,9999
2.6.9. Indholdet af
kartotekerne.
Figure 7 Vare‑kartoteket.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VARELISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN SALGSPRIS KØBSPRIS
DATO LEV ALT GR BEHOLDNING│O
│0101
CHOKOLADESTÆNGER 2,00 1,50
1.01.87 271 270 0 100│
O│0102
STOR FRÆSEMASKINE 20000,00 10000,00
1.01.85 100 0 9
0│O
│0110 AUTOBUSSER 100000,00 60000,00 15.12.86 123 100 2
1│
O│1001
PENGE,STORE SEDLER 1000,00 500,00 31.12.86 205 102 0
100│O
│1005
STANSEMASKINE 2000,00 1500,00
1.06.86 100 0 1
10│
O│2001
KREDITKORT 20,00 10,00
1.01.87 205 102 9 10│O
│2002 ID‑KORT 25,00 10,00 30.07.86 205 102 9
200│
└──────────────────────────────────────────────────────────────────────────────┘
Figure 8 Leverandør‑kartoteket.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LEVERANDØRLISTE * PR.14.01.87
SIDE: 1 │O
│
│
O│LEV.NR.
NAVN VALUTAKODE SALDO │O
│100 SORENCO A/S 0 0,00 │
O│102 DEN DANSKE BANK 0 25.000,00 │O
│105 DANSK OLIE OG GAS 0 500,00 │
O│111 DMS A/S 0 1.000,00 │O
│123 PITZNER AUTO A/S 1 0,00 │
O│205 PRIVATBANKEN 1 20.000,00 │O
│260 CLORIUS MÅLERSERVICE 0 2.000,00 │
O│270 FIDUSIA A/S 2 200,00 │O
│271 UNICEF 2 0,00 │
└──────────────────────────────────────────────────────────────────────────────┘
Figure 9 Kurs‑kartoteket.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * KURSLISTE *
PR.14.01.87 SIDE: 1 │O
│
│
O│VALUTAKODE
NAVN KURS
│O
│ 0 DKK
100,0000
│
O│ 1 LUF 18,5000
│O
│ 2 US$
770,0000 │
└──────────────────────────────────────────────────────────────────────────────┘
Figure 10 Varegruppe‑kartoteket.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VAREGRUPPELISTE * PR.14.01.87
SIDE: 1 │O
│ │
O│GRUPPENR
GRUPPENAVN PRISFAKTOR │O
│ 0 NORMALVARER 1,0000 │
O│ 1 DIVERSEVARER 2,0000 │O
│ 2 SPECIALVARER 1,2345 │
O│ 9 SKAFFEVARER 3,0000 │O
└──────────────────────────────────────────────────────────────────────────────┘
2.7. Generelt om
betjeningen.
Taster man blot
cr. i rapportgeneratorens menu vender man tilbage til systemets hovedmenu,
f.eks. en TAMOS menu.
Hver enkel
funktion i rapportgeneratoren afsluttes ved at indtaste ordet SLUT eller trykke
på cr.‑tasten.
En funktion kan
afbrydes ved at trykke ESCape, herved vil evt. ændringer til en rapport blive
annuleret.
En funktion kan
vælges direkte, ved at taste fx. 4, 28 vælger man at udføre funktion 4 (definer
kalkulationer) på rapport 28, sådan at man sparer tid ved ikke at skulle se
rapportoversigten.
Ved anvendelse af
flere kartoteker kan man se disses felter ved at taste ? eller trykke på HJÆLP‑tasten,
den funktionstast, der er placeret helt nederst til højre på tastaturet.
Figure 11 Tastaturplan
for rapportgeneratoren.
┌─────────┬──────────┬─────────┬──────────┬─────────┬───────────┐
│ │ │ │ │ │ │
│ = L4 │ = L3 │ = L2 │ = L1 │ = │ = │
│ │ │ │ │ │ │
├─────────┼──────────┼─────────┼──────────┼─────────┼───────────┤
│ │ │ │ │ │ │
│ = R4 │ = R3 │ = R2 │ = R1 │ = S │
= ON/OFF │
│ │ │ INDTAST │
VIS NØGLE│ │ │
├───────┬─┴─────┬────┴──┬──────┴┬───────┬─┴─────┬───┴───┬───────┤
│ │ │ │ │ │ │ │ │
│ BS │ Y │ N │ ‑
│ │ │ │ │
│ │ │ │ │ │ │ │ │
├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
│ │ │ │ │ │ │ │ │
│ C │ 7 │ 8 │ 9 │ │ │ │ │
│ │ │ │ │ │ │ │ │
├───────┼───────┼───────┼───────┤
SLUT ├───────┼───────┼───────┤
│ │ │ │ │ │ │ │ │
│ │ 4 │ 5 │ 6 │ │ │ │ │
│ │ │ │ │ │ │ │ │
├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
│ │ │ │ │ │ │ │ │
│ │ 1 │ 2 │ 3 │ │ │ │ │
│ │ │ │ │ │ │ │ │
├───────┴───────┴───────┼───────┤ CR ├───────┼───────┼───────┤
│ │ │ │ │ │ │
│ 0 │ , │ │ │ │ HJÆLP │
│ │ │ │ │ │ │
└───────────────────────┴───────┴───────┴───────┴───────┴───────┘
2.9.
Operativsystem.
Rapportgeneratoren kan anvendes på alle operativsystemer, fra NIROS 3.2
til 6.0. Ved release af nye operativsystemer bliver rapportgeneratoren løbende
opgraderet herfor.
Rapportgeneratoren
er skrevet i ren BASIC og anvender ikke nogen specielle assemblerrutiner eller
lignende. Ligeledes produceres et rent BASIC program, der kan viderebearbejdes
af en programmør om ønsket.
Der kræves kun en
active partitionsstørrelse på 16 KB, dog vil man kunne definere større
rapporter (flere totaler) jo større denne er. Der kræves 16 data filer åbne
(SYSMOD).
2.11. Diskplads.
Rapportgeneratoren kan normalt installeres på ca. 2500 sectorer.
Figure 12 Diskplads.
Pladsforbruget kan beregnes på
følgende måde:
1.
Rapportgeneratorprogrammer
=1000 sektorer.
2. Pr. ekstra skærm
samtidig: x * 75, f.eks.0 = 0 sektorer.
3. Pr. kartotek: x *
20,f.eks. 10 = 200
sektorer.
4. Rapportfil pr. rapport: x
* 4, f.eks. 44 = 176 sektorer.
5. Tekstfil pr. rapport: x *
4, f.eks. 44 = 176 sektorer.
6. Program pr. rapport: x *
16, f.eks. 44 = 704 sektorer.
7. Sorteringskartotek pr.
1000: x * 150,fx.1000 = 150 sektorer.
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
2406 sektorer.
I tilfælde af
pladsproblemer kan punkt 6, programmer pr. rapport, udelades og installationen
kan foretages helt uden sorteringskartotek, dvs. pladsbehovet reduceres til
1552 sektorer i ovennævnte eksempel.
2.13. DATAMASTER.
DATAMASTER er
omtalt flere steder i denne bog; et andet produkt der kan anvendes til
definition og vedligeholdelse af forskellige kartoteker af brugeren selv med en
yderst enkel betjening, idet man blot definerer de enkelte felter med navn og
format, så sørger DATAMASTER for resten. Desuden kan kartotekerne altid udvides
med nye felter eller index, idet eventuelt allerede oprettede data bevares.
DATAMASTER kan
anvendes til f.eks. skuffekartoteker som personalekartotek, kunde emnekartotek
m.v., eller til at udbygge et bestående system som f.eks. at tilføje et
varegruppekartotek med prisfaktor såfremt man ikke har et sådant tilknyttet
varekartotek i det normale system.
DATAMASTER
producerer helt normale kartoteker, der kan anvendes på samme måde som systemets
andre kartoteker, både af rapportgeneratoren og af programmøren.
2.15. Systemer.
Et
rapportgenerator‑system er selve installations‑beskrivelsen af
rapportgeneratoren, der blandt andet fortæller maskinen, på hvilken disk,
rapportgeneratoren er placeret.
Der kan findes op
til 100 forskellige systemer på samme maskine, men normalt vil man nok nøjes
med eet.
Ved hjælp af
parametrene for et sådant system kan programmøren ved installation af
rapportgeneratoren integrere denne ind i brugerens applikation, det være sig
STAR, TAMOS, NIROS mm.
Hvert system kan
indeholde forskellige kartoteksdefinitioner, såfremt man kører forskellige
applikationer på maskinen, eller disse kan være fælles for systemerne.
Et system kan
indeholde op til 88 rapporter, da rapportoversigten ellers ikke vil kunne vises
på skærmen.Skulle man have behov for mere end dette kan der ganske enkelt installeres
flere systemer.
3.
Definition af en rapport.
4.1. Generelt
Ved definition
af en ny rapport med funktion 1 fortæller man rapportgeneratoren, hvilket
kartotek rapporten skal opbygges over, tildeler rapporten et nummer og navn,
hvorefter man angiver, hvilke felter der skal udskrives på rapporten.For at
lette denne udvælgelse af felter viser rapportgeneratoren en oversigt over alle
felterne i det valgte kartotek.
Denne definition
kan gøres meget simpel, idet man blot indtaster de ønskede feltnumre, hvorved
rapportgeneratoren selv placerer disse på linien, pænt med overskrifter
justeret til højre eller venstre, alt efter om felterne er numeriske eller
alfanumeriske tekstfelter.
Når man således
har udvalgt felterne, kan man gå direkte til funktion 9 og starte rapporten,
hvorved rapportgeneratoren danner et basicprogram på basis af de indtastede
felter. Dette udskriver den definerede rapport på printeren eller på
skærmen.Det tager således ikke mere end et par minutter at lære at lave sit
første basicprogram.
Ydermere vil der
være dannet totaler på alle talkolonner, som rapportgeneratoren finder det
fornuftigt at totalisere, og programmet vil være optimeret, så en programmør
ikke ville kunne skrive det bedre.Det er altså ikke et helt simpelt program,
man har fået lavet på disse par minutter.
Definitionen kan
gøres mere udførlig, idet man selv kan påsætte overskrifter for felterne,
flytte disse til en bestemt position på linien, definere en rapport med flere
linier, for ikke at tale om at hente felter fra andre kartoteker.Samtidig med
at man opbygger udskriftslinien vil man kunne se på skærmen, hvordan denne vil
komme til at se ud, med overskrifter og felternes format placeret ind.
Når man definerer
en rapport skal man kun bekymre sig om, hvilke felter, der skal placeres hvor
på udskriften (rapportens layout).Når dette er gjort kan man senere udbygge
rapporten med selektioner, sorteringer, beregninger og specielle totaler, der
knyttes til det her definerede layout.Rapportgeneratoren er modulopbygget,
således at man kan ændre beregningerne m.v.på en rapport uden at skulle bekymre
sig om det een gang definerede layout.
Til brug for netop
beregningerne vises sammen med kartotekets felter på skærmen desuden 20 frie
felter, som man i denne fase kan vælge at udskrive og herved knytte et navn og
et format (antal cifre) til disse.Starter man rapporten umiddelbart, vil
sådanne felter blot blive udskrevet som nul, ved hjælp af beregningsfunktionen
kan man derefter give felterne et indhold.
4.3. Brug af
funktion 1.
Når man vælger
funktion 1, definition af en ny rapport, får man først en liste over de
rapporter, der allerede er defineret i systemet, frem på skærmen.
Figure 13
Rapportoversigt
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
1.....DEFINER NY RAPPORT │
│ 1 PRISLISTE
│
│ 2 LAGERVÆRDILISTE
│
│ 3 DÆKNINGSGRADER
│
│ 4 PRISBEREGNING
│
│ 5 LABELS TIL LEVERANDØRER │
│ 6 SALDOLISTE
│
│ 7 VARELISTE │
│ 8 VAREGRUPPELISTE
│
│ 9 LEVERANDØRLISTE
│
│ 10 KURSLISTE
│
│ 11 VARER PR.LEVERANDØR
│
│
│
│
│
│
│
│
│
│ │
│
│
│ │
│
│
│
│
│
│
│
│
│RAPPORT NUMMER ? CR=NÆSTE FRIE RAPPORT ? │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
4.4.1.
Rapportnummer.
Normalt vil man
blot taste cr.når rapportgeneratoren spørger om det rapportnummer, den nye
rapport skal defineres som, idet rapportgeneratoren herved automatisk selv vil
finde det næste frie rapportnummer og anvende dette.Det er dog også muligt selv
at angive et nummer, således at man kan gruppere sine rapporter fornuftigt, man
skal altså vælge et nyt nummer, der ikke står på skærmen.
På et normalt
system vil numrene 1 til 66 kunne anvendes.Har man ikke meget diskplads på
systemet kan rapportgeneratoren dog være installeret sådan, at de laveste numre
vil være hurtigst at starte, idet programmet for rapporter over et vist nummer
vil blive dannet, hvergang disse startes, rapporter mindre end dette nr.starter
direkte når programmet een gang er genereret.
4.4.3. Kartotek.
Når man har
valgt et rapportnummer, skal man angive hvilket kartotek, rapporten skal
defineres udfra.Rapportgeneratoren viser en liste over alle de kartoteker, der
er installeret:
Figure 14 Kartoteker.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1
1....DEFINER NY RAPPORT │
│GR.... VAREGRUPPER
│
│KU.... KURSER
│
│LE.... LEVERANDØRKARTOTEK
│
│VA.... VAREKARTOTEK
│
│
│
│
│
│
│
│
│
│
│
│ │
│
│
│
│
│
│
│KARTOTEKSNR.?
│
│
│
│
│
│ │
│
│
│ │
│
│
│
│
│
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Hvert kartotek
vises med en 2‑bogstavs forkortelse og en tekst, der beskriver
kartotekets indhold.Man udvælger et kartotek ved at indtaste
kartoteksforkortelsen.
Det kartotek, man
her vælger, vil blive rapportens hoved‑kartotek, dvs.det kartotek, der
gennemlæses når rapporten køres.Udfra dette kan man om ønsket definere opslag i
andre kartoteker.Specielt skal det ved udskrift af kontoudtogstypen af en
rapport være liniekartoteket rapporten defineres på.
For DATAMASTER
kartoteker kan man på dette sted angive, at der skal skrives tilbage i
kartoteket ved at taste komma W efter kartoteksforkortelsen, f.eks.XX, W.Herved
vil det være muligt at regne på selve kartotekets felter, f.eks.steppe en
rykkerkode op hvergang rykkerbrev udskrives tilbageskrivning i kartoteker;For
at gøre brugeren opmærksom på, at det kan være farligt at skrive i kartoteket
vil start af en sådan rapport blive password beskyttet.
Ved specielle
installationer af kartoteker kan programmøren have lagt flere forskellige
varianter af kartoteket op, disse aktiveres ved at taste kartoteksforkortelse,
variantnummer, f.eks.XX, 1 eller XX, A.Programmøren vil i disse tilfælde have
instrueret i disse.
4.4.5. Kartoteks‑password.
Programmøren har
ved installation mulighed for at passwordbeskytte enkelte kartoteker,
f.eks.lønkartoteker, således at passwordet for det valgte kartotek skal angives
på dette tidspunkt, for at der kan defineres en rapport på dette.Brugeren kan
herefter selv knytte et password på den definerede rapport.
4.5. Rapportens
stamoplysninger.
Herefter skal
der indtastes en række stamoplysninger, der knyttes til rapporten i hele dens
levetid:
Figure 15 Rapportens
stamoplysninger.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1
1....DEFINER NY RAPPORT │
│GR.... VAREGRUPPER
│
│KU.... KURSER
│
│LE.... LEVERANDØRKARTOTEK
│
│VA.... VAREKARTOTEK
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│KARTOTEKSNR.?
VA......VAREKARTOTEK │
│
│
│RAPPORT NAVN (FOR PROGRAMVALG)
? PRISLISTE │
│
│
│ANTAL LINIER PR.SIDE (CR=51) ? 51 │
│
│
│OVERSKRIFT (N=INGEN,CR=SOM NAVN) ?
PRISLISTE │
│
│
│SKAL NUL UDSKRIVES (J/N) ? J
BRUGERNAVN ? XXX │
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
4.6.1. Rapportnavn.
Der skal
indtastes et rapport navn på højst 25 karakterer, og dette navn må ikke være
blankt.Navnet vises på oversigten over rapporter, hvergang en funktion vælges,
og bør derfor være i en sådan form, at man let kan identificere rapporten.
Selv om man kan
indtaste 25 karakterer her, må man være opmærksom på, at hvis
rapportgeneratoren er installeret med mulighed for mange rapporter, f.eks.88,
kan det være færre karakterer, der egentlig er plads til i skærmbilledet, når
rapportoversigten vises, hvorfor navnet vil blive kortet af på oversigten.
Rapportnavnet kan
senere ændres ved at kopiere rapporten til en anden.
4.6.3. Antal linier
pr.side.
Rapportgeneratoren vil foreslå en standard sidehøjde ved installation;,
og kvitterer man blot her med cr.får man denne værdi.Anvender man
specialformularer, kan et andet antal linier angives, specielt er A4 papir 72
linier højt.Det må bemærkes, at labels normalt defineres ved hjælp af
brevskrivningsmodulet, se funktion 6.
Rapportgeneratoren
vil herefter skifte side 3 linier før slutningen af papiret.Der er her mulighed
for at ændre dette tal, således at der skiftes side før, ved at indtaste antal
linier pr.side komma sideskiftslinier, f.eks.51, 5 vil definere 51 linier
pr.side med sideskift 5 linier før siden er fuld, altså efter linie 46 er
udskrevet.
4.6.5. Overskrift.
Tastes blot
cr.her får man rapportens navn som overskrift, ellers har man mulighed for selv
at angive en overskrift.Overskriften placeres på midten af første linie, idet
længden af selve overskriftslinien bestemmes af, hvor bred listen defineres,
altså hvor mange felter man vælger at udskrive.
Tastes N får man
overhovedet ingen overskrift på rapporten, hverken sidenumre eller
feltoverskrifter vil blive udskrevet.
4.6.7. Skal nul
udskrives (J/N).
Normalt vil man
blot kvittere her, hvorved man svarer J.
Der er mulighed
for at undertrykke udskriften af felter, der er nul, på en rapport, således at
disse bliver udskrevet som blanke istedet for 0, ved at taste N her.
4.6.9. Printer.
Dette spørgsmål
vil kun blive stillet, såfremt programmøren ved installation har angivet
mulighed for flere printere, og man kan i så fald vælge en bestemt printer, som
rapporten skal udskrives på, her.
Normalt vil man
nok vælge at udelade denne funktion ved installation, således at udskriften
styres via den normale printertildeling i TAMOS.
Printervalget kan
evt.begrænse længden af de linier, der kan defineres.
4.6.11. Brugernavn.
Man har mulighed
for at password‑beskytte rapporten ved at indtaste et brugernavn her,
dette skal i så fald opgives ved enhver ændring/sletning af
rapportdefinitionerne.
Normalt vil man
blot taste cr., hvorved rapporten ikke bliver passwordbeskyttet.
Indtaster man
brugernavnet omgivet af control E, f.eks.ETESTE, vil dette ikke blive vist på
skærmen ved indtastningen og vil desuden bevirke, at også start af
rapportudskrift vil blive passwordbeskyttet.
Brugernavnet kan
ændres ved kopiering af rapporten, hvor man naturligvis skal opgive det gamle
brugernavn først.Kan man ikke huske et brugernavn for en rapport må man
kontakte den programmør, der er ansvarlig for installationen.
4.7. TAMOS
selektor.
Normalt vil
denne funktion ikke være aktiveret, man vil så gå direkte til definition af
rapportlinierne.
Såfremt
rapportgeneratoren er installeret med integration til Tamos menu‑systemet,
vil man efter indtastningen af brugernavnet få f.eks. følgende skærmbillede
frem:
Figure 16 TAMOS selektor
definition.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 1.....DEFINER NY
RAPPORT │
│
│
│* TAMOS SELEKTOR * RAPPORT NR: 1
PRISLISTE
│
│ 1 SYSTEM BETJENING 1 DAGLIGE
PROCEDURER 1 SPØRGE PORTE 00/TA.STRPIQ │
│ 2 2
HJÆLPEPROGRAMMER 2 SPØRGE
ARKIVFIL 00/TA‑PRTARC │
│ 3 3 DISK
STYRING 3 SPØRGE LOGFIL 00/UT.ZDM │
│ 4 4 4 UDSKRIVE LOGFIL 00/UT.ZDM │
│ 5 5 5 ÆNDRE TID 00/TA.STRPIQ │
│ 6 6 6 PRINTERTILDELING 00/TA‑PRTASGN│
│ 7 7 7 SPØRGE SPOOLFIL 00/TA.DISPQ │
│ 8 8 8 SPOOLER TILDELING 00/TA.PRTASGN│
│ 9 9 9 PRISLISTE DMS.RAP │
│10 10 10 │
│11 11 11 │
│12 12 12 │
│13 13 13 │
│14 14 14 │
│15 15 15 │
│NR.? 1 NR.? 2 NR.? 9 │
│
│
│DETTE PROGRAMNR.ANVENDES AF:PRISLISTE │
│
│
│ERSTAT DEN GAMLE RAPPORT (J/N) ?
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Man kan her
indtaste, på hvilke numre man ønske rapporten placeret i selektorens 3
niveauer.
Tastes blot cr i
første nr. placeres rapporten ikke i selektoren.
Findes der
allerede en rapport på det valgte sted i selektoren, vil man blive spurgt, opm
man ønsker at erstatte denne med den nye.
Det er ikke muligt
at erstatte andre programmer end rapportprogrammer.
4.9.
Rapportlinierne
Når man har
indtastet rapportens stamoplysninger vil rapportgeneratoren vise en oversigt
over samtlige felter i det valgte kartotek på skærmen, foruden 20 frifelter til
brug for beregninger, markeret med teksten @FRI.
Figure 17
Rapportlinier.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 1......DEFINER NY
RAPPORT │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 @FRI 29
@FRI
│
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI
│
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│1...,....10...,....20...,....30...,...;40...,....50...,....60...,....70...,....8│
│+xx , ‑xx , Pxx =POSITION , Hxx =OVERSKRIFT , Nxx =UDEN
OVERSKR.,D=SLET, T=TEXT │
│VARENR NAVN
SALGSPRIS │
│AAAA AAAAAAAAAAAAAAAAAAAA
######.## │
│LINIE NR. 1 FELTNR. ?
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Nederst på
skærmen vises en kort instruktion, herefter er de næste 3 linier reserveret til
at vise linierne, efterhånden som disse opbygges, og brugeren befinder sig
nederst i feltet:
LINIE NR.
1:FELTNR:
Rapporten opbygges
ganske enkelt ved at indtaste nummeret på de ønskede felter.Et felt vil blive
placeret på linien med samme overskrift, som feltets navn, med en afstand på
eet mellemrum fra det sidst valgte felt.Overskriften vil blive pænt højre eller
venstrestillet alt efter om feltet er numerisk eller alfanumerisk.Når et felt
vælges vil dette lyse op på skærmen således at man kan se, hvilke felter der er
udvalgt, samtidig kan man følge med i linieopbygningen nederst.
Når rapportlinierne
således er defineret taster man SLUT (eller cr‑tasten), hvorved
rapportgeneratoren vil lagre definitionerne på disken og rapporten kan
startes.Udskriften kan komme til at se således ud:
Figure 18 Den færdige
udskrift.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * PRISLISTE *
PR.14.01.87 SIDE: 1 │O
│
│
O│VARENR
NAVN SALGSPRIS
GRUPPENR │O
│0101 CHOKOLADESTÆNGER 2,00 0 │
O│0102 STOR FRÆSEMASKINR 20000,00 9 │O
│0110 AUTOBUSSER 100000,00 2 │
O│1001 PENGE,STORE SEDLER 1000,00 0 │O
│1005 STANSEMASKINE 2000,00 1 │
O│2001 KREDITKORT 20,00 9 │O
│2002 ID‑KORT 25,00 9 │
O│
│O
│GRANDE TOTAL 123047,00 │
└──────────────────────────────────────────────────────────────────────────────┘
Der er indbygget
en række specialfunktioner, man kan anvende under opbygningen af linierne for
at editere udskriften:
4.10.1. +xx flyt xx
karakterer frem.
Man kan ved
hjælp af pilen på positionslinien se, hvor det næste felt vil blive placeret på
linien, ved hjælp af f.eks.+5 kan man flytte sig 5 karakterer frem og således
skabe mere luft mellem felterne.
4.10.3. ‑xx
flyt xx karakterer tilbage.
Specielt
bevirker ‑1 at man flytter sig en position tilbage, og da mellemrummet
mellem felterne normalt er een karakter vil næste felt altså komme til at stå
tæt på det foregående.Dette kan især bruges når man definerer rapporter med
mange felter, og feltet er med fortegn, idet man så strengt taget ikke behøver
at adskille felterne med en ekstra blank, fortegnet vil skrives som en blank
eller et ‑ og således gøre listen læselig.
Man kan aldrig
bevæge sig længere tilbage end sidste felt på linien, er dette nødvendigt må
man slette felterne igen med D kommandoen, se senere.
4.10.5. Pxxx flyt til
position xxx.
Man flytter sig
frem/tilbage til position xxx på linien, dog aldrig længere tilbage end sidste
felt, se ovenfor.
4.10.7. Hxx feltnr.xx
med manuel overskrift.
Indtaster man
blot feltnummeret, vil feltets navn automatisk blive brugt som overskrift,
taster man H foran feltnummeret, kan man selv indtaste overskriften.
Overskriften for
et felt er altid een linie på dette tidspunkt, ved hjælp af funktion 7, ændring
af rapport, kan man evt. senere udbygge med flere overskriftslinier.
4.10.9. D slet sidst
valgte felt.
Ved hjælp af D
kan man bakke på linien, hvis man har valgt et felt og fået en automatisk
overskrift, man ikke er helt tilfreds med, kan man taste D og vælge feltet igen
med H foran feltnummeret for manuel overskrift.
4.10.11. T tekst på
linien.
Taster man
f.eks.TSALDO vil teksten SALDO blive placeret mellem felterne på linien (ikke
som overskrift).
4.10.13. Nxx feltnr.
xx uden overskrift.
Tastes N foran
feltnummeret indsættes feltet på linien med en blank overskrift.
4.10.15. N Fjern alle
overskrifter fra linien.
Tasten N alene
undertrykkes alle overskrifter for denne linie, der udskrives heller ikke en
blank linie i overskriften, hvilket ville være tilfældet, hvis de enkelte
felter var valgt med Nxx. Denne funktion anvendes specielt ved rapporter med
mange feltlinier, hvor man ikke ønsker ligeså mange overskriftslinier.
4.10.17. H@xx
feltnr.xx permanent overskrift.
Denne kommando virker på sammer måde som Hxx,
man kan altså indtaste en manuel overskrift for feltet.Overskriften vil nu også
blive sat fast ind i kartoteksdefinitionerne som feltnavn, man retter altså i
det af programmøren valgte feltnavn.
Funktionen bruges
typisk når programmøren har valgt længere feltnavne, end man nogen sinde vil
bruge som overskrift for det pågældende felt.Man skal dog passe på, at man
stadig kan genkende feltet, når man retter på denne måde.
4.10.19. KK#xx felter
fra andre kartoteker.
Man kan udvælge
felter fra andre kartoteker simpelt hen ved at angive kartoteksforkortelsen
foran feltnummeret.Vælges sådanne felter kræver dette altid, at man definerer
en beregningslinie for READ af kartoteket, se afsnittet om flere kartoteker.
4.10.21.
2.5.11. ? Hjælp
oversigt over andre kartoteker.
Ved hjælp af ?
eller hjælptasten kan man se alle kartoteker og disses felter, se afsnittet om
flere kartoteker.
4.10.23. LINIE
Kontoudtogstype rapport.
Denne kommando
skal gives som den første på en ny linie og fortæller rapportgeneratoren, at de
allerede definerede linier skal udskrives som et hoved på en slags kontoudtog,
de linier, der defineres herefter, skal udskrives som de enkelte
'posteringslinier'.Selve styringen af dette foregår med READH kommandoen, se
afsnittet om flere kartoteker.
4.10.25.
2.5.13. cr afslut
denne linie.
Tastes blot cr
bliver man bedt om at godkende linien med:
ER LINIEN OK
(J/N)?
og kan altså
annulere hele linien eller godkende denne blot ved at kvittere.Herved vises
denne linies feltindhold en linie højere oppe på skærmen, og man kan nu
definere næste linie, idet man kan se hvordan felterne bliver placeres i
forhold til felterne på den foregående linie.Man vil normalt begynde
definitionen af næste linie med at rykke et antal karakterer ind med +xx
kommandoen, således at rapporten bliver pænt opstillet.
Der kan defineres
lige så mange linier på en rapport, som man ønsker, dog op til 3 linier fra den
angivne sidehøjde.Labels bør defineres som et brev, ikke som en rapport.
Til hver linie
knyttes en overskriftslinie, definerer man mange linier kan overskriften blive
større end ønsket, i så tilfælde kan man med N kommandoen frakoble overskriften
for visse linier.
4.10.27. Blanke linier
(dobbelt linieafstand).
Blanke linier på
en rapport defineres ved først at godkende den definerede linie og herefter at
godkende linien umiddelbart efter uden at vælge nogen felter. Rapporter med
dobbelt linieafstand kan således defineres på denne måde.
N kommandoen kan
anvendes, såfremt man ikke samtidig ønsker at placere en blank linie i
overskriften.
4.11. Frifelter.
Foruden
kartotekets felter vises 20 frifelter på skærmen markeret med @FRI.Disse felter
anvendes, når man vil udskrive beregnede felter, altså felter der ikke indgår
direkte i kartoteket.
4.12.1. Overskrift og
navn.
Når man vælger
et sådant felt vil man altid blive bedt om at indtaste overskrift for feltet,
da rapportgeneratoren ikke kan vide, hvad feltet vil komme til at
indeholde.Denne overskrift vil også blive feltets navn på denne rapport,
således at man når man f.eks.definerer beregninger ikke længere vil se feltet
som @FRI, men derimod med den tekst, man har givet som overskrift.
4.12.3. Feltformat.
Rapportgeneratoren kan heller ikke vide, hvordan feltet skal se ud,
altså hvor mange cifre eller karakterer, dette skal bestå af (feltets format),
og derfor får man efter at have indtastet overskriften for feltet mulighed for
at angive dette.Rapportgeneratoren vil selv foreslå et format, for de første 10
frifelter vil dette være ‑9, 2 altså ni cifre efterfulgt af to decimaler
med fortegn, for de næste 10 frifelter vil forslaget være ‑5, altså fem
cifre uden decimaler, men med fortegn.
Dette feltformat
kan ændres uanset hvilket forslag, rapportgeneratoren har givet, idet man skal
følge nedenstående regler:
4.12.5. Definition af
feltformatet.
Figure 19 Definition af
feltformatet.
1. xx,
angiver et tal på xx cifre uden fortegn.
2. xx,y
angiver et tal med xx cifre foran kommaet og
y decimaler,
ingen fortegn.
3. ‑xx,
som 1, med fortegn.
4. ‑xx,y som 2, med fortegn.
5. ,xx,
som 1, med kommaeditering pr.1000
f.eks.
999,999,999
,6, datofelt med kommaeditering: 99,99,99
6. ,xx,y som 2, med kommaeditering pr.1000
f.eks.
999,999,999.99
7. xx
udelades kommaet defineres et tekstfelt på
xx karakterer
(maksimalt 80 karakterer).
4.12.7. Ændring af
feltformater.
Når man først
har fået knyttet et feltformat til et frifelt vil dette blive husket af
rapportgeneratoren og kan ikke umiddelbart ændres, sker dette ved definitionen
af rapporten er det letteste nok at bakke med D kommandoen og vælge et andet
felt.Opdages det senere kan man i funktion 7, ændring af rapport, give
kommandoen FORMAT og herved ændre feltformatet.
Det er kun
frifelterne, hvor man har adgang til at ændre feltformatet, selve kartotekets
felter er det ikke muligt at ændre.
Alfanumeriske
tekstfelter er det ikke muligt at ændre, har man først een gang fået defineret
et frifelt som et tekstfelt er der ingen anden mulighed end at vælge et andet
felt, hvis formatet skal ændres.Dette skyldes, at rapportgeneratoren lagrer
sådanne felter på en helt speciel og temmelig kompliceret måde, se også
afsnittet om alfanumeriske tekstfelter.
4.12.9.
Regnenøjagtighed (præcision).
Uanset hvilket
format man vælger for et frifelt, vil dette altid blive beregnetmed flydende
komma og maskinens maksimale regnenøjagtighed på 14 cifre, også selv om kun har
bedt om f.eks.1, altså kun et ciffer uden decimaler.
Dette kan
naturligvis udnyttes ved mellemregninger etc., idet man sagtens kan regne med
mange cifre på et frifelt, dog kan det give problemer med afstemning når man
f.eks.totaliserer et sådant felt.Se afsnittet om afrunding under beregninger.
4.12.11. Automatisk
feltudvidelse (overflow).
Såfremt et tal
bliver større end det der kan rummes i det angivne format for et felt, vil
basic normalt udskrive dette med *, således at det er umuligt at læse tallet.I
så fald er man naturligvis nødt til at udvide feltformatet til det rigtige
antal cifre.
Rapportgeneratoren
indeholder en facilitet så denne situation for så vidt muligt undgås, idet
formatet for et numerisk felt automatisk vil blive udvidet med ekstra cifre til
venstre, såfremt der er fri plads på linien til dette.Herved undgås langt de
fleste 'overflow' situationer, specielt i forbindelse med totaler.
Kommer man ud for
en situation, hvor f.eks.en total for et felt udskrives som stjerner, kan dette
altså afhjælpes ved at give noget bedre plads på rapporten til venstre for
feltet, man behøver ikke nødvendigvis udvide feltformatet. Dette gælder både de
frie felter og felterne i kartotekerne.
4.13. Automatiske
totaler.
Når man
definerer en rapport vil rapportgeneratoren selv danne en 'grande total' for
listen på de felter, der kunne se ud til at være fornuftige at totalisere.Man
får altså foræret en total, der normalt vil være relevant, i visse tilfælde vil
det være æbler og pærer lagt sammen, hvilket må man så se bort fra eller gå
over i funktion 3, definering af sortering og totaler, og selv definere, hvilke
felter der skal totaliseres, samt eventuelt udbygge med subtotalniveauer etc.
Rapportgeneratoren
danner automatisk total på felterne iflg.følgende
Figure 20 Automatiske
totaler.
kriterier:
1. Feltet skal være
numerisk med
2. mere end 4 cifre eller
3. være angivet som 4
ords variabel (max.regnenøjagtighed)
4. dog ikke hvis feltet
er editeret som dato (,6,)
5. eller er markeret med
en speciel checkkode (1‑9)
for f.eks.nøglefelter
mv.
4.15. Højde og
bredde for en rapport.
Man kan
maksimalt angive 80 linier pr.side for en rapport, 72 linier vil svare til en
normal A4‑side.Der kan defineres lige så mange linier, man ønsker, inden
for dette, indtil 3 linier fra slutningen af en side.Dog skal man huske på, at
en linie normalt tæller dobbelt, både som selve linien og som overskriftslinie.
Køres en rapport
over skærmen vil man skulle taste cr.hvergang en skærmside er fuld uanset den
tidligere definerede sidehøjde, altså for hver 24 linier.
Bredden på en
rapport kan være op til 177 karakterer, dog begrænset af bredden på den
anvendte printer, der normalt vil være 132 karakterer.A4 papir er 80 karakterer
bredt svarende til skærmens bredde.
Når en rapport
defineres bredere end 80 karakterer vil visningen på skærmen af linierne med
overskrift og feltformater flytte sig til venstre, således at man helt tiden
kan se de sidste 80 karakterer, man har defineret.
Køres en rapport,
der er defineret bredere end 80 karakterer, på skærmen vil der vises 2 linier
pr.defineret linie, hvilket kan give et mere eller mindre ulæseligt
resultat.Ønsker man at bruge en rapport til skærmforespørgsler bør man altså
begrænse sig til 80 karakterer.
Ved specielle installationer
(ikke optimerede systemer) kan rapportgeneratoren istedet bringes til at skære
linierne af efter 80 karakterer.
5.
Selektioner.
Selektioner
anvendes til at udvælge bestemte records i et kartotek.
Figure 21
Leverandørlisten, kun saldi over 500 kr.udskrives
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LEVERANDØRLISTE * PR.14.01.87
SIDE: 1 │O
│
│
O│LEV.NR.
NAVN VALUTAKODE SALDO │O
│102 DEN DANSKE BANK 0 25.000,00 │
O│111 DMS A/S 0 1.000,00 │O
│205 PRIVATBANKEN 1 20.000,00 │
O│260 CLORIUS MÅLERSERVICE 0 2.000,00 │O
└──────────────────────────────────────────────────────────────────────────────┘
6.1. Normal brug
af selektionerne.
Når man vælger
funktion 2, definering af selektioner på en rapport, får man oversigten over
kartotekets felter frem på skærmen og kan udvælge et af disse ved at indtaste
feltnummeret:
Figure 22 Definition af
selektioner.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 2......DEFINER
SELEKTIONER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 @FRI 29 @FRI │
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI
│
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│
│
│
│
│GRUPPENR
>=3
<=15 │
│BEHOLDNING
>=100 │
│FELTNR:8
MINIMUM:100
MAXIMUM: │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Man indtaster
således feltnummeret og kan herefter angive minimum og maksimum for feltet, således
at kun records, hvor dette felt ligger i det angivne interval, vil blive
udskrevet.
Man kan nøjes med
at angive en af værdierne for minimum/maksimum og således f.eks.kun indsætte en
mindsteværdi.
Herefter kan man
angive et nyt feltnummer og således definere kombinerede selektioner på flere
felter.Man skal dog være opmærksom på, at dette vil være en OG selektion, altså
både den første selektion OG den anden skal være opfyldt, f.eks.felt 7 skal
være 5 OG felt 15 skal være 1 samtidig.Definerer man en selektion som felt 7
skal være 5 OG felt 7 skal være 9, vil man slet ikke få udskrevet noget på
rapporten, da dette er en ELLER selektion, dette må gøres via beregningerne, se
senere.
Man kan selektere
både på kartotekets felter, beregnede felter og felter fra andre kartoteker.
Når man er færdig
med definitionen tastes SLUT eller cr‑, hvorefter rapporten kan startes.
6.3. Sletning af
selektioner.
Næste gang man
vælger at definere selektioner på rapporten slettes de gamle selektioner
automatisk og erstattes af de nye, afslutter man med det samme uden at definere
nogen selektioner vil rapporten udskrives i sin helhed helt uden selektioner.
6.5. Selektion
på forskellig fra nul etc.
Angiver man
minimum/maksimum vil feltets værdi skulle ligge i dette interval.Man kan både i
minimum og maksimum angive en af relations‑operatorerne dette afsnit
under beregninger; og f.eks. definere:
MINIMUM: <>0
og intet maksimum,
hvorved kun records med det givne felt ulig nul udskrives.
6.7. Selektion
på alfanumeriske tekstfelter.
Man skal være
opmærksom på, at minimum/maksimum værdi skal angives i gåseøjne,
f.eks."A", såfremt feltet er alfanumerisk.Disse blev sat automatisk i
tidligere versioner af rapportgeneratoren.
6.9. Beregninger
i selektionerne.
Både i feltnr.,
minimum og maksimum kan man angive en beregning, man kan således
f.eks.definere:
Figure 23 Beregninger i
selektionerne.
FELTNR:
#5+#7 MINIMUM: #15*100
og således
definere selektion på at et felt skal være større end et andet etc.
6.11.
Selektionsangivelse ved start af rapporten.
Specielt kan man
anvende data, der indtastes ved start af rapporten (se afsnittet om dette),
således at man hver gang man starter en rapport kan angive, hvilke records, der
skal udskrives:
MINIMUM: #D1
MAKSIMUM: #D2
vil bevirke, at
man, når rapporten startes, skal indtaste det interval, som det valgte felt
skal ligge indenfor.Man kan endda via beregningerne få knyttet en tekst til
disse specialfelter, som altså i klar tekst fortæller, hvad der skal indtastes
ved opstarten.
6.13. Selektion
på dele af felter.
Såfremt man
ønsker at selektere på, at 3 ciffer i f.eks.en varegruppe skal være 5, kan man
som feltnr.give #7(3, 3), se også afsnittet om dele af felter under
beregningerne.(Denne funktion erstatter anvendelsen af ;;; i tidligere
versioner)
6.15. ELLER
selektioner kombineret med beregninger.
Det at man kan
selektere på beregnede felter kan udnyttes til at opbygge mere komplicerede
selektioner ved at beregne et frifelt til brug for selektionerne, f.eks.:
#50=0
IF #7=3 LET #50=1
IF #7=5 LET #50=1
IF #9>3 LET
#50=0
og herefter
definere en selektion som:
FELTNR:50
MINIMUM:1
hvorved man kun
får udskrevet de records, hvor felt 7 er enten 3 eller 5, dog ikke hvis felt 9
er større end 3.
6.17. QUICK
Selektioner.
Denne funktion
kan kun anvendes i forbindelse med kartoteker defineret med DATAMASTER
kartoteks‑definitionsprogrammet eller tilsvarende.Funktionen kan ikke
anvendes på STAR eller NYRUP kartoteker, derimod i forbindelse med COMET og DMS
egne installationer.
Normalt vil
selektionerne foregå, efter at beregningerne er foretaget, dvs.efter at alle
felter i alle kartoteker er indlæst og alle andre beregninger er foretaget.
Med QUICK
selektioner kan man angive, at eet bestemt felt skal indlæses før alt andet, og
selektionen på dette felt skal foregå før noget som helst andet foretages,
dvs.de normale READ‑statements skal ikke anvendes til selektionen,
derimod skal rapportgeneratoren selv generere en højt prioriteret indlæsning af
det enkelte felt.Dette kræver, at feltet er et simpelt numerisk felt, der ikke
er pakket, og at der overfor rapportgeneratoren ved installation er defineret, hvor
i recorden dette er placeret (bytenummer), hvilket specielt er tilfældet for
DATAMASTER kartoteker.
QUICK selektioner
har altså kun betydning for hastigheden af rapporten, ikke for selve funktionen
af denne, og finder især anvendelse ved udskrift af meget få records fra meget
store kartoteker, hvor man til gengæld også kan opnå at få en rapport til at
køre op til 20 gange hurtigere igennem et sådant kartotek. Vær dog opmærksom på
vejede totaler, se afsnittet om denne funktion.
Man kan selvklart
ikke foretage nogen beregninger på andre felter i forbindelse med QUICK
selektioner, da disse slet ikke er indlæst på dette tidspunkt.
QUICK selektioner
aktiveres ved i feltnr. at indtaste kommandoen QUICK hvorved rapportgeneratoren
svarer med QUICK SELEKTIONER AKTIVERET. Derefter definerer man en helt normal
selektion på et simpelt numerisk tal, og denne vil altså få prioritet over alt
andet på rapporten.
Såfremt feltet
ikke er simpelt numerisk vil rapportgeneratoren ignorere angivelsen af quick
selektion. Man kan højst definere 2 quick selektioner på een rapport.
7.
Beregninger.
8.1.
Beregningsfunktionens struktur.
Beregningsfunktionens anvendes til at beregne felter, der skal udskrives
på rapporten eller anvendes til f.eks.selektion eller sortering, og som ikke
indgår direkte i et kartotek.Man kan f.eks.lægge to tal sammen, forhøje et felt
med 10% etc.
Ved at definere
beregninger skriver brugeren faktisk deciderede BASIC linier, og herved opnår
man, at den enkle syntax fra basic kan anvendes, dvs.man skriver ligesom man
ville gøre normalt, f.eks.A=B+C.Desuden opnås den fordel, at alle basics mere
sofistikerede funktioner kan anvendes, lige fra potensopløftning til
kvadratrodsuddragning og sinus.Rapportgeneratoren vil også automatisk indeholde
de nye faciliteter, der måtte blive implementeret i operativsystemet.
Naturligvis er det
ikke alene basic, der anvendes; Rapportgeneratoren er stærkt udbygget med mange
flere funktioner.Man refererer f.eks.til et felt fra det pågældende kartotek
blot ved at angive #7, dvs.et nummertegn foran feltnummeret. Man kan regne på
et felt fra et andet kartotek ved blot at angive kartoteksforkortelsen foran
feltnummeret, f.eks.KU#7, dvs.rapportgeneratoren holder selv styr på alt det
svære, nemlig hvordan de enkelte tal (variabler) egentlig er lagret internt i
programmerne og kartotekerne.
Desuden findes der
funktioner for afrunding til hele kr., hele ørebeløb, meget udbyggede
datofunktioner for f.eks.beregning af antal dage mellem 2 datoer, endda antal
arbejdsdage mellem 2 datoer, funktioner for læsning af andre kartoteker og
funktioner for beregning af checkcifre på forskellige måder, f.eks. til
udskrift af optisk læsbar OCR‑linie på girokort.
Beregnede felter
kan anvendes både ved selektion og sortering og naturligvis videre beregninger
eller udskrift, og dette er nok en af de stærkeste sider ved
rapportgeneratoren.Man kan f.eks.sortere en vareliste op efter et leverandør
navn hentet fra leverandørkartoteket og kun udskrive de varer, hvor
leverandøren skal betales i en bestemt valuta.
8.3. Brug af
beregningsmodulet.
Når man vælger
funktion 4, kalkulationer, får man følgende skærmbillede frem:
Figure 24 Beregninger.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 4......DEFINER
KALKULATIONER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 @FRI 29
@FRI │
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI
│
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│
│
│
│
│BEREGNINGER INDTASTES SOM FX: #60=#21+#22 , PROCENT SOM FX.
#61=#62%#63 │
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│BEREGNING ?
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Ved definition
af rapporten med funktion 1 har man f.eks.valgt at udskrive et af fri‑felterne
på rapporten, og på denne måde har man fået givet frifeltet et navn og knyttet
et format (antal cifre) til dette.Har man også udskrevet rapporten vil der have
stået nul i det pågældende felt.
Nu kan man
indtaste sin beregningslinie, f.eks.
#50=#21*#22
hvilket altså
betyder at feltnr.50 bliver beregnet som feltnr.21 gange med feltnr.22.Når man
kvitterer for denne linie vil rapportgeneratoren oversætte beregningen til klar
tekst ved at erstatte feltnumrene med de respektive feltnavne, og man bliver
bedt om at godkende linien.Der er således mulighed for at læse korrektur på
linien før man sender den af sted.
Figure 25 Indtastning
af en beregning.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 4......DEFINER
KALKULATIONER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 LAGERVÆRDI 29
@FRI
│
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI │
│ 16 @FRI
│
│ 17 @FRI │
│ 18 @FRI
│
│
│
│BEREGNINGER INDTASTES SOM FX: #60=#21+#22 , PROCENT SOM FX.
#61=#62%#63 │
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│LAGERVÆRDI=BEHOLDNING*KØBSPRIS
│
│BEREGNING ? #11=#8*#4
│
│
OK (J/N) ? │
└────────────────────────────────────────────────────────────────────────────────┘
Når man
godkender linien lyser det beregnede felt op og man kan fortsætte med næste
beregningslinie eller slutte her og starte rapporten.Man har således et
overblik over hvilke felter, man allerede har beregnet.
8.5. Ændring af
beregninger.
Når man vælger
beregningsfunktionen på en rapport, hvor man i forvejen har defineret
beregninger, vil man få de eksisterende linier frem på skærmen een for een og
oversat disse til klar tekst, hvorefter man kan godkende eller ændre hver
linie:
Figure 26 Ændring af en
beregning.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 4......DEFINER
KALKULATIONER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 LAGERVÆRDI 29
@FRI │
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI │
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│
│
│BEREGNINGER INDTASTES SOM FX: #60=#21+#22 , PROCENT SOM FX.
#61=#62%#63 │
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│LAGERVÆRDI=BEHOLDNING*KØBSPRIS
│
│BEREGNING ? #11=#8*#4
│
│
OK (J/N/I) ? │
└────────────────────────────────────────────────────────────────────────────────┘
Man bliver
således bedt om at taste OK (J/N/I) og kan i dette felt gøre et af følgende:
J=JA, linien
godkendes og næste vises.
N=NEJ, linien
slettes og næste vises.
I=INDSÆT, linien
fjernes fra skærmen (venter), og man kan indtaste en ny linie, der indsættes
før den ventende.
xx=Tastes et tal,
f.eks.5, godkendes de næste 5 linier.
Når man således
har gennemgået de bestående linier kan man tilføje nye beregningslinier som ved
oprettelse af beregninger første gang. Såfremt man trykker escape skal man være
opmærksom på, at alle ændringer annuleres og de gamle beregninger bevares.
8.7. Operander
og operatorer.
Da de indtastede
beregningslinier af rapportgeneratoren oversættes til BASIC linier, har
brugeren mulighed for at anvende alle basic‑funktioner og kan skrive
udtryk med komplicerede parantesniveauer og potensopløftninger etc.
Der findes
følgende operatorer i basic:
+ plus
‑ minus
* gange
/ divideret med
; potensopløftning
og disse vil
normalt blive udført i følgende orden:
; først alle
potensopløftninger
*/ herefter ganges eller divideres
+‑ hvorefter addition eller subtraktion udføres
Denne orden kan
ændres ved brug af paranteserne.
Som operander vil
man normalt anvende felter, der angives ved at taste et nummertegn foran
feltnummeret, f.eks.#7 betyder feltnr.7.
Eventuelt vil man
bruge felter fra andre kartoteker, disse angives ved desuden at taste
kartoteksforkortelsen foran nummertegnet, f.eks.KU#15 betyder felt 15 fra
kartotek KU.
Der er naturligvis
også mulighed for at lade konstanter indgå i et udtryk, f.eks 100.Dog skal man
passe på decimaltal, idet DECIMALKOMMA ALTID SKAL SKRIVES SOM PUNKTUM,
f.eks.10.47.
Som resultat af en
beregning vil man normalt anvende et af de 20 frifelter, som kartoteket er
udbygget med.
8.9.
Procentberegninger og division.
Division er
noget specielt, idet man i basic under ingen omstændigheder må dividere med
0.Man bør faktisk hver gang man udfører en division sikre sig dette ved at gøre
beregningen betinget (med IF), medmindre det er en konstant man dividerer med.
Da divisionen
typisk anvendes ved procentberegninger er der i rapportgeneratoren indlagt en
ekstra operator for at lette brugeren, nemlig % procenttegnet.
Skal felt 50
beregnes som felt 21 i procent af felt 22 kan dette skrives som f.eks.:
#50=#21%#22
altså en meget
enkel indtastning, som rapportgeneratoren automatisk, uden brugeren ser dette,
vil oversætte til to beregningslinier:
#50=0
IF #22<>0
LET #50=#21*100/#22
altså først en
nulstilling af det pågældende felt og herefter en division så fremt dette er
tilladt.
Skal man selv
udføre andre divisioner end i forbindelse med procentberegninger må man selv
omskrive sin beregning til sådanne 2 linier.Gør man ikke det risikerer man
under kørsel af rapporten at få basic fejl 16 i den pågældende linie.
Forøvrigt bør man
være opmærksom på at maskinen er langt hurtigere til at gange end til at
dividere, udtrykket
#50=#21/4
kan gøres
hurtigere ved at skrive dette som:
#50=#21*0.25
Det er ikke
tilladt at anvende % tegnet samtidig med afrundingsfunktionenr og lignende, her
må beregningen splittes op i to linier.
8.11. Dele af
felter.
Det kan en gang
imellem være nødvendigt at bearbejde enkelte karakterer eller cifre af et felt,
og rapportgeneratoren indeholde faciliteterne til brug for dette:
#7(3, 4) er den 3
og 4 karakter/ciffer af felt 7.
KU#15(5, 8) er
karakter/ciffer 5 til 8 af felt 15 i det externe kartotek KU.
Man kan således
lave en beregningslinie, hvor man f.eks.kun udfører en bestemt beregning
såfremt det 3 ciffer af felt 7 er 5:
IF #7(3, 3)=5
LET.....
Det er også muligt
at lade et enkelt ciffer indgå direkte i en beregning:
#50=#21*#7(3,
3)+#22
For alfanumeriske
tekstfelter, og kun for disse, kan man desuden indsætte een eller flere
karakterer midt i feltet:
#15(3,
4)="AB"
hvorved den 3 og 4
karakter i felt 15 altid bliver sat lig teksten AB.Dette er kun muligt for
alfanumeriske tekstfelter, da basic supporterer disse direkte, for numeriske
felter udfører rapportgeneratoren selv en udplukning af de relevante cifre ved
at gange og dividere med en potens af 10, hvorfor dele af numeriske felter kun
kan anvendes på højre side af lighedstegnet.
8.13.
Alfanumeriske tekstfelter.
Når man skriver
sine beregningslinier eller selektioner er der stor forskel på, om et felt er
et numerisk tal eller et alfanumerisk tekstfelt.Der gælder følgende specielle
regler for alfanumeriske tekstfelter:
1) Man kan ikke
regne på et alfanumerisk felt selv om dette kun indeholder cifre, dog kan man
sætte et numerisk frifelt lig med tekstfeltet uden andre beregninger og
herefter regne videre med frifeltet.
2) Tekstkonstanter
skal altid være angivet i gåseøjne, skal man f.eks.selektere på at det
alfanumeriske felt er lig med A skal minimum og maximum angives som
"A".I tidligere versioner af rapportgeneratoren blev disse gåseøjne
sat automatisk i forbindelse med selektion.
3) Man kan sætte
en tekst direkte ind i en del af et alfanumerisk felt, hvilket ikke kan lade
sig gøre med et numerisk felt, f.eks.
#15(7,
8)="XY"
4) Hvis man
anvender denne funktion og sætter f.eks.#15(7, 8)="X", dvs.lægger
færre karakterer over i et større felt, bliver resten af karaktererne efter
karakter 8 skubbet tilbage! Når man sætter noget ind i et alfanumerisk felt bør
man altid lade dette følge af en række blanke (gerne flere end nødvendigt), og
altså skrive linier som
#15(7, 8)="X "
Dette gælder
specielt ved tilbageskrivning tilbageskrivning;, hvor man ellers risikerer at
flytte samtlige efterfølgende tekster i kartoteket.
I stedet for at sætte en række blanke efter feltet kan
man anvende rapportgeneratorens specialvariabel S9$ og skrive liniern som
#15(7, 8)="X", S9$ idet S9$ altid indeholder blanke nok (nemlig 128).
5) Man kan
kombinere alfanumeriske felter ved at sætte komma mellem felterne som vist
ovenfor med S9$, hvilket ikke kan lade sig gøre med numeriske felter.Dette
betyder, at en linie som READ(KU), #1, #2 altså opslag i kartoteket KU med en
nøgle kombineret af felt 1 og felt 2 kun er tilladt såfremt både felt 1 og felt
2 er alfanumeriske.
Såfremt man
udskriver feltdefinitionerne med funktion 8 vil man kunne se, hvilke felter der
er alfanumeriske, idet disse er markeret med et antal A'er i feltformatet
hvorimod numeriske tal er markeret med # eller ‑.
8.15.
Specialfelter.
Som vi har set
kan man i forbindelse med beregninger angive felter som f.eks.:
#7 feltnummer 7
KU#15 feltnummer
15 fra kartotek KU kartoteksnummeret.;
Foruden disse
normale felter fra kartotekerne kan man anvende en række special felter:
8.16.1. #DD dags dato
Denne værdi
indtastes som første dato ved start af programmet.
8.16.3. #PD pr.dato
Denne værdi
indtastes som anden dato ved start.
8.16.5. #Dx data,f.eks.#D1 op til #D7
Ved at angive et
sådant datafelt definerer man, at op til 7 forskellige parametre skal indtastes
foruden de normale ved start af udskriften.
Data kan
f.eks.anvendes til at omregne et valuta‑beløb efter dagskurs, der
indtastes ved start, eller måske specielt i forbindelse med selektioner, idet
disse så kan varieres, hvergang rapporten startes.
Man kan få knyttet
et navn til et sådant opstarts‑datafelt ved at definere et frifelt med
navnet #D1navn, fx.ved at definere en beregning som:
#50=#D1
felt 50: navn:
#D1DAGSKURS
8.16.7. #DAx
data,f.eks.#DA1 op til #DA7.
Disse felter
svarer til #Dx, blot indeholder disse alfanumeriske tekster. Kan anvendes til
f.eks.at indtaste initialer ved start af udskriften.Dog kan man ialt maksimalt
angive op til 80 karakteres tekst incl.start/stop ved, så romaner kan ikke
skrives her.
8.16.9. #PP sidenummer.
Man har adgang
til sidenummeret i forbindelse med beregningerne.
8.16.11. #OK status efter læsning af et andet kartotek.
Efter udførelsen
af en beregningslinie, hvor et andet kartotek læses, f.eks. READ (KU) kan man
spørge om dette gik godt og herved styre andre beregninger eller eventuelt
selektion, f.eks.
IF #OK=0 LET #7=1
(alt gik godt) eller
IF #OK>0 READ
(LE) (sidste læsning ikke ok)
8.16.13. #SC skærmnummer.
Man kan gøre
beregningerne betinget af, hvilken skærm der har startet rapporten, f.eks.i
forbindelse med udskrift af journaler, hvor kun records registreret fra denne
skærm skal udskrives.
8.16.15. #LEVEL total
niveau nr.
Det er muligt at gøre beregningerne betinget
af hvilket total niveau man befinder sig på, dog kun såfremt man i funktion 3,
definer sortering og totaler, har valgt at totaler skal beregnes før udskrift,
da det ellers kun vil være de enkelte linier, hvor beregninger udføres.
For en normal
linie vil #LEVEL være 0, for første subtotal niveau 1, næste 2 etc frem til
grande total.Er der kun grande total på listen vil #LEVEL være 1 for denne.
Feltet anvendes
normalt kun i relativt komplicerede rapporter, f.eks.en saldoliste omregnet
efter valuta med beregning af totaler pga.en procentberegning, totallinierne
skal naturligvis ikke omregnes efter valuta.
8.16.17. #GRUPPE total
gruppe nummer.
I helt specielle
tilfælde kan man få brug for gruppenummeret i forbindelse med beregnede
totaler, f.eks.hvis hver gruppe skal tilknyttes en tekst:
IF #GRUPPE=1 LET #50="TEXT1"
IF #GRUPPE=2 LET
#50="TEXT2"
Normalt vil man i
en sådan beregning anvende det felt, som gruppen er styret af.En gruppe
opsplittet ifølge felt 7 vil, når gruppetotalen udskrives, have samme værdi af
#7 som #GRUPPE.Beregninger som READ (KU)7 kan således anvendes til at hente
teksten for gruppetotalen.
For 'udefinerede'
grupper vil #GRUPPE indeholde nummeret på gruppen internt i rapportgeneratorens
sorteringstabel, hvilket normalt ikke kan anvendes til noget fornuftigt. Brug
feltet istedet.
#LEVEL indeholder
en værdi beregnet på basis af subtotalniveau og gruppenr, i det øjeblik
gruppetotalen udskrives, altså ikke selve subtotalniveau nummeret.
8.16.19. Arbejdsfelter.
Som vi har set i
nogen af de foregående eksempler, har rapportgeneratoren en række
arbejdsfelter, som man kan anvende f.eks.ved kald af specielle rutiner. Det kan
være ved rimeligt komplicerede sammenstillinger af tekststrenge, f.eks.til at
plukke karakterer ud af felter eller sammenstille felter for beregning af
checkcifre eller til nøgler for opslag i andre kartoteker.
Der er i
rapportgeneratoren indbygget en del funktioner, der overtager de fleste
situationer, hvor arbejdsfelter ellers måtte anvendes, da brugeren må have
noget kendskab til basic for at kunne udnytte disse.For eksempel kan dele af
felter refereres som #7(3, 4), hvor man ellers skulle have anvendt f.eks.T2$=#7
using "######" og herefter #50=T2$(3, 4). versioner.;
Ligeledes kan nøgler sammenstilles ved at angive READ
(KU)1, 2(3, 6), P med dele af felter og pakning m.v.
I visse
situationer kan man have fordel af at anvende arbejdsfelter, f.eks.opbygge en
helt speciel nøgle i T2$ og herefter læse et kartotek med READ (KU), T2$.
Rapportgeneratoren har følgende arbejdsfelter, der frit
kan anvendes:
T2$....256
karakterers tekst
T9$....128
karakterers tekst
R$......32
karakterers tekst til brug for nøgler
S9$....128 blanke,
må ikke ændres
T3.......4 ords
numerisk arbejdsfelt
T3(1)....4 ords
numerisk arbejdsfelt
8.17.
4.9. REM
bemærkninger
Ved at indlægge
REM linier imellem beregningerne kan man forklare i klar tekst, hvad det
egentligt er der foretages, således at man umiddelbart kan forstå sin egen
tankegang igen, når man ser rapporten om måske to år.
Det anbefales
stærkt at indlægge sådanne kommentarlinier med en ganske kort for klaring
såfremt man vover sig ud i store komplicerede beregninger, f.eks.
REM beregning af
forfaldsdage.
Det må bemærkes,
at BASIC har en anden form for bemærkninger, nemlig /* der kan sættes efter en
beregningslinie.Denne funktion kan IKKE anvendes i rapportgeneratoren, idet
rapportgeneratoren selv anvender denne til at holde styr på den af brugeren
indtastede (source) beregningslinie i forhold til den genererede basic linie.;
8.19. Funktioner.
Der er i
rapportgeneratoren indbygget en række funktioner for afrunding, datoberegning
etc., der kan være særdeles nyttige ved definition af beregninger: Alle
datorutinerne tager naturligvis højde for skudår m.v.
8.20.1.
4.10.1. FNR afrunding
til 2 decimaler.
FNR
(123.456)=123.46
I princippet bør
man altid afrunde sit resultat når man enten ganger eller dividerer, idet
resultatet ellers vil blive med det maximale antal cifre, som maskinen kan
regne med, nemlig 14 cifre, hvilket kan give afrundingsdifferencer, såfremt man
regner videre på resultatet, typisk ved totalisering af feltet. F.eks.bør
beregninger
#50=#21‑#22/100
skrives som
#50=FNR(#21*#22/100)
Bemærk at % tegnet
ikke kan anvendes direkte, her må skrives 2 linier:
#50=#21%#22
#50=FNR(#50)
8.20.3.
4.10.2. FNH afrunding
til ingen decimaler.
Fungerer i
princippet som FNR, blot afrundes til heltal.
8.20.5.
page \* arabic474.10.3. FND
datovending.
FND(DDMMÅÅ)=ÅÅMMDD
Bruges til vending
af datoer, enten for at få et pænt udskriftsformat eller for at få datoen til
at passe til selektion, sortering eller en af de følgende datofunktioner.
Specielt ved
selektioner er man nødt til sørge for, at datoerne findes på formen ÅÅMMDD,
idet maskinen betragter datoen som et helt almindeligt tal, hvor f.eks:
860101 er større
end 851231 men
311286 er større
end 10186
man er således
nødt til at anvende FND(#7) istedet for #7 hvis felt 7 er et datofelt på formen
DDMMÅÅ.
8.20.7.
4.10.4. FNA omregn
dato DDMMÅÅ til antal dage fra år 1900.
Dette tal alene
vil ikke kunne bruges til noget, men tager man forskellen mellem 2 datoer,
f.eks.i #20 og #21:
#50=FNA(#20)‑FNA(#21)
får man antallet
af dage mellem disse datoer og dette kan f.eks.anvendes i
renteberegningsformler etc.
Man skal være
opmærksom på, at datoerne skal være på formen DDMMÅÅ, er dette ikke tilfældet
må de vendes fra ÅÅMMDD og samme beregning vil se ud som følger:
#50=FNA(FND(#20))‑FNA(FND(#21))
8.20.9.
date \@ "MMMM d, yyyy"januar 10, 20084.10.5. FNB omregn
antal dage fra år 1900 til dato DDMMÅÅ
Denne funktion
kan heller ikke bruges selvstændigt, derimod kan den være yderst nyttig i
forbindelse med FNA funktionen, idet man kan lægge et antal dage til en dato,
f.eks.
#50=FNB(FNA(#20)+10)
vil få felt 50 til
at indeholde datoen i felt 20 plus 10 dage.
8.20.11.
4.10.6. FNU omregn
dato DDMMÅÅ til ugedag.
Resultat af
denne funktion bliver 0 for lørdag, 1 for søndag og så videre frem til 6 for
fredag.
8.20.13.
4.10.7. FNV omregn
dato DDMMÅÅ til uge ÅÅUU.
Ved hjælp af
denne funktion kan man omregne en dato til et ugenr.:
FNV(010486)=8618
Denne funktion kan
udnyttes til f.eks. ugeopdeling af lister/totaler mv.
Ugenummeret
beregnes med skyldig hentagen til skudår og efter normal standard, således at
første torsdag i året bestemmer årets startuge.
8.20.15.
4.10.8. Intern lagring
af funktionerne.
Rapportgeneratorens funktionsdefinitioner findes i tekstfilen
DMS.RAPGEN.S6A, der inkluderes i det genererede program i det øjeblik brugeren
i beregningerne eller via selektionerne refererer til en FN funktion.Om ønsket
kan man indlægge ekstra specialfunktioner i denne textfil, blot må man være
opmærksom på, at en eventuel ny version af rapportgeneratoren naturligvis ikke
vil indeholde disse ekstra funktioner.
8.21.
4.11. Basic
funktioner
Der er indbygget
en række nyttige funktioner i basic, hvor de mest benyttede beskrives kort i
det følgende, i øvrigt henvises til BASIC manualen:
8.22.1. ABS Absolut‑værdien
af et tal.
ABS (#7) betyder
felt 7 positivt, uden fortegn.
8.22.3. SQR
kvadratroden.
SQR(#7) giver
kvadratroden af felt 7.
8.22.5. FRA decimal‑delen
af et felt.
FRA(123.45)
giver 0.45 , altså decimalerne af tallet.
8.22.7. INT
heltalsdelen af et felt.
INT (123.45)
giver 123, altså tallet uden decimaler.
8.22.9. SGN fortegnet
for et felt.
SGN(#7) giver ‑1,
0 eller 1 alt efter om feltet er negativt, nul eller positivt.
8.22.11. NOT Logisk
negation.
NOT(#7) giver 0,
såfremt felt 7 ikke er 0, og 1 hvis felt 7 er 0.
8.22.13. LEN Længden af
en streng.
LEN(T2$) giver
længden af teksten i T2$.
8.22.15. IF betingede
beregninger
Ved hjælp af
betingede beregningslinier kan man styre sine beregninger og f.eks. kun beregne
et felt, såfremt en kode har en bestemt værdi, eller evt.beregne feltet på en
anden måde for en anden kode.
Det er altid en
vældig god ide at nulstille resultatfelterne for sådanne betingede beregninger
først, bliver den betingede beregning ikke udført vil resultatet fra den
foregående record blive slæbt med over, hvilket kan resultere i f.eks.mærkelige
totaler.Se også afsnittet om procentberegning, hvor det er nødvendigt at
anvende IF for at undgå division med 0.
Et eksempel på
betingede beregninger kan være:
#50=0
IF #7=2 LET
#50=#21%#22
hvor man bemærker,
at det ellers overflødige basic ord LET er nødvendigt efter IF udtrykket.
Man kan kombinere
flere IF på samme linie:
IF #7>1 IF
#7<5 LET #50=#21%#22
hvor begge IF skal
være opfyldt for at beregningen udføres, dette er altså et OG udtryk, ikke et
ELLER udtryk.
Betingede
beregninger kan specielt anvendes i forbindelse med selektioner.Hvis man
f.eks.ønsker at udskrive alle, hvor felt 7 er 2 eller 5 kan dette ikke lade sig
gøre direkte, man er nødt til at selektere på et frifelt, f.eks.felt 50, og
beregne feltet som:
#50=0
IF #7=2 LET #50=1
IF #7=5 LET #50=1
Betingede
beregninger kan også anvendes i forbindelse med læsning af andre kartoteker,
f.eks.:
IF #7=2 READ(KU)
hvorved læsningen
af kartoteket KU kun vil foregå hvis felt 7 er 2.Denne funktion kan udnyttes
til henhv.at øge hastigheden i forbindelse med udskrift af rapporter med
integration til flere kartoteker, og specielt i forbindelse med READH kan dette
udnyttes til at udelukke records fra hovedfilen uden linier (se denne
kommando).
8.22.17. Relations‑operatorer.
Ved selektion og
ved IF beregninger kan man anvende følgende:
= lig med
> større end
< mindre end
>= støre end
eller lig med
<= mindre end
eller lig med
<>
forskellig fra
Der findes i basic
ingen logiske operatorer (og/eller).
Man kan spørge
direkte på værdien i et felt, f.eks.:
IF #7 LET #50=5
hvilket betyder
hvis felt 7 er forskellig fra 0.
Et sådant
spørgsmål kan vendes:
IF NOT #7 LET
#50=5
dvs.hvis felt 7 er
nul så...
8.22.19. NÅR, hvornår
skal der beregnes.
Kommandoen NÅR
kan anvendes, når der er flere muligheder for at få udført beregningerne, og
det er der i følgende tilfælde:
Hvis listen er
sorteret eller man har defineret et ekstra gennemløb for opsamling af vejede
totaler, udføres beregningerne både under sorteringen (første gennemløb) og
under selve udskriften (andet gennemløb).
Hvis man har
defineret beregnede totaler vil beregningerne både blive udført for de normale
linier, svarende til records i kartoteket, og for totallinierne.
Man indtaster i
beregningerlinierne kommandoen
Figure 27 NÅR, hvornår
skal der beregnes.
NÅR hvorefter man bliver spurgt om:
BEREGN I PASS:
0=BEGGE,1=KUN FØRSTE,2=KUN ANDET?
BEREGN TOTAL: 0=ALTID,1=IKKE TOTAL,2=KUN TOTAL?
og på denne måde
kan man altså styre, at de efterfølgende beregninger, indtil næste NÅR mødes,
kun udføres under visse omstændigheder, f.eks.at totalen for brug til en vejet
total kun opsamles i første gennemløb eller kursomregning ikke foretages for
totaler.
En anden
anvendelse af NÅR kommandoen kan være at udelade opslag i andre kartoteker
under en sortering, hvor disse opslag måske ikke er nødvendige, men kun
tidskrævende.
Rent teknisk sker
der det, at rapportgeneratoren gemmer det linienr., hvor NÅR kommandoen
udstedes, og i det øjeblik næste NÅR mødes eller idet brugeren afslutter
beregningerne, genereres da på dette huskede een eller to linier alt efter de
givne parametre:
IF X/IF NOT X GOTO
før første/andet gennemløb.
IF P8/IF NOT P8
GOTO for totaler/ikke totaler.
8.22.21.
4.11.11. FØRST/NORMAL/SIDST
og EFTER beregninger.
Ved at indtaste
ordet FØRST og godkende beregningslinien vil rapportgeneratoren hermed skifte
til at danne beregningslinier, der kan udføres ved start af rapporten før
første record læses fra kartoteket.
Med SIDST kan man
definere beregninger, der udføres umiddelbart før afslutning af rapporten,
efter grande total er udskrevet. genererer subrutine 5150;
Med NORMAL vender
man tilbage til de normale beregninger, der udføres umiddelbart efter læsning
af hver record i kartoteket, før selektioner og sortering foretages, samt
eventuelt for totaler. Disse beregninger kan desuden styres med NÅR kommandoen.
5200;
Med EFTER
kommandoen kan man definere beregninger, der udføres efter selektionerne, altså
kun for de records i kartoteket, der opfylder selektionskriterierne.
Disse 4 kommandoer
anvendes normalt kun i ret komplicerede rapporter, hvor FØRST specielt kan
udnyttes til dimensionering af egne variable m.v.
EFTER kan med
fordel anvendes til at øge kørselshastigheden for rapporter, der er selekteret,
og hvor der foretages opslag i andre kartoteker der kan udføres efter
selektionerne.
8.22.23. LOAD
kommandoen.
Foruden de nævnte
basic funktioner indeholder rapportgeneratoren en række specielle subrutiner,
der kan aktiveres ved at angive en beregningslinie som f.eks. LOAD CHECK og
derefter sætte en række parametre op efterfulgt af en linie med GOSUB linienr.
Ved en sådan kommando
vil tekstfilen DMS.RAPS.xxxxxx blive loaded ind i programmet, således at man
får tilgang til de specielle subrutiner.
De følgende afsnit
beskriver de rutiner, der pt.er implementeret i rapportgeneratoren.
8.22.24.1.
4.11.12.1. OCR checkciffer
for girokort.
Figure 28 OCR
checkciffer for girokort.
1. LOAD CHECK
2. T2$=#1 USING
"###############"
3. GOSUB 4200
4. #50=T2$
Disse linier vil
bevirke at:
1.
Rapportgeneratorens rutine for OCR checkciffer aktiveres.
2. Parameteren T2$
sættes op som værende 15 karakterer indeholdende det numeriske felt nr.1,
f.eks.et kundenummer.
3. Checkciffer
rutinen kaldes.
, 4. Resultatet i
T2$ flyttes over i et 16 karakteres frifelt felt 50, der herefter kan udskrives
på girokortet.
Rutinen tager
altså parameteren T2$ og erstatter alle blanke karakterer med 0 hvorefter der
påsættes en ekstra karakter som checkciffer beregnet iflg.modulus 10 formlen
med vægtene 2121 etc.
For Danmark skal
længden af T2$ være 15 før kaldet, dvs.der udskrives ialt 16 karakterer på
linien, for Norge kan andre længder komme på tale.
8.22.24.3.
4.11.12.2. Modulus 11 check
(f.eks.personnummer)
Figure 29 Modulus 11
check (f.eks.personnummer)
1. LOAD CHEX
2. T2$=#1
USING "#########"
3.
T9$="090507020506090701"
4. GOSUB
4200
5. #50=T2$
Disse linier vil
bevirke, at:
1.
Rapportgeneratorens rutine for modulus 11 check aktiveres.
2. Parametrene T2$
sættes op som værende 9 karakterer indeholdende det numeriske feltnr.1,
f.eks.et kundenr.
3. Parameteren T9$
sættes op med vægte for de enkelte cifre i T2$, idet hver 2 karakterer svarer
til vægten for een karakter heri, i dette tilfælde beregnes:
9*1.ciffer+5*2.ciffer+...+1*9.ciffer.
4. Checkciffer
rutinen kaldes.
5. Resultatet i
T2$ flyttes over i et 10 karakters frifelt felt 50, der herefter kan udskrives.
Rutinen tager
altså parameteren T2$ og erstatter alle blanke karakterer med 0, hvorefter der
påsættes en ekstra karakter som checkciffer beregnet iflg.modulus 11 formlen
med vægte iflg.parameteren T9$.
Det må bemærkes, at
man ikke kan anvende både modulus 10 og modulus 11 checkciffer rutinerne i
samme rapport, da disse rutiner anvender de samme linienr.i programmet.
Modulus 11
checkcifre anvendes som regel af banker og PBC.
8.22.24.5.
page \* arabic684.11.12.3. Beregning af
arbejdsdage
Figure 30 Beregning af
arbejdsdage
1.
LOAD ARB
2.
T3=#PD
3.
T3(1)=#20
4.
GOSUB 4220
5.
#50=T3
Disse linier
bevirker, at:
1.
Rapportgeneratorens rutine for beregning af arbejdsdage aktiveres.
2. Parameteren T3
sættes op som den ved start af rapporten indtastede pr.dato (på formen DDMMÅÅ).
3. Parameteren T3(1) sættes op som felt 20, der antages
at være et datofelt på formen DDMMÅÅ.
4.
Beregningsrutinen kaldes.
5. Resultatet i T3
flyttes over i det numeriske frifelt felt 50, der altså nu indeholder antallet
af arbejdsdage mellem den indtastede pr.dato og datoen i felt 20.
Rutinen beregner
først antallet af dage mellem de to datoer, hvorefter alle lørdage og søndage
fratrækkes.Herefter slås der op i en indbygget kalender, hvor samtlige
forskydelige og eventuelt halve helligdage, der ikke er lørdage eller søndage,
er angivet, og disse fratrækkes, såfremt de ligger i det givne interval.
Denne indbyggede
kalender kan om nødvendigt tilpasses til forskellige lande/firmaer (det er nok
specielt de halve arbejdsdage, der kan komme på tale her), ved at justere i
DATA linierne nederst i tekstfilen DMS.RAPS.ARB.Man bør dog være opmærksom på,
at en evt.ny version af rapportgeneratoren ikke vil indeholde disse
individuelle tilpasninger).
8.22.24.7.
4.11.12.4. Udplukning af for‑
og efternavne.
Såfremt et
kundekartotek er oprettet med normale navnefelter, dvs.fornavn efterfulgt af
efternavn, giver dette et problem såfremt man ønsker at udskrive en liste
sorteret iflg.navn fra dette kartotek, idet man naturligt ønsker at sortere
iflg.efternavn.
Dette kan løses
med rutinen NAVN på f.eks.følgende måde:
Figure 31 Udplukning af
for‑ og efternavne.
1.
LOAD NAVN
2.
T2$=#2
3.
GOSUB 4220
4.
#50=T2$
1.
Rapportgeneratorens navnerutine aktiveres.
2. Parameteren T2$
sættes lig med navnefeltet.
3. Navnerutinen
kaldes.
4. Frifeltet #50
sættes lig returværdien efternavn, fornavn og der kan nu defineres en sortering
på dette felt.
Rutinen
konverterer således et navnefelt i T2$ til efternavn, fornavn, der ligeledes
returneres i T2$.
Ved denne
konvertering ignoreres de mest anvendte forkortelser, nemlig HR, HR., FR, FR.,
FRU, FRK, A/S, APS således at disse ikke kommer til at indgå som en betydende
del af navnenøglen. Ligeledes ignoreres eventuelle foranstillede blanke
karakterer.
Såfremt
navnefeltet indeholder et komma antages det, at navnet allerede er indtastet
som efternavn, fornavn og rutinen returnerer direkte med dette.
Desuden returneres
følgende ekstra variable:
Figure 32 Udplukning af
for‑ og efternavne.
T2$(101)=fornavn efternavn
T2$(201)=fornavn
T2$(301)=efternavn
8.22.25.
date \@ "MMMM d, yyyy"januar 10, 20084.11.13. <
Beregningslinier med faste linienumre.
Denne funktion
er kun beregnet til meget specielle opgaver og kræver, at brugeren har overblik
over selve det genererede rapportprogram.
Rapportgeneratoren
vil normalt danne beregningerne som en subrutine i linierne 5200‑5299.Ved
hjælp af <xxxx kan man placere en beregningslinie på linie xxxx i programmet
og herved overskrive rapportgeneratorens standardrutiner.
En anden mulighed
er at placere start‑beregninger som f.eks.DIM af sine egne arbejds‑variable
i linienr.1000‑1099.
8.22.26.1. Fastlåsning af
index for en rapport
<1000 R1(0,
2)=2
Denne linie vil
bevirke, at rapporten udskrives fra index 2 uanset hvilket index der angives
ved START FRA i forbindelse med opstarten.
8.22.26.3. Fastlåsning af
laveste total niveau
<1001
X0(15)=1
Herved vil laveste
totalniveau altid blive sat til 1, dvs.der udskrives aldrig specifikation på
rapporten uden hensyn til hvad brugeren vælger ved opstarten.
8.22.26.5. Fastlåsning af
start/stop.
Figure 33 Fastlåsning
af start/stop.
<1002 R1$="4711"
<1003 R2$="4712"
<1004 R3$=R1$
Disse tre linier
vil bevirke, at rapporten altid vil køre i intervallet fra nummer 4711 til
4712.
8.22.27. Skrivning i
kartoteker.
Normalt vil det
ikke være muligt for brugeren at skrive i nogen kartoteker med
rapportgeneratoren, da dette ville være alt for risikabelt, sandsynligheden for
at ødelægge installationen på et eller andet tidspunkt ville være alt for stor.
En undtagelse er
dog de kartoteker, brugeren selv har defineret i DMS's
kartoteksvedligeholdelsesprogrammet DATAMASTER.Her tillades tilbageskrivning,
dog beskyttet af et password, udfra den filosofi at de data, man selv har
defineret, har man så meget overblik over at tilbageskrivning kan forsvares.
Dog gælder det
generelt, at hvis programmøren ved installation af rapportgeneratoren sammen
med READ statements for et kartotek lægger WRITE statements, vil disse blive
udført.Man bør naturligvis være forsigtig med dette og som regel vil det ikke
være alle felter, der indlægges i disse WRITE statements.Et eksempel kunne være
et kundekartotek, hvor saldoen under ingen omstændigheder bør være tilgængeligt
for opdatering, til gengæld kan man have stor fornøjelse af at skrive en række
frifelter tilbage i kartoteket, da man så f.eks.kan tælle en rykkerkode op i
forbindelse med udskrift af et rykkerbrev i rapportgeneratoren.
Tilbageskrivningen
foregår for brugeren ganske enkelt ved at man beregner felter i kartoteket
istedet for at beregne frifelterne, f.eks.#7=#7+1 bevirker at felt 7
(f.eks.rykkerkoden) tælles een op, hver gang rapporten køres, dog kun for de
records, der udskrives, ikke for de records, der er selekteret fra.
Der er ingen
mulighed for ændring af indexfelter med denne form for tilbageskrivning, regner
man på et indexfelt vil indholdet af nøglen og data i recorden blive
inkonsistent.DATAMASTER vil herefter afvise ethvert forsøg på ændring/ sletning
af sådanne nøglefelter, dog vil kartoteket kunne rettes op igen ved at vælge
DATAMASTER funktionen for udvidelse af et kartotek, hvorved de nye nøgler
opbygges udfra felterne i datarecorden.
Der er pt.ikke
mulighed for at opbygge andre kartoteker i rapportgeneratoren, og ved kørsel
med integration til flere kartoteker er der kun mulighed for at skrive tilbage
i hovdkartoteket, dvs.det som rapporten er defineret på.
Tilbageskrivning i
et kartotek opbygget med DATAMASTER skal aktiveres allerede ved definition af
rapporten når kartoteksforkortelsen indtastes, man taster komma W efter denne,
f.eks.KU, W.Herved hentes en anden tekstfil for read statements, istedet for
den normale DMREAD.KU aktiveres DMREAD.KUW.Samtidig bliver rapporten password
beskyttet, således at man ved opstart skal indtaste dette password.
9.
next5.
Sortering og totaler.
Sortering og
totaler defineres med samme funktion, da subtotalniveauer på en rapport hænger
nøje sammen med den orden, rapporten udskrives i. Et subtotalniveau fremkommer,
når en eller flere karakterer af kartotekets nøgle eller sorteringsnøglen
skifter værdi.
10.1. Sortering.
Når funktion 3
vælges bliver man spurgt om listen skal sorteres, svarer man J hertil
fortsættes med definition af sorteringsnøglen, svares N spørges om der ønskes
vejede totaler, se senere.
Figure 34 Opbygning af
sorteringsnøgle.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 3......DEFINER SORTERING OG
TOTALER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 LAGERVÆRDI 29
@FRI
│
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI
│
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│NB:FØR UDSKRIFTEN STARTES GÅR ET STYKKE TID MED GENNEMLÆSNING AF
KARTOTEKET. │
│
│
│GRUPPENR
│
│##
FRA KARAKTER:1 │
│SORTERING: FELTNR. ? 7 TIL KARAKTER:2 │
│TOTAL NIVEAU (J/N) ? J TOTAL NAVN ? GRUPPE
SIDESKIFT (J/N) N
│
└────────────────────────────────────────────────────────────────────────────────┘
Man definerer nu
sorteringsnøglen ved at indtaste
FELTNR: FRA
KARAKTER: TIL KARAKTER:
og kan altså
udvælge de felter og dele af felter, som man ønsker listen sorteret efter.
Denne procedure gentages indtil man taster SLUT (eller cr.‑) i feltnr.,
hvorved man kan kombinere flere felter eller delfelter til en sorteringsnøgle.
Opbygningen af sorteringsnøglen vises nederst på skærmen.
Tastes blot cr. i
fra/til karakter tages hele feltet.
10.2.1.
Subtotalniveauer
For hvert felt
spørges desuden om:
TOTAL (J/N) og
hvis man svarer J:
TOTAL NAVN:
SIDESKIFT (J/N)
Svarer man J til
total vil man få en subtotal udskrevet på listen hvergang den indtil nu
definerede del af sorteringsnøglen skifter. Total navnet, f.eks.
varegruppetotal, vil blive udskrevet på denne linie, og såfremt man svarer J
til sideskift vil der blive skiftet til ny side efter denne udskrift af
totalen.
Figure 35 Liste med
subtotaler, sorteret efter varegruppe.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LAGERVÆRDILISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│NR. NAVN GRUPPENR KØBSPRIS BEHOLDNING LAGERVÆRDI LEV.NR. │O
│0101 CHOKOLADESTÆNGER 0 1,50 100
150,00 271 │
O│1001 PENGE,STORE SEDLER 0
500,00 100 50000,00 205 │O
│
│
O│IALT
GRUPPE 0
50150,00 │O
│
│
O│1005 STANSEMASKINE 1 1500,00 10
15000,00 100 │O
│
│
O│IALT
GRUPPE 1 15000,00 │O
│
│
O│0110 AUTOBUSSER 2 60000,00 1
60000,00 123 │O
│
│
O│IALT
GRUPPE 2
60000,00 │O
│
│
O│0102 STOR FRÆSEMASKINE 9
10000,00 0 0,00 100 │O
│2001 KREDITKORT 9 10,00 10
100,00 205 │
O│2002 ID‑KORT 9 10,00 200
2000,00 205 │O
│
│
O│IALT
GRUPPE 9
2100,00 │O
│
│
O│GRANDE
TOTAL
127250,00 │O
│
│
O│
│O
└──────────────────────────────────────────────────────────────────────────────┘
10.2.3. Princippet
ved sortering.
Sorteringen
foregår ved at rapportgeneratoren, før selve udskriften påbegyndes, gennemlæser
kartoteket i et såkaldt første gennemløb og opbygger et sorteringskartotek
(DMSORTWORK). Under denne procedure foretages både beregningerne og
selektionerne på rapporten.
Det er altså
muligt at sortere på såvel beregnede felter som på felter fra andre kartoteker,
f.eks. kan en vareliste sorteres op iflg. leverandørnavn.
Det er kun de
records fra kartoteket, der opfylder selektionskriterierne, der indsættes i
sorteringskartoteket, hvorved der spares plads og tid.
Ved start af en
sorteret rapport bliver brugeren advaret om, at det vil tage et stykke tid at
udføre denne sortering og man skal således ikke blive nervøs fordi selve
udskriften ikke starter med det samme. Selvom der kun skal sorteres 2 records
skal det gamle sorteringskartotek slettes først, og hvis sidste sortering har
været på l0000 records kan dette tage et par minutter.
Det er muligt at
anvende samme sortering af et kartotek ved at taste SORT når man starter næste
sorterede rapport, se afsnittet under start af en rapport.
Ved hjælp af NÅR
kommandoen kan man styre, om beregningerne på rapporten skal udføres under
sorteringen og/eller under udskriften, se også afsnittet om vejede totaler.
Specielt kan man udelade læsning af andre kartoteker under sorteringen, såfremt
dette ikke er nødvendigt, idet hastigheden så vil øges. En sorteret rapport
låser sorteringskartoteket under udskriften, det er således ikke muligt at køre
2 sorterede rapporter samtidig fra 2 skærme, med mindre man har fået
installeret ekstra systemer med selvstændig sorteringskartotek for dette.
Ligeledes er det
ikke muligt at definere sortering, samtidig med en sorteret rapport udskrives,
idet den maksimale længde af sorteringsnøglen hentes fra dette kartotek,
hvilket ikke er muligt når dette er låst.
10.2.5.
Sorteringskartoteket DMSORTWORK.
Rapportgeneratoren udfører sorteringen ved at opbygge et indexed
kartotek DMSORTWORK, der indeholder sorteringsnøglerne med recordnummer pegende
på rapportens hovedkartotek.
Dette kartotek er
oprettet af programmøren ved installation af rapportgeneratoren med det
maksimale antal records, man ønsker sorteret på een gang, dvs. normalt ligeså
stort som det største kartoteket i systemet. Ved væsentlige kartoteksudvidelser
bør man således sørge for at få dette kartotek udvidet samtidig.
Sorteringskartoteket
fylder ca. l00 sektorer pr. l000 records, da dette kun oprettes som et rent
indexkartotek uden data record overhovedet.
På systemer med
sparsom diskplads er det muligt helt at udelade sorteringskartoteket, hvorved
det så selvfølgelig ikke vil være muligt at definere sorterede rapporter,
hvorimod alle andre funktioner i rapportgeneratoren kan udnyttes.
Såfremt man har
kartoteker, hvor programmøren har sparet diskplads ved ikke at lade index‑nøglen
indgå i selve kartotekets datarecord, vil sorteringskartoteket dog blive noget
større, nemlig 150 sectorer pr. 1000 records, idet dette må oprettes med en
data‑record med plads til lagring af denne nøgle, da denne information
ellers mistes under sorteringen.
Længden af
sorteringskartotekets nøgle kan maksimalt være 30 karakterer, og heraf bruger
rapportgeneratoren selv de 3 løbenr.pakket;, hvilket altså giver mulighed for
at definere en sorteringsnøgle på maksimalt 27 karakterer. Overskrides dette
antal vil rapportgeneratoren give meddelelse om at sorteringsnøglen er
forkortet.
For at spare plads
på systemet kan sorteringsnøglen være defineret kortere, 20 karakterer er
normalt rigeligt til langt de fleste sorteringer.
Denne
sorteringsmetode med opbygning af et selvstændigt kartotek er valgt fremfor
udnyttelse af operativsystemets sorteringsrutine, der muligvis kunne være lidt
hurtigere, af mange forskellige grunde, for det første ville det begrænse
rapportgeneratorens muligheder væsentligt at udnytte denne funktion idet
sortering på beregnede felter og felter fra andre kartoteker ikke ville være
mulig, for det andet kan rapportgeneratoren anvendes på alle operativsystemer
uanset om denne facilitet findes eller ej, for det tredje har netop
operativsystemets sorteringsrutine desværre været ret fejlbehæftet igennem
tiderne.
10.2.7. Sortering i
faldende orden.
Normalt vil
sorteringen altid foregå i stigende orden, således at f.eks. kunder med laveste
saldo vil komme først. Ønsker man en liste sorteret i faldende orden, altså med
højeste saldo først, må dette gøres med en lille finte, idet man sorterer på et
frifelt, der beregnes som et stort tal minus saldoen, f.eks. #50=l000000000‑#24
(dette kaldes invertering).
Husk at definere
frifeltet med plads til tilstrækkeligt antal cifre, idet rapportgeneratorens
automatiske funktion for udvidelse af et felt, der er for lille, (overflow),
ikke træder i kraft under selve sorteringsproceduren.
10.2.9. Sekundær
sorteringsorden.
Såfremt man
sorterer en leverandørliste efter f.eks. valutakode og ikke andet vil leverandørerne
med samme valutakode komme i den orden, som de blev læst oprindeligt fra
kartoteket.
Køres listen
således normalt vil dette være leverandørnr.orden, køres listen med angivelse
af et navneindex ved start fra vil leverandørerne blive udskrevet i navneorden
indenfor hver valuta.
10.2.11. NY
Sorteringsnøgle.
En helt speciel
form for sortering kan foretages på kartoteker, hvor man har flere felter i en
record med samme betydning og ønsker denne record udskrevet flere steder på
listen, både sorteret efter det ene og det andet felt.
Dette kan f.eks.
være et obligationskartotek, der ønskes sorteret efter terminsdatoer, eller et
varekartotek, hvor varen skal udskrives på listen både under hovedleverandøren
og under en sekundær leverandør.
Man definerer
først sortering på det ene felt på helt normal måde, og herunder defineres også
eventuelle subtotalniveauer.
Herefter tastes i
stedet for SLUT: NY i feltnr., hvorpå rapportgeneratoren svarer med NY SORTKEY
og man kan definere sorteringen efter det andet felt, her skal ikke defineres
subtotalniveauer.
Figure 36 Varer
sorteret efter primær og sekundær leverandør.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VARER PR.LEVERANDØR * PR.14.01.87 SIDE
1│O
│
│
O│VARENR
VARENAVN LEV.NR. ALTERNATIV
LEV KØBSPRIS SIDSTE KØBSDATO │O
│0102 STOR FRÆSEMASKINE 100 0 10000,00 1.01.85 │
O│1005 STANSEMASKINE 100 0 1500,00 1.08.86 │O
│0102 STOR FRÆSEMASKINE 100 0 10000,00 1.01.85 │
O│0110 AUTOBUSSER 123 100 60000,00
15.12.86 │O
│1005 STANSEMASKINE 100 0 1500,00 1.06.86 │
O│1001 PENGE,STORE SEDLER 205
102 500,00 31.12.86 │O
│2001 KREDITKORT 205 102 10,00 1.01.87 │
O│2002 ID‑KORT 205 102 10,00 30.07.86 │O
│0110 AUTOBUSSER 123 100 60000,00 15.12.86 │
O│1001 PENGE,STORE SEDLER 205 102 500,00 31.12.86 │O
│2001 KREDITKORT 205 102 10,00 1.01.87 │
O│2002 ID‑KORT 205 102 10,00 30.07.86 │O
│0101 CHOKOLADESTÆNGER 271 270 1,50 1.01.87 │
O│0101 CHOKOLADESTÆNGER 271 270 1,50 1.01.87 │O
└──────────────────────────────────────────────────────────────────────────────┘
Det bemærkes, at
NUL‑værdier af det alternative sorterings‑kriterie ikke optræder på
listen.
10.3.
Subtotalniveauer uden sortering.
Selv om man
svarer nej til sortering vil det stadig være muligt at definere subtotaler på
en rapport, idet der stilles spørgsmål der minder om opbygningen af en sorteringsnøgle:
Figure 37 Definition af
subtotalniveau.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 3......DEFINER SORTERING OG
TOTALER │
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 LAGERVÆRDI 29
@FRI
│
│ 12 @FRI 30
@FRI
│
│ 13 @FRI
│
│ 14 @FRI
│
│ 15 @FRI
│
│ 16 @FRI
│
│ 17 @FRI │
│ 18 @FRI
│
│ │
│
│
│VARENR
│
│AAAA
FRA KARAKTER:1 │
│TOTALNIVEAU: FELTNR. ? 1 TIL KARAKTER:2 │
│TOTAL NIVEAU (J/N) ? J TOTAL NAVN ? VAREGR
SIDESKIFT (J/N) N
│
└────────────────────────────────────────────────────────────────────────────────┘
Hvor man ved
sortering kunne definere et subtotalniveau hver gang en bestemt del af
sorteringsnøglen skiftede, er det her muligt at definere et niveau hver gang en
bestemt del af kartotekets normale nøgle skifter, f.eks. kan de 2 første cifre
i varenummeret være anvendt til en varegruppe.
Man er naturligvis
nødt til at kende noget til kartotekets nøgleopbygning ved en sådan definition,
og vælger man at køre listen på et andet index ved opstarten vil subtotalerne
sandsynligvis ikke være relevante.
Figure 38 Udskrift med
subtotaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LAGERVÆRDILISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│VARENR
NAVN GRUPPENR KØBSPRIS BEHOLDNING LAGERVÆRDI LEV.NR. │O
│0101 CHOKOLADESTÆNGER 0 1,50 100
150,00 271 │
O│0102 STOR FRÆSEMASKINE 9
10000,00 0 0,00 100 │O
│0110 AUTOBUSSER 2 60000,00 1
60000,00 123 │
O│
│O
│VAREGR 01
60150,00 │
O│
│O
│1001 PENGE,STORE SEDLER 0
500,00 100 50000,00 205 │
O│1005 STANSEMASKINE 1 1500,00 10
15000,00 100 │O
│ │
O│VAREGR
02
65000,00 │O
│
│
O│2001 KREDITKORT 9 10,00 10
100,00 205 │O
│2002 ID‑KORT 9 10,00 200
2000,00 205 │
O│
│O
│VAREGR 20
2100,00 │
O│
│O
│
│
O│GRANDE
TOTAL
127250,00 │O
└──────────────────────────────────────────────────────────────────────────────┘
Figure 39 Udskrift kun
med subtotaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LAGERVÆRDILISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│VARENR
NAVN GRUPPENR KØBSPRIS BEHOLDNING LAGERVÆRDI LEV.NR. │O
│
│
O│VAREGR
01
60150,00 │O
│VAREGR 02
65000,00 │
O│VAREGR
20
2100,00 │O
│ │
O│GRANDE
TOTAL
127250,00 │O
└──────────────────────────────────────────────────────────────────────────────┘
Faktisk er det
helt ligegyldigt, hvilke felter man vælger ved definition af sådanne
subtotalniveauer, det væsentlige er det antal karakterer, der defineres, idet
disse refererer til kartotekets nøgle.
Ved kartoteker med
pakkede nøgler er det antal karakterer i den udpakkede nøgle man skal regne
med. 4800/4900;
10.5. Vejede
totaler.
10.6.1. Princip.
En vejet total
er et tal, der er sat i forhold til totalen for hele listen, f.eks. en
kundeliste, hvor hver enkelt kundes saldo sættes i forhold til summen af alle
kundens saldi.
10.6.3. Første
gennemløb.
For at danne en
sådan vejet total er rapportgeneratoren nødt til at gennemlæse kartoteket før
udskriften starter, således at totalen for alle kunder dannes i dette første
gennemløb, hvorefter total‑tallet er til rådighed i andet gennemløb, hvor
selve udskriften foretages.
Et sådant første
gennemløb defineres ved enten at definere sortering på rapporten, hvorved
kartoteket gennemlæses og sorteringsnøglerne opbygges, før udskriften starter,
eller ved at svare J til spørgsmålet om vejede totaler.
10.6.5. Opsamling
Selve totalen
opsamles ved hjælp af beregningerne, idet man definerer et frifelt, hvor man
summerer det valgte felt i første gennemløb. Med NÅR kommandoen kan man angive,
om beregningslinierne skal udføres i første, andet eller begge gennemløb:
NÅR:kun første
gennemløb:
#50=#50+#24
10.6.7. Beregning
Frifeltet #50
kommer således til at indeholde summen af saldofeltet #24, og dette felt
anvendes herefter til en beregning i andet gennemløb, altså under udskriften;f.eks.
:
NÅR:kun andet
gennemløb:
#51=#24%#50
Således at man
beregner et nyt frifelt #51 som saldofeltet #24 i procent af den opsamlede
total #50. Felt 51 kan herefter udskrives på linien som den vejede total eller
evt. anvendes til selektion, således at f.eks. kun kunder, der udgør mere end
2% af den samlede saldo udskrives.
Figure 40 Udskrift med
vejede totaler og subtotaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VEJET LAGERVÆRDILISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│VARENR
NAVN KØBSPRIS BEHOLDNING
LAGERVÆRDI VEJET │O
│0101 CHOKOLADESTÆNGER 1,50 100
150,00 0,12 │
O│0102 STOR FRÆSEMASKINE 10000,00 0 0,00 0,00 │O
│0110 AUTOBUSSER 60000,00 1
60000,00 47,15 │
O│
│O
│VAREGR 01
60150,00 47,27 │
O│ │O
│1001 PENGE,STORE SEDLER 500,00 100
50000,00 39,29 │
O│1005 STANSEMASKINE 1500,00 10
15000,00 11,79 │O
│
│
O│VAREGR
02
65000,00 51,08 │O
│
│
O│2001 KREDITKORT 10,00 10
100,00 0,08 │O
│2002 ID‑KORT 10,00 200
2000,00 1,57 │
O│
│O
│VAREGR 20 2100,00 1,65 │
O│
│O
│
│
O│GRANDE
TOTAL
127250,00 100,00 │O
└──────────────────────────────────────────────────────────────────────────────┘
Figure 41
Rapportdefinitionen for vejede totaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DMS.RAPGEN RAPPORT NR.12 VEJET LAGERVÆRDI JAN 14, 1987 11:34:03│O
│ │
O│PRINTER:$LPT STARTPOSITION:001 ANTAL LINIER PR.SIDE:51 │O
│ │
O│KARTOTEK:
1 VA VAREKARTOTEK 8/CH.VAKA# │O
│
│
O│
│O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│1:DATO:#DD * VEJET LAGERVÆRDI * PR.#PD SIDE:#PP│O
│2:
│
O│3:VARENR
NAVN KØBSPRIS BEHOLDNING
LAGERVÆRDI VEJET│O
│4:
│
O│5:#1 #2 #4
#8 #11 #12 │O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│
│O
│SELEKTIONER:
│
O│
│O
│BEREGNINGER:
│
O│ #11=#8*#4
LAGERVÆRDI=BEHOLDNING*KØBSPRIS │O
│ #12=#11%#13 VEJET=LAGERVÆRDI%TOTAL VÆRDI │
O│ #12=FNR(#12) VEJET=FNR(VEJET) │O
│ NÅR 10 KUN FØRSTE PASS ALTID │
O│ #13=#13+#11 TOTAL VÆRDI=TOTAL
VÆRDI+LAGERVÆRDI │O
│
│
O│LISTEN
KRÆVER GENNEMLÆSNING AF KARTOTEKET FOR VEJEDE TOTALER. │O
│TOTALNIVEAUER
│
O│
│O
│ SKAL LISTEN
SORTERES (J/N) ? N │
O│
│O
│ VEJEDE TOTALER
(KRÆVER EXTRA GENNEMLØB) (J/N) ? J │
O│ │O
│ TOTAL‑NIVEAU:
FELTNR. ? 1(1,2) VARENR TOTAL NIVEAU (J/N) ? J │
O│ TOTAL NAVN ? VAREGR
SIDESKIFT (J/N) ?│O
│
│
O│
SKAL TOTALER BEREGNES FØR UDSKRIFT (J/N) ? N │O
│
│
O│
FELTER DER SKAL TOTALISERES:
│O
│ #11
LAGERVÆRDI │
O│ #12
VEJET
│O
│ │
└──────────────────────────────────────────────────────────────────────────────┘
10.6.9. Vejede
totaler og selektion.
Man skal være
opmærksom på, at selv om man definerer selektion på en rapport vil
beregningerne altid blive udført uden hensyn til, om en record opfylder
selektionskriteriet eller ej, det er kun selve udskriften, der vil blive
undertryke, såfremt recorden er selekteret fra.
For vejede totaler
betyder dette, at selv om man kun vælger at udskrive f.eks. kundegruppe 2, vil
den vejede total blive beregnet af summen af samtlige kunders saldi medmindre
andet er angivet.
Ønsker man den
vejede total baseret på kun kunderne i gruppe 2 må dette gøres ved hjælp af IF
betingelserne i beregningen, f.eks.:
NÅR:Kun første gennemløb.
IF #7=2 LET
#50=#50+#24
således at felt
#50 kun opsamles for kunder, hvor kundegruppen i felt #7 er lig 2.
En anden måde er
at anvende EFTER kommandoen i forbindelse med beregningerne, se afsnittet om
denne kommando.
10.6.11. Vejede
totaler og quick selektioner.
Quick
selektioner (se dette afsnit) er dog specielle, idet disse udføres før alt
andet på rapporten, det er netop dette, der gør den hurtigere. Defineres en
quick selektion på en rapport med vejede totaler vil opsamlingen af totalen
således ikke omfatte de records, der er selekteret fra med quick selektionen!
10.7. Gennemløbet
af en rapports beregninger.
Før vi går
videre, må vi lige kaste et blik på selve den interne struktur i
rapportgeneratorens subrutiner, således at de efterfølgende afsnit kan ses i
sammenhæng med denne oversigt.
Figure 42 Behandling af
en rapport.
┌───────────────┐
│ START
│
└───────┬───────┘
│
┌───────┴───────┐
│
FØRST beregn │
└───────┬───────┘
┌────────────────────────────Ψ┤
│ ┌───────┴───────┐
│ │
Find næste rec│
│ └───────┬───────┘
│ ├Χ────────────────────────────────────────────┐
│ ┌───────┴───────┐Ja │
│ │ Total ?
├──────────────────┐ │
│ └───────┬───────┘ │ │
│ │Nej │ │
│ Ja┌───────┴───────┐ ┌─────────┴─────────┐ │
│ ┌──────────┤ Slut ?
│ │ Beregnede totaler │ │
│ │ └───────┬───────┘ └┬─────────────────┬┘ │
│ │ │Nej │Nej │Ja │
│Ja┌───────┴───────┐ ┌───────┴───────┐ │ ┌───────┴───────┐
│
├Χ─┤
Flere pass ? │ │
Læs record │ │ │ Felter=totaler│
│
│ └───────┬───────┘ └───────┬───────┘ │ └───────┬───────┘
│
│ │Nej │ │ │ │
│ ┌───────┴───────┐ ┌───────┴───────┐ │ ┌───────┴───────┐
│
│ │ SIDST beregn │ │
NORMAL beregn │ │ │ NORMAL beregn │
│
│ └───────┬───────┘ └───────┬───────┘ │ └───────┬───────┘
│
│ │ │ │ │ │
│ ┌───────┴───────┐ ┌───────┴───────┐
┌───────┴───────┐
┌───────┴───────┐
│
│ │ SLUT
│ │
Selektioner │ │
Print totaler │
│
Print totaler │
│
│ └───────────────┘ └───────┬───────┘
└───────┬───────┘
└───────┬───────┘
│
│ │ │ │ │
│ Nej┌───────┴───────┐ │ ┌───────┴───────┐
│
├Χ────────────────────┤ OK ?
│ │ │ Restore felter│
│
│ └───────┬───────┘ │ └───────┬───────┘
│
│ │Ja │ │ │
│ ┌───────┴───────┐ ┌┴─────────────────┴┐ │
│ │
EFTER beregn │ │ Adder next/nulstil│ │
│ └───────┬───────┘ └─────────┬─────────┘ │
│ │ │ │
│ Sortering┌───────┴───────┐Nej │ │
│ ┌─────────┤
Første pass ? ├────────┐ └──────────────────┘
│ │ └───────┬───────┘ │
│ │ │Vejet │
│ ┌───────┴───────┐ │total ┌───────┴───────┐
│ │ Indsæt Sortkey│ │ │ Udskriv linie │
│ └───────┬───────┘ │ └───────┬───────┘
│ │ │ │
│ │ │ │
└───────────┴─────────────────┴────────────────┘
10.9. Beregnede
totaler.
Normalt vil man
blot svare Nej til spørgsmålet om
SKAL TOTALER
BEREGNES FØR UDSKRIFT (J/N)?
idet beregninger
på totaler som regel kun er nødvendige ved procenttotaler eller lignende.
10.10.1. Princip.
Normalt vil
beregningerne på en rapport blive udført for hver record, der læses fra
kartoteket, altså pr.linie på rapporten, og totalerne vil blive dannet som
summen af de felter, man har bedt om at få totaliseret. Dette vil være passende
på langt de fleste rapporter.
Indeholder
beregningerne procentberegninger, f.eks. dækningsgraden for hver vare, vil
totalen derfor blive summen af de enkelte liniers procenter, hvilket ikke er
fornuftigt. Ved at angive at totalerne skal beregnes før udskrift kan man få
rapportgeneratoren til at udføre procentberegningen også for totalen.
Det er dog ikke
alle totalfelter, der er fornuftige at beregne, udskrives f.eks. linier med et
felt beregnet som kurs * beløb vil man ikke ønske at gennemføre beregninger for
totalen af dette felt, idet total kurs gange total beløb vil være nonsens. Ved
anvendelse af beregnede totaler vil man normalt også anvende NÅR kommandoen i
forbindelse med beregningerne, idet man ved hjælp af denne kan angive, hvilke
beregninger, der skal udføres pr.linie og hvilke, der skal udføres for
totalerne. For mere specielle rapporter kan specialfelterne #LEVEL og #GRUPPE
endda anvendes til at styre forskellige beregninger for forskellige
totalniveauer eller totalgrupper.
10.10.3. Grundregel
ved beregnede totaler.
Ved beregnede
totaler skal alle felter, der indgår i beregningerne, totaliseres!
Beregnes f.eks.#51=#24%#50
skal alle de indgåede felter, altså felterne 24, 50 og 51, defineres som
totaler, også selv om ikke alle felterne udskrives på rapporten. Herved vil
rapportgeneratoren sørge for, at totalværdien af felterne er til stede ved
beregningen af totalen. Defineres man ikke total på et felt vil dette felt være
0 på det tidspunkt, totalberegningerne udføres, og man vil ikke opnå det
ønskede resultat.
10.10.5. Anvendelse af
NÅR kommandoen.
Ved hjælp af NÅR
kommandoen under beregningerne, se denne, kan man styre, hvilke
beregningslinier, der skal udføres hvornår:
0=Både for totaler
og linier.
1=Kun for totaler,
ikke for linier.
2=Kun for linier,
ikke for totaler.
og således styre
at f.eks. kursomregning kun skal foretages for linierne, hvorimod
procentberegninger både skal foretages for linier og totaler.
Vi vil i det
følgende opbygge en rapport, hvor lagerværdien beregnes som beholdning *
købspris, hvilket er et typisk eksempel på en ikke‑beregnet total, idet
(total beholdning) * (total købspris) er noget vås.
Samtidig
indeholder listen en dækningsgrad % DG, som til gængæld skal beregnes for at
totalerne kan blive rigtige for feltet.
10.10.7. Eksempel på
beregnede totaler.
Figure 43 Listen uden
beregnede totaler, dækningsgrad er forkert.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101
CHOKOLADESTÆNGER 0 2,00
1,50 0,50 33,33
100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│GRANDE TOTAL
583,33 127250,00│
└──────────────────────────────────────────────────────────────────────────────┘
Figure 44 Listen med
beregnede totaler, lagerværdi er forkert.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│ │
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101
CHOKOLADESTÆNGER 0 2,00
1,50 0,50 33,33
100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│GRANDE TOTAL 123047,00 72021,50 51025,50
70,85 421 30321051,50│
└──────────────────────────────────────────────────────────────────────────────┘
Figure 45 Listen med
beregnede totaler og NÅR beregninger.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101
CHOKOLADESTÆNGER 0 2,00
1,50 0,50 33,33
100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│GRANDE TOTAL
70,85 127250,00│
└──────────────────────────────────────────────────────────────────────────────┘
Figure 46 Rapportdefinitionen
for beregnede totaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DMS.RAPGEN RAPPORT NR.3 DÆKNINGSGRADER JAN 14, 1987 11:37:05│O
│
│
O│PRINTER:$LPT STARTPOSITION:001 ANTAL LINIER PR.SIDE:51 │O
│
│
O│KARTOTEK:
1 VA VAREKARTOTEK 8/CH.VAKA# │O
│
│
O│
│O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│1:DATO:#DD * DÆKNINGSGRADER * PR.#PD SIDE:#PP│O
│2:
│
O│3:NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI │O
│4: │
O│5:#1 #2 #7 #3 #4
#11 #12 #8
#13 │O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│
│O
│SELEKTIONER:
│
O│
│O
│BEREGNINGER:
│
O│ NÅR 1 BEGGE PASS
IKKE TOTALER │O
│ #11=#3‑#4 DB=SALGSPRIS‑KØBSPRIS │
O│ #13=#8*#4 LAGERVÆRDI=BEHOLDNING*KØBSPRIS │O
│ #14=#4 KØBSPRIS=KØBSPRIS │
O│ #15=#11 DB=DB │O
│ NÅR 0 BEGGE PASS ALTID │
O│ #12=#15%#14 DG=DB%KØBSPRIS │O
│ #12=FNR(#12) DG=FNR(DG) │
O│
│O
│TOTALNIVEAUER
│
O│
│O
│ SKAL LISTEN
SORTERES (J/N) ? N │
O│
│O
│ VEJEDE TOTALER
(KRÆVER EXTRA GENNEMLØB) (J/N) ? N │
O│
│O
│ SKAL TOTALER
BEREGNES FØR UDSKRIFT (J/N) ? J │
O│
│O
│ FELTER DER SKAL
TOTALISERES:
│
O│ #12
DG │O
│ #13
LAGERVÆRDI
│
O│ #14
KØBSPRIS
│O
│ #15
DB
│
O│TOTALER
BEREGNES FØR UDSKRIFT.
│O
│
│
└──────────────────────────────────────────────────────────────────────────────┘
Bemærk
anvendelsen af frifelterne 14 og 15: På listen udskrives felterne 4 og 11, men
der ønskes ikke totaler for disse. I stedet totaliseres felt 14 og 15 og
anvendes i total‑beregningerne, disse felter udskrives ikke på listen,
men sættes lig felt 4 henholdsvis felt 11 for hver linie (ikke totaler) i
beregningerne.
10.10.9. Teknik ved
beregnede totaler.
Normalt vil
rapportgeneratoren opsamle totalerne for de valgte felter i et selvstændigt (4
ords) sæt af felter (array), der direkte udskrives på totallinien.
Defineres
beregnede totaler vil kartotekets felter blive ændret til 4 ords felter
(deallokeret og redimensioneret), idet totalniveauet opstår, hvorefter de
felter, der er angivet som totalfelter, flyttes over i disse nye store
kartoteksfelter (dvs.S1, S2, S3, S4), beregningerne udføres med de normale
variable og totallinien udskrives, hvorefter kartoteksfelterne igen sættes ned
på normal størrelse.
En rapport med
beregnede totaler vil således være lidt mere pladskrævende end en rapport uden.
Ved beregnede
totaler bør man undlade at totalisere felter fra andre kartoteker direkte og i
stedet flytte disse over i frifelter, der så totaliseres, idet der ikke udføres
en sådan deallokering‑redimensionering for de eksterne kartotekers
felter, hvilket i værste fald kan betyde afrundingsfejl på totalen for disse
felter.
10.11. Felter der
skal totaliseres.
Her indtastes
numrene på de felter, man ønsker totaliseret på rapporten, de valgte felter vil
blive vist med stærk lysstyrke på skærmen. Et felt kan kun vælges een gang og
det er naturligvis kun numeriske talfelter, der kan totaliseres, forsøg på at
vælge et alfanumerisk tekstfelt vil resultere i en fejlmeddelelse. Op til 34
felter kan totaliseres på een rapport.
Figure 47 Felter, der
skal totaliseres.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 3......DEFINER SORTERING OG
TOTALER│
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 DB 29
@FRI
│
│ 12 DG 30
@FRI
│
│ 13 LAGERVÆRDI
│
│ 14 KØBSPRIS
│
│ 15 DB
│
│ 16 @FRI
│
│ 17 @FRI
│
│ 18 @FRI
│
│DER ER AUTOMATISK GRANDE TOTAL PÅ ALLE LISTER. │
│SKAL TOTALER BEREGNES FØR UDSKRIFT (J/N) ? N │
│
│
│
│
│FELTER DER SKAL TOTALISERES: FELTNR:14 │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Man kan vælge
felter fra externe kartoteker, f.eks. KU#24.
Ved beregnede
totaler skal alle felter, der indgår i totalberegningen, totaliseres.
Når man er færdig
med totalfelterne tastes SLUT (eller cr‑).
Der er desuden
mulighed for mere speciel styring af totalerne:
10.12.1. ‑feltnr.udskriv
felt på totallinien.
Indtaster man
f.eks. ‑7 vil dette felt ikke blive totaliseret, men blot udskrevet på
totallinien, naturligvis kun såfremt det er placeret på linien i
rapportdefinitionen. Indholdet af feltet vil være den sidste værdi fra
kartoteket, med mindre man har defineret andet ved hjælp af beregninger.
Funktionen
benyttes typisk til at hente et kundenavn ned på totallinien for kunden, eller
til f.eks. at udskrive navnet på varegruppen på en varegruppetotallinie. Et
sådant navn kan enten skrives direkte i rapporten ved hjælp af beregnede
totaler, eller eventuelt læses ved hjælp af opslag i et andet kartotek.
10.12.3. ‑ ingen
'grande total' tekst.
Tastes minus
alene undertrykkes udskriften af teksten 'GRANDE TOTAL' på rapportens sidste
linie.
Funktionen
anvendes typisk på rapporter, hvor der ikke er plads til en sådan tekst, dvs.
et felt til venstre på rapporten skal totaliseres. Udskrift af teksten grande
total på en sådan rapport vil bevirke, at resten af totalkolonnerne vil blive
forskudt det antal karakterer til højre, som der ikke er plads til for denne
tekst i forhold til første felt.
10.12.5. 2% eller 3%
totalpræcision.
Rapporter med
mange totaler, f.eks. gruppetotaler og subtotalniveauer på mange felter, kan
blive så store, at programmet ikke kan køres.
Totalerne opsamles
normalt med maskinens største regnenøjagtighed, dvs. såkaldte 4 ords variable,
der tillader 14 betydende cifre, og lagres i en matrix hvis størrelse bestemmes
af:
(antal felter der
totaliseres + 1)*(antal totalniveauer + 1)*(antal grupper + 1)
For at spare plads
på en sådan rapport kan man naturligvis reducere en af ovenstående faktorer,
eller ved hjælp af angivelse af 2% eller 3% i totalfeltnr. sætte præcision på
tabellen ned. Med 3% får man op til 10 cifre i totalerne, med 2% op til 6
cifre, begge dele med flydende komma, således at det vil være de mindst betydende
cifre, der vil tabes, hvis tallet overstiger denne grænse.
Alternativt kan
man naturligvis øge hele maskinens programstørrelse (aktiv partition) for at få
plads til sådanne rapporter, dette er et spil mellem hastighed og til rådighed
værende memory.
10.13.
Gruppetotaler.
Ved hjælp af
gruppetotalerne kan man til sidst på rapporten få udsplittet totallerne med
angivelse af at der f.eks. er 5 kunder i gruppe 7 med total saldo 9000 kr. etc.
Figure 48 Eksempel på
gruppetotaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101
CHOKOLADESTÆNGER 0 2,00
1,50 0,50 33,33
100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│ 2 GRUPPE
0
99.80 50150,00│
O│ 1 GRUPPE
1
33.33 15000,00│O
│ 1 GRUPPE
2
66,67 60000,00│
O│ 3 GRUPPE
9
100,05 2100,00│O
│
│
O│GRANDE
TOTAL
70,85 127250,00│O
└──────────────────────────────────────────────────────────────────────────────┘
10.14.1. GRUPPETOTALER
(J/N/NIVEAU)?
Man skal først
angive, om der overhovedet ønskes gruppetotaler på rapporten, svares Nej
returnerer rapportgeneratoren til menuen, svares J fortsættes med næste
spørgsmål.
Figure 49 Definition af
gruppetotaler.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2 LAGERVÆRDILISTE 3......DEFINER SORTERING OG
TOTALER│
│ 1 VARENR 19 @FRI │
│ 2 NAVN 20 @FRI │
│ 3 SALGSPRIS 21 @FRI │
│ 4 KØBSPRIS 22 @FRI │
│ 5 SIDSTE KØBSDATO 23 @FRI │
│ 6 LEV.NR. 24 @FRI │
│ 7 GRUPPENR 25 @FRI │
│ 8 BEHOLDNING 26 @FRI │
│ 9 ALTERNATIV LEV. 27 @FRI │
│ 10 FRIFELT 28
@FRI
│
│ 11 DB 29
@FRI
│
│ 12 DG 30
@FRI
│
│ 13 LAGERVÆRDI
│
│ 14 KØBSPRIS
│
│ 15 DB
│
│ 16 @FRI
│
│ 17 @FRI │
│ 18 @FRI
│
│SKAL TOTALERNE OPSPLITTES I FLERE GRUPPER (J/N/NIVEAU) ? J │
│
│
│
│
│GRUPPE FELTNR.? 7 ANTAL KODER I
GRUPPEN ? 10 GRUPPE NAVN ? GRUPPE │
│GRUPPE FELTNR.? U6 ANTAL KODER I GRUPPEN ? 20 GRUPPE NAVN ? LEVERANDØR │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Såfremt
rapporten defineres med flere SUBTOTAL niveauer, vil gruppetotalerne blive
udskrevet på alle niveauer. Såfremt man kun ønsker gruppetotalen til sidst på
listen kan man istedet for J indtaste det totalniveau, man ønsker gruppetotalerne
udskrevet fra, idet niveauerne nummereres som:
1=første subtotal
2=næste subtotal
x=grande total
For en rapport med
en enkelt subtotal skal man altså indtaste 2 for kun af få gruppetotaler til
sidst på listen.
10.14.3. GRUPPE
FELTNR:,ANTAL KODER og NAVN.
Her indtastes
nummeret på det felt, der skal styre grupperingen af totalerne, feltet skal
være numerisk (se senere) og indeholder en kode f.eks. mellem 0 og 100.
Den højeste værdi
af feltet angives i ANTAL KODER I DENNE GRUPPE, f.eks.100, og bevirker at
rapportgeneratoren sætter plads af til koderne 0‑100, andre værdier vil
blive opsamlet i diverse‑gruppen 0. Bemærk at der ikke er tale om 100
forskellige værdier, men derimod værdierne 0 til 100.
Antallet af
sådanne værdier i en gruppe påvirker naturligvis størrelsen af en rapport.
Til sidst
indtastes et gruppenavn, der udskrives på totallinien, og rapportgeneratoren
vender tilbage til spørgsmålet om gruppe feltnr. Der kan defineres op til 3
forskellige grupperinger af totalerne på samme rapport, definitionen afsluttes
ved at taste SLUT (eller cr‑).
10.14.5. 'Udefinerede'
gruppetotaler.
Een af
gruppetotalerne kan defineres som en såkaldt udefineret gruppe, hvilket gøres
ved at taste U foran gruppefeltnummeret, f.eks. U7.
Herved vil
rapportgeneratoren oprette en tabel over de forskellige værdier, der findes af
det pågældende felt ved gennemlæsning af kartoteket. Man skal således i ANTAL
KODER for en sådan gruppe angive antal forskellige værdier for det pågældende
felt, ikke som ellers højeste værdi af koden.
Man kan altså få
opsplittet totalerne f.eks. efter en 4 cifret kode eller et datofelt, og
specielt kan sådanne grupper også defineres med et alfanumerisk tekstfelt,
f.eks. ved gruppering i A, B, C etc. Forekommer flere end det angivne antal
værdier af feltet vil resten blive placeret i en diverse gruppe.
Figure 50 Eksempel på
flere grupper, den sidste 'udefineret'.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101 CHOKOLADESTÆNGER 0
2,00 1,50 0,50
33,33 100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│ 2 GRUPPE
0
99,80 50150,00│
O│ 1 GRUPPE
1
33,33 15000,00│O
│ 1 GRUPPE
2
66,67 60000,00│
O│ 3 GRUPPE
9
100,05 2100,00│O
│
│
O│ 2 LEVERANDØR 100 91,30 15000,00│O
│ 1 LEVERANDØR 123 66,67 60000,00│
O│ 3 LEVERANDØR 105 100,96 52100,00│O
│ 1 LEVERANDØR 271 33,33 150,00│
O│
│O
│GRANDE TOTAL
70,85 127250,00│
└──────────────────────────────────────────────────────────────────────────────┘
10.14.7. Dele af
felter/andre kartoteker.
Gruppetotaler
kan defineres styret af en del af et felt ved at indtaste f.eks. #7(3, 4),
altså den 3 til den 4 karakter af feltnr.7.
Endvidere kan man
angive felter fra andre kartoteker til at styre grupperingen, f.eks. KU#7,
eller endda dele af disse, f.eks. KU#7(3, 4).
Beregnede
frifelter kan naturligvis også anvendes til at styre grupperingen.
11. Flere
kartoteker.
12.1. Princippet
ved flere kartoteker
En rapport fødes
altid med et bestemt hovedkartotek, og langt de fleste rapporter vil
sandsynligvis kun anvende et kartotek.Fra dette kan brugeren plukke felter ud
ved angivelse af feltnumre og lade disse felter indgå i udskriften, i
selektioner, beregninger, sorteringer og totaler.
Et felt refereres
som f.eks.#7, og da rapportgeneratoren ved, hvilket kartotek, dette felt
stammer fra, nemlig hovedkartoteket, er denne betegnelse nok.Skal man anvende
et felt fra et andet kartotek end hovedkartoteket, må man foruden feltnummeret
angive kartoteksforkortelsen foran, KU#7 refererer således til felt 7 i
kartoteket KU.
Man kan anvende
sådanne felter fra andre kartoteker alle steder, hvor man kan anvende felter
fra hovedkartoteket, hvilket vil sige at en liste for eksempel uden videre kan
sorteres iflg. et felt i et andet kartotek, ligesom man frit kan lade felter
fra andre kartoteker indgå i de videre beregninger.
Forbindelsen til
de andre kartoteker knyttes ved at brugeren i beregningerne angiver READ (XX)
og i forbindelse hermed hvordan kartoteket skal læses (nøgleopbygning). Nøglen
angives i form af feltnumre efter READ, for eksempel READ (XX), #1.
Denne forbindelse
kan eventuelt være defineret af programmøren ved installation af
rapportgeneratoren, så man kun behøver READ (XX) hvilket vil lette definitionen
af sådanne rapporter betydeligt.
Da felter fra
andre kartoteker uden videre kan anvendes i beregningerne, kan et tredje
kartotek læses med anvendelse af felter fra det andet og så fremdeles.Det er
muligt at have op til 9 kartoteker ialt på en rapport.
12.3. Hjælp
tasten.
Normalt vil
brugeren hele tiden have en liste på skærmen over de felter, der findes i
hovedkartoteket, ved på anvendelse af flere kartoteker gives adgang til
samtlige felter i samtlige kartoteker, og herved skabes naturligvis det
problem, at ikke alle felter kan vises samtidig.
Dette kunne klares
ved at udstyre brugeren med en liste over kartoteker og felter, men da dette er
en meget omstændelig løsning er rapportgeneratoren udstyret med en HJÆLP
funktion, der aktiveres ved at taste ? eller hjælptasten (nederste højre
funktionstast).
Herved vises en oversigt over samtlige kartoteker i
rapportgeneratoren og man kan, ved at indtaste en kartoteksforkortelse, få vist
felterne i det pågældende kartotek.På denne måde er det sikret at brugeren kan
finde rundt i sine kartoteker og måske flere tusinde felter uden brug af
lister.
Figure 51
Kartoteksoversigt ved brug af hjælp‑funktionen.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 19 UDGÅEDE
LEVERANDØRER
4......DEFINER KALKULATIONER│
│GR VAREGRUPPER
│
│KU KURSER
│
│LE LEVERANDØRKARTOTEK │
│VA VAREKARTOTEK
│
│ │
│
│
│
│
│
│
│
│
│
│
│
│
│ │
│
│
│
│
│
│
│
│
│
│
│
│
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│SIDSTE KØB=0
│
│START (VA.02)
│
│NEXT (VA.02)
│
│BEREGNING ?
│
│
TAST FILNUMMER ELLER cr: │
└────────────────────────────────────────────────────────────────────────────────┘
Figure 52 Hjælp for et
enkelt kartotek.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 19 UDGÅEDE
LEVERANDØRER
4......DEFINER KALKULATIONER│
│ 1 VARENR
│
│ 2 NAVN
│
│ 3 SALGSPRIS
│
│ 4 KØBSPRIS
│
│ 5 SIDSTE KØBSDATO
│
│ 6 LEV.NR.
│
│ 7 GRUPPENR │
│ 8 BEHOLDNING
│
│ 9 ALTERNATIV LEV │
│10 FRIFELT
│
│ │
│
│
│
│
│
│
│
│
│
│
│
│
│ │
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│SIDSTE KØB=0
│
│START (VA.02)
│
│NEXT (VA.02)
│
│BEREGNING ?
│
│VA VAREKARTOTEK 8/CH.VAKA# TAST FILNUMMER ELLER cr: │
└────────────────────────────────────────────────────────────────────────────────┘
Figure 53 Udvidet hjælp
ved indtastning af VA01
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 19 UDGÅEDE
LEVERANDØRER
4......DEFINER KALKULATIONER│
│ 1 VARENR
9 ALTERNATIV LEVERANDØR
│
│ NØGLE 1. REFERENCE TIL
LEVERANDØRKARTOTEKET │
│ SKAL VÆRE EENTYDIGT. 10 FRIFELT │
│ 2 NAVN
ANVENDES IKKE PT.
│
│ 3 SALGSPRIS
│
│ VEJLEDENDE UDSALGSPRIS,DANSKE
KRONER │
│ 4 KØBSPRIS
│
│ KØBSPRIS I LEVERANDØRENS VALUTA. │
│ 5 SIDSTE KØBSDATO
│
│ OPDATERES VED LAGERTILGANG.
│
│ 6 LEV.NR.
│
│ NØGLE 2.
│
│ REFERENCE TIL
LE,LEVERANDØRKARTOTEKET │
│ 7 GRUPPENR
│
│ REFERENCE TIL
GR,VAREGRUPPEKARTOTEKET, │
│ DVS.VAREGRUPPENAVN OG
PRISFAKTOR. │
│ 8 BEHOLDNING
│
│ AKTUEL LAGERBEHOLDNING PÅ DENNE
VARE
│
│#DD=DATO , #PD=PR.DATO , #D1=DATA , #DA1=ALFA.DATA , NÅR=HVORNÅR
BEREGNES │
│SIDSTE KØB=0
│
│START (VA.02)
│
│NEXT (VA.02)
│
│BEREGNING ?
│
│VA VAREKARTOTEK 8/CH.VAKA# TAST FILNUMMER ELLER cr: │
└────────────────────────────────────────────────────────────────────────────────┘
Udvidet hjælp
for et kartotek fremkommer, når man taster kartotekesforkortelsen efterfulgt af
et feltnummer, for eksempel VA01.
Herved vises så
mange felter fra kartoteket, startende fra det angivne feltnr, som der er plads
til på skærmen, med extra forklarende tekst.
Denne funktion kan
være yderst nyttig specielt på systemer med mange kode‑felter, faktisk
kan den totale dokumentation af kartotekerne indlægges som udvidede
hjælpetekster, hvilket naturligvis kræver et ekstra arbejde af programmøren ved
installation. Installation af udvidede hjælpetekster må derfor aftales
særskilt. fildefinitionen.;
12.5. READ i
beregningerne.
Når man anvender
felter fra et andet kartotek end hovedkartoteket, må man definere, hvordan
dette kartotek skal læses. Der kan i værste fald være flere forskellige
muligheder, så rapportgeneratoren umiddelbart selv kan vide dette.
Brugeren skal i forbindelse med beregningerne på
rapporten altid indlægge en instruktion om READ af de andre kartoteker, der er
anvendt, f.eks. READ(KU) for at læse kartoteket KU.
12.7. Forbindelse
mellem kartotekerne.
I forbindelse
med en sådan READ er det nødvendigt for rapportgeneratoren at vide, hvordan
nøglen til kartoteket skal opbygges, det kan være at felt 15 i hovedkartoteket
indeholder et kundenr., der skal anvendes ved opslag i kartoteket KU, Der er
flere muligheder for at fortælle rapportgeneratoren dette:
1) Programmøren
kan have defineret denne ved installation af kartotekerne og brugeren behøver i
så fald slet ikke at tænke på dette, han udsteder blot kommandoen READ(KU).
2) Brugeren er
nødt til at angive feltnummeret efter kommandoen, f.eks. som:READ(KU), #15.
3) Såfremt det
ikke er så simple nøgler, der er tale om, er der mulighed for at udelade
kommaet og feltnummertegnet og skrive READ(KU)15 herved får man de samme
muligheder som i kartoteksdefinitionsprogrammet DATAMASTER til at sammenstille
nøgler af flere felter, dele af felter, pakke disse etc.Se senere.
12.9. Videre
læsning af tredje kartotek mm.
Når man først
har indlæst et kartotek med READ instruktionen er der herefter mulighed for at
referere til samtlige dette kartoteks felter ved at angive f.eks.KU#15 på lige
fod med hovedkartotekets felter, og således anvende disse videre i beregninger
etc.
Da selve READ instruktionen kan opfattes som en
beregningslinie i sig selv, kan man altså fortsætte med læsning af flere
kartoteker udfra felter i det/de kartoteker, man allerede har læst, ved
f.eks.at angive READ(XX), KU#7 hvorved kartotek XX læses med feltnr.7 fra
kartoteket KU som nøgle.
I det tilfælde,
hvor programmøren ved installation har angivet en automatisk forbindelse mellem
de forskellige kartoteker, således at brugeren kun behøver taste READ(XX) vil
rapportgenratoren selv scanne de allerede implicerede kartoteker startende med
hovedkartoteket, derefter først refererede kartotek etv. indtil en forbindelse
mellem et 'kendt' kartotek og det nye kartotek findes.
Bruges den
specielle nøgleopbygningsrutine kan dog kun hovedkartotekets felter og de 20
frifelter anvendes, felter fra andre kartoteker må om nødvendigt flyttes
hertil.
12.11. Kartoteker
med flere index.
Har et kartotek
flere index kan man udføre opslag i index 2 ved f.eks. at taste READ(KU.02),
#15.
Ligesom hvilke felter, der skal anvendes som nøgle kan
programmøren angive hvilket index der skal benyttes ved installation af
kartoteksforbindelserne.
12.13. Forskellige
records fra samme kartotek.
Man kan komme ud
for situationer, hvor flere forskellige records fra samme kartotek skal
behandles samtidig.Her kan man referere samme kartotek KU med store eller små
bogstaver, hvorved man opnår at anvende samme kartoteksdefinition men
forskellige records.
Felterne KU#1 og ku#1 stammer altså fra hver sin record i
samme kartotek og der skal udføres både en READ(KU) og READ(ku) i
beregningerne.
Kombinationerne KU, ku, Ku og kU kan anvendes, dvs.max.4
forskellige records fra eet kartotek kan behandles.Hver af disse referencer
tæller som et selvstændigt kartotek i det totale antal kartoteker på rapporten.
12.15. Maximalt
antal kartoteker
En rapport kan
maximalt bearbejde 9 kartoteker samtidigt, dvs.hovedkartoteket med opslag i op
til 8 andre kartoteker.
12.17. Betinget
læsning af andre kartoteker.
Ved at placere
READ instruktionerne i forbindelse med beregningerne på rapporten opnås den
fordel, at læsning af andre kartoteker lige så vel som alle andre
beregningeslinier kan gøres betingede ved hjælp af IF sætninger, f.eks.IF #7=3
READ(KU), #15.
12.19. Læsning
EFTER selektionerne er foretaget.
Man kan placere
opslag i andre kartoteker efter de normale selektioner på rapporten ved at
benytte EFTER kommendoen ved definition af beregningerne, hvorved
kørselshastigheden kan øges, naturligvis kun såfremt man ikke selekterer på
nogen af felterne fra disse andre kartoteker.
12.21.
6.11. Sum af posteringer.
Man kan i
beregningerne lave et gennemløb af f.eks.posteringerne på en kunde for at samle
det totale posterede beløb op i et frifelt.
Kommandoerne START (XX), NEXT(XX) og OM(XX) definerer
henholdsvis et interval i kartoteket XX, læser næste record hvorefter man kan
indlægge beregningslinier for summation m.v., og gør det igen indtil der ikke
er flere records i intervallet.
12.23.
Kontoudtogstype rapport.
Der findes
funktioner for 'kontoudtogs'typen af rapporter, hvor der udskrives
stamoplysninger fra en kunde, herefter en række posteringer og endelig en
total.
Her splittes udskriftsdefinitionerne op i henholdsvis
hoved og linier med LINIE kommandoen ved definition af rapporten på
posteringskartoteket, og som beregning udstedes kommandoen READH(KU) der vil
udskrive et hoved, hvergang kunden skifter.
12.25.
6.13. Ikke‑indexed
(relative) kartoteker og pointere.
De ovennævnte
eksempler har alle været baseret på opslag i indexed kartoteker, hvilket er
langt de hyppigst fremkommende i enhver installation.Relative, ikke indexed
kartoteker kan naturligvis også behandles med kommandoerne READR og READX.
Disse funktioner
kan også anvendes ved kartoteksstrukturer, hvor et kartotek indeholder en
pointer til et andet kartotek i form af en recordnummer, enten explicit eller
relativt til første data record nummer.
12.27. Helt specielle
nøglestrukturer.
Desuden kan
brugeren i tilfælde af hele mærkelige nøgleopbygninger definere en beregning af
et arbejdsfelt f.eks.T2$ helt ned til bitmanipulationer med assembler CALLs og
herefter udføre READ(KU), T2$.
12.29. READ(KU)
Saldoliste med kursomregning.
Vi ønsker at
opbygge en saldoliste med følgende udseende:
Figure 54 Saldoliste
med kursomregning.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * SALDOLISTE * PR.14.01.87 SIDE:
1 │O
│
│
O│LEV.NR.
NAVN
SALDO SALDO DKR │O
│100 SORENCO A/S 0,00 DKK 0,00 │
O│102 DEN DANSKE BANK 25.000,00 DKK 25.000,00 │O
│105 DANSK OLIE OG GAS 500,00 DKK 500,00 │
O│111 DMS A/S 1.000,00 DKK 1.000,00 │O
│123 PITZNER AUTO A/S 0,00 LUF 0,00 │
O│205 PRIVATBANKEN 20.000,00 LUF 3.700,00 │O
│260 CLORIUS MÅLERSERVICE 2.000,00 DKK 2.000,00 │
O│270 FIDUSIA A/S 200,00 US$ 1.540,00 │O
│271 UNICEF 0,00 UD$ 0,00 │
O│
│O
│GRANDE TOTAL
33.740,00 │
└──────────────────────────────────────────────────────────────────────────────┘
Leverandørkartoteket
LE vælges som rapportens hovedkartotek og under definition af rapporten med
funktion 1 placeres valutabetegnelsen fra valutakartoteket KU#2 efter
saldofeltet. Et frit felt kaldes SALDO DKR.
Ved beregningerne
skal kurskartoteket læses, hvorefter saldo dkr. skal beregnes på følgende måde:
READ (KU)5
#7=FNR
(#6*KU#3/100)
READ (KU)5, hvor 5
placeres umiddelbart efter slutparantesen uden mellemrum eller komma, angiver
at valutakartoteket skal læses med felt 5 fra hovedkartoteket (leverandørkartoteket)
som nøgle, altså valutakoden.
Valutakoden i
leverandørkartoteket er defineret som 2 cifre, og nøglen til valutakartoteket
opbygges som 2 karakterer ud fra denne, med foranstillet nul, såfremt koden er
mindre end 10.
12.31.
Prisberegning med READ af flere kartoteker.
Udfra
varekartoteket som hovedkartotek kan vi opbygge følgende prisberegningsliste:
Figure 55 Beregning af
ny pris udfra kurs og prisfaktor.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * PRISBEREGNING * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN KØBSPRIS DKR GR PRISFAKTOR NY
SALGSPRIS │O
│0101
CHOKOLADESTÆNGER 1,50 US$ 11,55
0 1,0000 11,55
│
O│0102
STOR FRÆSEMASKINE 10000,00 DKK 10000,00
9 3,0000 30000,00
│O
│0110 AUTOBUSSER 60000,00 LUF 11100,00
2 1,2345 13702,95
│
O│1001
PENGE,STORE SEDLER 500,00 LUF 92,50
0 1,0000 92,50
│O
│1005
STANSEMASKINE 1500,00 DKK 1500,00
1 2,0000 3000,00
│
O│2001
KREDITKORT 10,00 LUF 1,85
9 3,0000 5,55
│O
│2002 ID‑KORT 10,00 LUF 1,85
9 3,0000 5,55
│
└──────────────────────────────────────────────────────────────────────────────┘
med følgende
beregninger tilknyttet:
Figure 56 Prisberegning
med READ af flere kartoteker.
1. READ (LE)
2. READ (KU)
3. READ (GR)
4. #11=FNR(#4*KU#3/100) DKR=FNR(KØBSPRIS*KURS/100)
5. #12=FNR(#11*GR#3) NY SALGSPRIS=FNR(DKR*PRISFAKTOR)
I dette eksempel
kommer vi alle kartotekerne igennem:
1. Først læses
leverandørkartoteket udfra varekartoteket, hvorved valutakoden fra leverandøren
nu kendes.
2. Herefter læses
kundekartoteket (med opslag via leverandørens valutakode).
3. Endelig læses
varegruppekartoteket (udfra varens felt for varegruppe).
4. Der kan nu
beregnes en købspris i danske kroner ved omregning ifølge kursen.
5. Ny salgspris i
danske kroner beregnes som købsprisen gange varegruppens prisfaktor.
Såfremt
rapportgeneratoren havde været installeret med mulighed for tilbageskrivning i
kartotekerne kunne man have opdateret varernes pris direkte ved at indlægge en
ekstra linie:
#3=#11 Salgspris =
ny salgspris
12.33.
Prisberegningen uden automatiske forbindelser.
I dette eksempel
har vi forudsat, at programmøren har installeret rapportgeneratoren med
automatisk forbindelse mellem kartotekerne, det er derfor ikke nødvendigt at
angive, hvilke felter der skal benyttes som nøgle til de forskellige læsninger,
ligesom rapportgeneratoren selv finder ud af, at valutakartoteket skal læses
udfra et felt i leverandørkartoteket.
Havde disse
automatiske forbindelser ikke været defineret, ville indlæsningen blive lidt
mere kompliceret:
Figure 57
Prisberegningen uden automatiske forbindelser.
1.
READ (LE),#6
2.
#13=LE#5
3.
READ (KU)13
4.
READ (GR)7
Vi ser her den
store fordel ved definition af automatiske forbindelser, da man ellers skal
kende en del til kartotekernes nøgler:
1.
Leverandørkartoteket læses med varekartotekets felt 6 som nøgle, da dette er
alfanumerisk kan vi anvende såvel READ (LE), #6 som READ(LE)6 idet vi ikke har
brug for rapportgeneratorens nøgleopbygningsrutine for en så simpel nøgle.
2. Når vi skal
læse videre på kurskartoteket skal denne rutine anvendes, da valutakoden er 2
cifre numerisk. Dette kan ikke gøres direkte, da READ (KU)LE#5 ikke er tilladt,
istedet må vi benytte frifeltet #13 og definere dette som 2 cifre numerisk lig
med LE#5. En anden måde at gøre dette på kunne være:
2.T2$=LE#5 USING
"##"
3.READ (KU), T2$
således at man
selv opbygger et alfanumerisk arbejdsfelt med nøglen og benytter dette ved
læsningen.
4. Ved læsningen
af varegruppekartoteket kan vi direkte anvende nøglerutinen og angive læsning
med felt 7, varegruppe, som nøgle.
12.35. Alternative
leverandører:flere opslag i samme kartotek.
Hvis vi vil
definere en vareliste, hvor navnet på både den normale leverandør og den
alternative leverandør skal udskrives, skal det samme kartotek læses flere
gange.
Figure 58 Opslag i
samme kartotek flere gange.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * ALTERNATIVE LEVERANDØRER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN
LEV NAVN ALT NAVN │O
│0101
CHOKOLADESTÆNGER 271 UNICEF 270 FIDUSIA A/S │
O│0102
STOR FRÆSEMASKINE 100 SORENCO A/S │O
│0110 AUTOBUSSER 123 PITZNER AUTO A/S 100 SORENCO A/S │
O│1001
PENGE,STORE SEDLER 205 PRIVATBANKEN
102 DEN DANSKE BANK │O
│1005
STANSEMASKINE 100 SORENCO A/S │
O│2001
KREDITKORT 205 PRIVATBANKEN 102 DEN DANSKE BANK │O
│2002 ID‑KORT 205 PRIVATBANKEN 102 DEN DANSKE BANK │
└──────────────────────────────────────────────────────────────────────────────┘
Dette kan gøres
med beregningerne:
1.READ (LE)6
2.READ (le)9
idet anden
leverandør angives med små bogstaver. Vi kunne istedet have anvendt Le eller lE
altså en vilkårlig kombination af store og små bogstaver, hvert kartotek kan
indgå i en rapport i op til 4 varianter. Hver variant tæller som eet kartotek
ud af de maksimale 9 kartoteker for een rapport.
Første læsning
foretages med felt 6, normalt leverandørnr., som nøgle, anden læsning med felt
9, alternativt leverandørnr., som nøgle. Bemærk at det er uden betydning om
feltet er numerisk (#9) eller alfanumerisk (#6), da rapportgeneratorens
nøgleopbygningsrutine anvendes.
Ved definition af
rapporten udskrives som første navn LE#2 som andet navn le#2.
Samme effekt kunne
være opnået på en anden måde ved at udskrive to frifelter, f.eks. #11 og #12,
som man begge definerer som 24 karakterer, hvis man istedet indlægger følgende
beregninger:
Figure 59 Alternative
leverandører:flere opslag i samme kartotek.
1.
READ (LE)6
2.
#11=LE#2
3.
READ (LE)9
4.
#12=LE#2
Her indlæses
først den normale leverandør, hvorefter de felter, man skal benytte fra denne,
gemmes væk i frifelter, hvorefter den alternative leverandør indlæses fra samme
kartotek, oven i den foregående record, LE#2 skifter herved indhold. I dette
tilfælde vil man kun have udnyttet eet kartotek af rapportgeneratorens maksimum
på 9 kartoteker pr. rapport.
12.37. READ i
forbindelse med totaler.
Eksemplet i
afsnittet om gruppetotaler kan udbygges med udskrift af varegruppenavn for hver
gruppe:
Figure 60 Eksempel på
gruppetotaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * DÆKNINGSGRADER * PR.14.01.87 SIDE:
1 │O
│
│
O│NR NAVN GR SALGSPRIS KØBSPRIS DB
DG BEH VÆRDI│O
│0101
CHOKOLADESTÆNGER 0 2,00
1,50 0,50 33,33
100 150,00│
O│0102
STOR FRÆSEMASKINE 9 20000,00 10000,00 10000,00 100,00 0
0,00│O
│0110 AUTOBUSSER 2 100000,00 60000,00 40000,00
66,67 1 60000,00│
O│1001
PENGE,STORE SEDLER 0 1000,00 500,00
500,00 100,00 100 50000,00│O
│1005
STANSEMASKINE 1 2000,00
1500,00 500,00 33,33
10 15000,00│
O│2001
KREDITKORT 9 20,00
10,00 10,00 100,00 10
100,00│O
│2002 ID‑KORT 9 25,00
10,00 15,00 150,00 200
2000,00│
O│
│O
│ 2 GRUPPE
0 NORMALVARER 99.80 50150,00│
O│ 1 GRUPPE
1 DIVERSEVARER 33.33 15000,00│O
│ 1 GRUPPE
2 SPECIALVARER 66,67 60000,00│
O│ 3 GRUPPE
9 SKAFFEVARER 100,05 2100,00│O
│
│
O│GRANDE
TOTAL
70,85 127250,00│O
└──────────────────────────────────────────────────────────────────────────────┘
Dette gøres ved
yderligere at definere følgende beregningslinier:
Figure 61 READ i
forbindelse med totaler.
1. NÅR 2 BEGGE
PASS KUN TOTALER
2. READ (GR)7
3. #2=GR#2,S9$ NAVN=GRUPPENAVN,S9$
4. IF #LEVEL=1 LET
#2=S9$ IF LEVEL=1 LET NAVN=S9$
Desuden må man
ved definition af hvilke felter, der skal totaliseres, angive ‑2, dvs.
udskrift af felt 2, varenavnet, på totallinien.Der skal naturligvis defineres
beregnede totaler på listen.
Beregningerne
udfører følgende:
1. Linierne skal
kun udføres for totaler.
2.
Varegruppekartoteket læses med felt 7 som nøgle.
3. Varenavnet
sættes lig med det læste varegruppenavn, for en sikkerhedsskyld sættes et antal
blanke efter dette med S9$.
4. Hvis det er
GRANDE TOTAL, der udskrives (#LEVEL=1) sættes varenavnet lig blanke, udskrift
af varegruppenavn er ikke relevant på denne linie.
12.39.
START/NEXT/OM Sum af posteringer.
Hvis vi ønsker
at definere en rapport på et kartotek med et underliggende posteringskartotek,
hvor selve posteringerne ikke skal udskrives, derimod kun en sum af disse, kan
dette gøres ved hjælp af START/NEXT/OM kommandoerne.
Figure 62 Total
lagerværdi opsamlet med START/NEXT/OM.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * LEVERANDØR‑VÆRDI * PR.14.01.87
SIDE: 1 │O
│
│
O│LEV.NR.
NAVN
LAGERVÆRDI
│O
│100 SORENCO A/S 15000,00 │
O│102 DEN DANSKE BANK 0,00 │O
│105 DANSK OLIE OG GAS 0,00 │
O│111 DMS A/S 0,00 │O
│123 PITZNER AUTO A/S 60000,00 │
O│205 PRIVATBANKEN 52100,00 │O
│260 CLORIUS MÅLERSERVICE 0,00 │
O│270 FIDUSIA A/S 0,00 │O
│271 UNICEF 150,00 │
O│
│O
│GRANDE TOTAL 127250,00 │
└──────────────────────────────────────────────────────────────────────────────┘
Figure 63
Rapportdefinitionen for summering af lagerværdi.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DMS.RAPGEN RAPPORT NR.15 LEVERANDØR‑VÆRDI JAN 14, 1987 13:34:03│O
│
│
O│PRINTER:$LPT STARTPOSITION:001 ANTAL LINIER PR.SIDE:51 │O
│
│
O│KARTOTEK:
1 LE LEVERANDØRKARTOTEK 8/CH.LEKA# │O
│KARTOTEK: 2 VA VAREKARTOTEK 8/CH.VAKA# │
O│
│O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│1:DATO:#DD * LEVERANDØR‑VÆRDI * PR.#PD SIDE:#PP │O
│2:
│
O│3:LEV.NR.
NAVN LAGERVÆRDI │O
│4:
│
O│5:#1 #2 #7 │O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│
│O
│SELEKTIONER:
│
O│ │O
│BEREGNINGER:
│
O│ #7=0
LAGERVÆRDI=0 │O
│ START (VA.02),#1 START (VA.02),LEV.NR. │
O│ NEXT (VA.02) NEXT (VA.02) │O
│ #7=#7+VA#8*VA#4
LAGERVÆRDI=LAGERVÆRDI+BEHOLDNING*KØBSPRIS │
O│ OM (VA) OM (VA) │O
│
│
O│TOTALNIVEAUER
│O
│
│
O│
FELTER DER SKAL TOTALISERES:
│O
│ #11
LAGERVÆRDI │
└──────────────────────────────────────────────────────────────────────────────┘
I eksemplet har
vi valgt at udskrive leverandørkartoteket og pr.leverandør at summere dennes
vare‑lagerværdi. Vi vælger et frifelt #7 til at indeholde lagerværdien,
og dette felt udskrives og totaliseres på rapporten. Beregningerne opbygges på
følgende måde:
1.#7=0 Først
nulstilles sum‑feltet for lagerværdi:
2.START(VA.02), #1
herefter startes summeringen af records i varekartoteket, idet VA.02 angiver,
at vi ønsker at gennemlæse kartoteket ifølge 2.index, hvilket er
leverandørnummer‑nøglen. I forbindelse med START kommandoen defineres,
hvilket felt, der skal anvendes som nøgle ved læsningen, på samme måde som ved
READ kommandoen, i dette tilfælde felt 1, leverandørnummeret.
3.NEXT(VA.02) med
kommandoen NEXT læses en vare fra varekartoteket, og de næste beregninger
foretages indtil der ikke er flere varer, hvorefter rapportgeneratoren springer
til beregningslinien efter OM.
4.#7=#7+VA#8*VA#4
Summeringer af lagerværdi foretages.
5.OM(VA) og med
kommandoen OM hoppes tilbage til NEXT linien, hvorved summeringen fortsætter,
indtil der ikke er flere varer.
Det bemærkes, at
nøgleopbygningen angives i forbindelse med START kommandoen, og at denne ikke
er nødvendig ved NEXT og OM kommandoerne (nøglen kan naturligvis også være
automatisk defineret). Indexnummeret skal angives både ved START og NEXT
kommandoen, såfremt man ikke anvender første index, hvorimod dette er
overflødigt ved OM kommandoen.
12.40.1. Betinget
summering med START/NEXT/OM
Summeringen af
lagerværdi kan naturligvis gøres betinget med IF, f.eks.
IF VA#7=1 LET
#7=#7+VA#8*VA#4
IF VA#7<>1
LET #8=#8+VA#8*VA#4
hvorved man kan få
opsplittet lagerværdien for alle varer i varegruppe 1 og alle andre varer.
(Husk at nulstille både felt 7 og felt 8 før summeringen).
12.40.3. Flere løkker
af START/NEXT/OM inden i hinanden.
Man kan inden i
en sådan løkke af START/NEXT/OM have andre løkker af samme slags, såfremt
systemet var opbygget således at beholdningen af en vare lå i et selvstændigt
kartotek opdelt pr. lagersted (LA), kunne summeringen også foregå med en løkke
over disse:
Figure 64 Flere løkker
af START/NEXT/OM inden i hinanden.
1. #7=0
2. START
(VA.02),#1
3. NEXT
(VA.02)
4 .START
(LA),VA#1
5. NEXT
(LA)
6.
#7=#7+LA#8*VA#4
7. OM
(LA)
8. OM (VA)
På samme måde
kan man indeni en sådan løkke have READ af andre kartoteker, f.eks. finde
prisfaktoren for varens varegruppe.
12.40.5. Selektion i
forbindelse med START/NEXT/OM.
Selektion i
forbindelse med START/NEXT/OM kan typisk benyttes til oprydningskørseler. Man
ønsker f.eks. at få en liste over alle leverandører, hvor man ikke har købt
varer siden en indtastet pr.dato:
Figure 65 Leverandører
ikke aktive siden d.30/6‑1986.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * UDGÅEDE LEVERANDØRER * PR.30.06.86
SIDE: 1 │O
│
│
O│LEV.NR.
NAVN
│O
│100 SORENCO A/S │
O│102 DEN DANSKE BANK
│O
│105 DANSK OLIE OG GAS │
O│111 DMS A/S
│O
│260 CLORIUS MÅLERSERVICE
│
O│270 FIDUSIA A/S
│O
└──────────────────────────────────────────────────────────────────────────────┘
Vi udnævner her
frifeltet #7 til at styre selektionen og definerer denne som kun records, hvor
#7 er lig nul, skal udskrives.
Beregningerne
defineres som følgende:
Figure 66 Selektion i
forbindelse med START/NEXT/OM.
1. #7=0
2. START
(VA.02),#1
3. NEXT (VA.02)
4. IF FND
(VA#5)>FND (#PD) LET #7=1
5. OM (VA)
Felt 7 bliver
således 1, såfremt leverandøren har een eller flere varer, hvor sidste købsdato
er større end den ved start indtastede pr.dato, og sådanne leverandører
udskrives ikke (bemærk datovendingen med FND, da datoerne her er på formen
DDMMÅÅ).
12.41. READH/LINIE
kontoudtogs‑type rapport.
Hvis vi ønsker
at lave en rapport, hvor en leverandørs varer udskrives, defineres denne med
funktion 1 med hovedkartoteket varekartoteket, altså 'posteringskartoteket'.
Figure 67 Varer
pr.leverandør med READH og LINIE.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VARER PR.LEVERANDØR * PR.14.01.87 SIDE 1│O
│
│
O│NR NAVN │O
│ VARENR NAVN BEHOLDNING KØBSPRIS
VÆRDI│
O│100
SORENCO A/S
│O
│ 0102 STOR
FRÆSEMASKINE 0 10000,00
0,00│
O│ 1005
STANSEMASKINE 10 1500,00
15000,00│O
│
│
O│123
PITZNER AUTO A/S
│O
│ 0110 AUTOBUSSER 1
60000,00 60000,00│
O│
│O
│205
PRIVATBANKEN │
O│ 1001 PENGE,STORE
SEDLER 100 500,00
50000,00│O
│ 2001 KREDITKORT 10 10,00
100,00│
O│ 2002 ID‑KORT 200 10,00
2000,00│O
│
│
O│271
UNICEF
│O
│ 0101
CHOKOLADESTÆNGER 100 1,50
150,00│
O│
│O
│GRANDE TOTAL
421 72021,50 127250,00│
└──────────────────────────────────────────────────────────────────────────────┘
På første linie
af rapporten udskrives felterne LE#1 og LE#2, leverandørnr. og navn fra
leverandørkartoteket. Herefter afsluttes denne linie (med cr.) og godkendes.
Før næste linie
defineres gives kommandoen LINIE, hvorved man fortæller rapportgeneratoren, at
de allerede definerede linier kun skal udskrives, hver gang leverandøren
skifter, de næstfølgende linier skal derimod udskrives for hver enkelt vare.
Linien defineres
nu med de felter fra varekartoteket, som man ønsker udskrevet.
Som beregning skal
man definere forbindelsen mellem kartotekerne:
READH (LE), #3
denne kommando
virker på samme måde som den normale READ kommando, leverandørkartoteket læses
altså med varekartotekets felt 3, leverandørnr., som nøgle. Desuden sker der
det, at såfremt, og kun såfremt, der herved læses en ny leverandør, vil de
først definerede linier, altså leverandørnr. og navn, blive udskrevet.
For at få en
fornuftig udskrift skal varekartoteket være sorteret efter leverandørnr.,
således at alle varer til samme leverandør kommer samlet, dette kan gøres ved
at starte rapporten via index 2.
Havde det istedet
for været varegruppen, der skulle have styret rapporten, ville man have været
nødt til at sortere listen, da varegruppen ikke er defineret som et index i
systemet.
12.42.1. Selektion i
forbindelse med READH/LINIE
Såfremt vi
definerer en selektion på listen, således at varer med varegruppe 0 ikke
udskrives, vil listen komme til at se ud som følger:
Figure 68 Selektion på
varegruppe > 0.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VARER PR.LEVERANDØR * PR.14.01.87 SIDE 1│O
│
│
O│NR NAVN
│O
│ VARENR NAVN BEHOLDNING
KØBSPRIS VÆRDI│
O│100
SORENCO A/S
│O
│ 0102 STOR FRÆSEMASKINE 0
10000,00 0,00│
O│ 1005
STANSEMASKINE 10 1500,00
15000,00│O
│
│
O│123
PITZNER AUTO A/S
│O
│ 0110 AUTOBUSSER 1 60000,00
60000,00│
O│
│O
│205
PRIVATBANKEN
│
│ 2001 KREDITKORT 10
10,00 100,00│
O│ 2002 ID‑KORT 200 10,00
2000,00│O
│ │
O│271
UNICEF
│O
│
│
O│GRANDE
TOTAL
221 71520,00 77100,00│O
└──────────────────────────────────────────────────────────────────────────────┘
Vi bemærker, at
leverandørnr. 271 udskrives, da denne her vare er tilknyttet i systemet, også
selv om der ikke findes varer, der skal udskrives på rapporten, disse er nemlig
selekteret fra.
For at undgå
udskrift af sådanne leverandører er vi nødt til at styre overskriften også og
ændre vores beregning til:
IF #7<>0
READH (LE), #6
således at
leverandørkartoteket kun læses, hvis varegrupper er forskellig fra 0.
Selektionen indkoorpereres således i læsningen.
En anden måde at
undgå 'nul‑leverandører' er at definere beregningen som en EFTER
beregning, altså en beregning, der kun foretages for de varer, der opfylder
selektionskriteriet. Dette gøres ved at indtaste kommandoen EFTER på
beregningslinien før læsningen:
Figure 69 Selektion i
forbindelse med READH/LINIE
1.
EFTER
2.
READH (LE),#6
12.42.3. Totaler i
forbindelse med READH/LINIE
Såfremt vi på
rapporten ønsker en total af lagerværdien pr. leverandør:
Figure 70 Totaler ved
START/NEXT/OM.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:14.01.87 * VARER PR.LEVERANDØR * PR.14.01.87 SIDE 1│O
│
│
O│NR NAVN
│O
│ VARENR NAVN BEHOLDNING KØBSPRIS
VÆRDI│
O│100
SORENCO A/S
│O
│ 0102 STOR
FRÆSEMASKINE 0 10000,00
0,00│
O│ 1005
STANSEMASKINE 10 1500,00
15000,00│O
│
│
O│IALT
100
15000,00│O
│ │
O│
│O
│123 PITZNER AUTO
A/S
│
O│ 0110 AUTOBUSSER 1 60000,00
60000,00│O
│
│
O│IALT
123
60000,00│O
│
│
O│
│O
│205
PRIVATBANKEN
│
O│ 2001 KREDITKORT 10 10,00
100,00│O
│ 2002 ID‑KORT 200 10,00
2000,00│
O│
│O
│IALT 205
2100,00│
O│
│O
│GRANDE TOTAL 77100,00│
└──────────────────────────────────────────────────────────────────────────────┘
kan dette gøres
ved at definere et subtotalniveau for hver gang, de første 3 cifre i
varekartotekets nøgle 2 skifter, altså hver gang leverandørnummeret skifter.
12.43.
Rapportgeneratorens nøgleopbygnings‑rutine.
En nøgle til et
kartotek er altid et alfanumerisk tekstfelt på op til 30 karakterer.
Programmøren har
ved opbygning af kartoteket beskrevet, hvordan nøglen opbygges ud fra
kartotekets felter, da disse felter tit er numeriske må der ske en form for
konvertering fra tal til tekst før feltet kan anvendes som nøgle. Det er denne
konvertering, som rapportgeneratorens nøgleopbygningsrutine tager sig af.
For at spare
diskplads kan programmøren desuden have 'pakket' tal sammen i nøglen, hvilket
vil fylde det halve på disken og gøre programmerne dobbelt så komplicerede. Det
er også normalt, at der er anvendt dele af felter eller tekstkonstanter i
nøglerne.
Det kan således
være en temmelig kompliceret sag at få de forskellige kartoteksnøgler til at
stemme, man er ihvertfald nødt til at have en dokumentation over systemets
nøgler.
Denne
dokumentation kan man få programmøren til at indlægge på maskinen, således at
rapportgeneratoren kender de forskellige nøgler i systemet, hvorved brugeren er
fri for at spekulere over disse.
Specielt skal man
være opmærksom på om tal indgår i nøglerne med eller uden foranstillede nuller.
Rapportgeneratorens nøgleopbygningsrutine
aktiveres ved at skrive nøgledefinitionen umiddelbart efter READ (XX) uden
mellemrum eller komma. Feltnumre angives uden # foran og tekstkonstanter skal
anføres i gåseøjne (").
Ved hjælp af
bogstaver kan man specificere specialfunktioner såsom Pakning, Datovending og
Zero (undertryk foranstillede nuller). Dele af felter angives på normal måde,
for eksempel 10(5, 6) betyder karakter 5 til 6 af felt 10.
En nøgle
indeholder altid et lige antal karakterer, såfremt man har et femcifret
kundenummer vil dette altid være lagret i systemet som 6 karakterer i nøglen.
Denne ekstra karakter kan være en nul‑karakter, tallet 0 eller en blank.
Med Space funktionen kan man udfylde nøglen med blanke. I det følgende vil den
fulde syntax for denne nøgledefinition blive beskrevet efterfulgt af nogle eksempler
herpå.
12.44.1. Felter.
Felter angives
som feltnummer uden # foran:
Figure 71 Felter.
10 = feltnummer 10
10(5,6) = karakter 5‑6
af felt 10
R = Recordnummer (exakt)
N = Recordnummer (relativt til første data
record)
"XX" = Tekstkonstant
12.44.3. Funktioner.
Funktioner
angives umiddelbart efter feltet som et bogstav:
Figure 72 Funktioner.
D = Datovending (DDMMÅÅ ==> ÅÅMMDD som
FND)
P = Pakning
Z = Zero, nulundertrykkelse
S = Space, et antal blanke
12.44.5. Sammenstilling
af felter og funktioner.
Flere felter
kombineres ved at adskille disse med komma. P funktionen kan anvendes for hvert
enkelt felt eller alene uden feltnummer, i sidste tilfælde pakkes hele den
indtil nu definerede nøgle. S funktionen kan kun anvendes til sidst og alene.
12.44.7. Eksempler på
nøgleopbygninger.
Figure 73 Eksempler på
nøgleopbygninger.
1. 1
Felt 1
2. 1,2
Felt 1 efterfulgt af felt 2
3. 1,2,P
Som ovenfor, hele nøglen pakket
4. 1P,2
Felt 1 pakket efterfulgt af felt 2 upakket
5. 1(3,4),2 Karakter 3 til 4 af felt 1
efterfulgt af felt 2
6. "01",1 Konstanten 01 efterfulgt af felt 1
7. 1,S
Felt 1 med eventuelt efterstillede blanke
8. 2,NP,S
Felt 2, relativt recordnummer pakket, blanke
De to sidste
nøgleopbygninger anvendes normalt af DATAMASTER, den første ved definition af
en eentydig nøgle, den anden ved definition af en nøgle, hvor der må forekomme
flere ens værdier af feltet.
13. Breve og
rettelse af rapporter.
Et brev er en
rapport, hvor der udskrives een side på printeren (skærmen) for hver record i
kartoteket, i modsætning til en rapport (liste), hvor der typisk kun udskrives
een linie for hver record i kartoteket.
På et brev kan man
ligesom på en anden rapport definere selektioner, sortering og beregninger og
altså f.eks. udskrive brevet til udvalgte kunder eventuelt sorteret op efter
postnummer for at opnå portobesparelse. Der kan ikke defineres totaler på et
brev, da dette ikke kan anses for at være relevant.
Som eksemplar på
breve kan nævnes:
Labels
Rykkerbreve/meddelelser
Girokort, evt.med
OCR linie
Checks
Etiketter
specielt defineres
labels som et brev med få linier pr.side.
14.1. Definition
af et brev.
Et brev
defineres ved at vælge funktion 6, hvorefter man skal indtaste rapportens
stamoplysninger på nøjagtig samme måde som ved definition af en liste med
funktion 1, se beskrivelse af denne. Dog skal der ikke angives nogen
overskrift, da denne er irrelevant for et brev.
Herefter får man
stillet en blank skærm til rådighed, hvor man kan placere felter og tekst helt
frit imellem hinanden og på denne måde opbygge et brev med f.eks. navn og
adresse fra kartoteket og en fast tekst indeholdende f.eks. saldo. Da papiret
kan være større både i højden og i bredden, end skærmen kan rumme, kan man ved
hjælp af kommandoer flytte skærmsiden til en vilkårlig position på papiret,
skærmen kan altså betragtes som et vindue, hvorigennem man kan se et udsnit af
brevet.
14.3. Skærm‑forespørgselsprogrammer.
Et brev, der
køres på skærm, kan anvendes som forespørgselsprogram, idet de faste tekster på
brevet vises med svag lysstyrke, felterne fra kartoteket med stærk lysstyrke,
og det er altid kun de 24 første linier af brevet, der vises, uanset om brevet
er defineret længere.
Når een record er
vist på skærmen bliver man bedt om at taste cr for næste side, og herved kan
man bladre sig igennem kartoteket. Der er også mulighed for at indtaste et
nummer, f.eks. kundenummer, hvorved denne kunde vil blive vist på skærmen, og
på denne måde kan programmet altså anvendes som et decideret forespørgselsprogram.
Tastes PRINT vil
man få udskrevet det brev, der er vist på skærmen, på printeren i sin helhed,
dvs. eventuelt med mere end 24 linier på siden. Herved kan man f.eks. bladre
igennem på skærmen og kun udskrive de breve, der godkendes.
Tastes SLUT afsluttes
forespørgselen.
14.5. Brug af
funktion 6 og 7.
Der vises et
skærmbillede som f.eks.:
Figure 74 Definition af
et brev.
┌────────────────────────────────────────────────────────────────────────────────┐
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│
1│
│
2│
│
3│
│
4│
│
5│
│
6│
│ 7│
│
8│
│ 9│
│
xxxxxxxxxxxxxxxxxxxxxxxx 10│
│
xxxxxxxxxxxxxxxxxxxxxxxx 11│
│
xxxxxxxxxxxxxxxxxxxxxxxx 12│
│
Kbh.V D.##.##.## 13│
│
14│
│
15│
│ VEDR.KONTONR.xxx.
16│
│
17│
│
18│
│LINIE,POS: 17
│
│1...Ω....10...Ω....20...;....30...;....40...;....50...;....60...;....70...;....8│
│VEDR.KONTONR.#1 .
│
│
│
│VI HAR DD.OPGJORT SALDOEN PÅ DENNE KONTO TIL KR.#6 . │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
og man bliver
placeret nederst på skærmbilledet i feltet LINIE, POS.
Felterne vises
altså på skærmen med deres feltformat, idet em række x‑er indikerer et
tekstfelt, en række # eller ‑ markerer et numerisk felt. Man kan vælge en
linie ved at indtaste nummeret på denne eller eventuelt linienummeret komma en
position på linien, hvorved denne linie, den foregående og den næste vil blive
vist nederst på skærmen, nu ikke med feltformater med derimod med feltnumre.
Linien kan nu
ændres, og i det øjeblik man taster cr. vil den nye linie blive placeret på
skærmen, idet feltnumrene oversættes til de respektive feltformater, og man
returnerer til LINIE, POS. Det er kun det antal karakterer, man indtaster, der
bliver ændret, resten af linien bevares, ønsker man linien slettet, må man
altså blanke denne ud. Man kan holde samme karakter ved at bruge ; tasten.
Definitionen
afsluttes ved at taste SLUT eller cr‑.
14.7. Rettelse af
brev eller rapport.
Vælges funktion
7 kan man ændre brevet på nøjagtig samme måde, som det blev defineret, man har
altså en skærmside til rådighed, hvor tekster/felter kan placeres som ønsket.
Vælges funktion 7
på en rapportliste, defineret med funktion 1, får man ligeledes vist hele
rapportens opbygning på skærmen (layout) og kan således ændre i dette.
Figure 75 Ændring af en
rapport.
┌────────────────────────────────────────────────────────────────────────────────┐
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│DATO:##,##,## * PRISLISTE * PR.##.##.##
SIDE:####
1│
│
2│
│VARENR NAVN SALGSPRIS
GRUPPENR
3│
│
4│
│xxxx xxxxxxxxxxxxxxxxxxxx
######.## ## 5│
│
6│
│
7│
│ 8│
│
9│
│ 10│
│
11│
│
12│
│
13│
│
14│
│
15│
│
16│
│
17│
│
18│
│LINIE,POS: PRINTER
│
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│PRINTER NR.? 1
(CR=$LPT,1=$RPL4) │
│STARTPOSITION (CR=001) ?
SLUTPOSITION (CR=080) ? │
│ANTAL LINIER PR.SIDE (CR=051) ? 72 │
│ │
└────────────────────────────────────────────────────────────────────────────────┘
På denne måde
kan man specielt ændre overskriftslinierne, evt. opbygge overskrifterne i flere
linier, eller tilføje/fjerne felter på rapporten.
Man skal dog være
opmærksom på, at rapportgeneratoren har døbt liniernes betydning, idet
rapporten blev defineret, og dette kan ikke ændres, man kan altså ikke tilføje
eller slette nogen linier. For en rapport defineret med een linie med felter
vil det således altid gælde, at linie 1 til 4 anvendes som overskriftslinier,
linie 5 som den linie, der udskrives for hver record i kartoteket. Tilføjes
ekstra linier vil disse ganske enkelt blive ignoreret, fjernes felterne fra
linie 5 vil der blot blive udskrevet en blank linie for hver record i
kartoteket.
Ved hjælp af
kommandoen PRINTER er det også muligt at ændre printertildelingen eller
sidehøjden på en rapport. Man kan altså om ønsket placere felter i
overskriftslinierne på en rapport, idet overskriften først udskrives, når
første record fra kartoteket udskrives.
14.9. Kommandoer
i funktion 6 og 7.
Man kan i LINIE,
POS anvende følgende specialkommandoer:
14.10.1. Linienr
Tastes et
linienr. vælges en linie og denne kan rettes, hvorefter linien vises på
skærmen, idet skærmbilledet rulles op/ned, hvis den valgte linie ligger udenfor
det valgte linienummerinterval.
14.10.3.
Linienr.,position
Som ovenfor,
linien kan rettes fra den angivne position.
14.10.5. cr
Skærmbilledet
rulles een linie op.
14.10.7. SLUT eller cr‑.
Definitionen
afsluttes.
14.10.9. ? eller hjælp‑tasten
Man kan se
felterne i dette eller andre kartoteker, se også beskrivelsen af
hjælpfunktionen under flere kartoteker.
14.10.11. POS sæt
startposition for skærmen
Hermed kan man
flytte skærmbilledet til at starte i en anden position på rapporten, såfremt
denne er bredere end 80 karakterer.
14.10.13. PRINT udskrift
på printer.
Rapportens
layout udskrives på den printer, rapporten er tilknyttet. Dette kan specielt
anvendes ved korrektur på fortrykte formularer.
14.10.15. F formular
fremføring
Skifter een side
frem på printeren, svarende til rapportens definerede sidehøjde.
14.10.17. PRINTER
definer printertildeling og sidehøjde
Med denne
kommando kan man dirigere rapporten til en bestemt printer (denne skal dog være
defineret ved installation, normalt anvendes TAMOS printertildeling), foruden
man kan ændre første og sidste printposition for linierne, dvs. specielt flytte
rapportens venstre margin ind til højre.
Desuden kan
sidehøjden, dvs. antal linier pr.side, ændres, både for breve og andre
rapporter.
14.10.19. RASTER slå
printraster til/fra
Når man giver
RASTER kommandoen første gang slås funktionen til, næste gang fra. Når rasteret
er aktivt vises en markering over hele skærmen af positionerne, således at det
er lettere at identificere de enkelte felt/tekst placeringer, og dette raster
vil også blive udskrevet, såfremt man anvender PRINT kommandoen.
Figure 76 RASTER
kommandoen aktiveret.
┌────────────────────────────────────────────────────────────────────────────────┐
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....1│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....2│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....3│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....4│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....5│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....6│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....7│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....8│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,....9│
│....,....!xxxxxxxxxxxxxxxxxxxxxxxx,....!....,....!....,....!....,....!....,...10│
│....,....!xxxxxxxxxxxxxxxxxxxxxxxx,....!....,....!....,....!....,....!....,...11│
│....,....!xxxxxxxxxxxxxxxxxxxxxxxx,....!....,....!....,....!....,....!....,...12│
│....,....!....,....!....,....!....,....!....,....Kbh.V,...D.##.##.##.!....,...13│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,...14│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,...15│
│....,.VEDR.KONTONR.xxx..,....!....,....!....,....!....,....!....,....!....,...16│
│....,.VI.HAR.DD.OPGJORT.SALDOEN.TIL.KR.‑‑‑‑‑‑‑‑‑#.##..,....!....,....!....,...17│
│....,....!....,....!....,....!....,....!....,....!....,....!....,....!....,...18│
│LINIE,POS:
│
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│
│
│ │
│
│
│ │
└────────────────────────────────────────────────────────────────────────────────┘
14.10.21.
7.5.11. MODE vis
feltformater/numre eller navne.
Ved hjælp af
MODE kommandoen kan man definere, hvordan felterne skal vises på skærmbilledet
samt ved udskrift med PRINT kommandoen, idet man bliver bedt om at indtaste et
tal for:
0=feltnumre vises
1=felter vises
ikke overhovedet, blankes ud istedet
2=feltnavne vises,
forsåvidt der er plads til dette
3=feltformater
vises (normalt)
Figure 77 Kommandoen
mode 0,feltnumre.
┌────────────────────────────────────────────────────────────────────────────────┐
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│
1│
│
2│
│
3│
│
4│
│ 5│
│
6│
│ 7│
│
8│
│
9│
│ #2
10│
│ #3
11│
│ #4
12│
│
Kbh.V D.#DD 13│
│
14│
│
15│
│ VEDR.KONTONR.#1 .
16│
│ VI HAR DD.OPGJORT SALDOEN TIL
KR.#6 17│
│
18│
│LINIE,POS: │
│1...;....10...;....20...;....30...;....40...;....50...;....60...;....70...;....8│
│ │
│
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
14.10.23. IL eller LI
indsæt en linie
Med en af disse
kommandoer kan man indsætte en linie før et bestemt linienr., idet resten af
liniernes flyttes ned.
14.10.25.
7.5.13. DL eller LD slet en linie
Med en af disse
kommandoer kan man slette en bestemt linie, idet resten af linierne på
rapporten flyttes op.
14.10.27. FORMAT ændring
af format for frifelterne
Første gang man
anvender et af de 20 frifelter bliver man bedt om at indtaste et navn og et
format for feltet (se beskrivelsen under definition af rapport). Ønsker man
senere at ændre formatet for et sådant felt kan dette gøres med FORMAT
kommandoen, idet man bliver bedt om at angive:
FELTNR:
NYT FORMAT:
Funktionen kan kun
anvendes på de 20 frifelter, ikke på selve kartotekets felter, og såfremt et
frifelt først een gang er givet et alfanumerisk format kan dette ikke siden
ændres, om nødvendigt må man istedet anvende et andet frifelt. Formatet for et
felt i et kartotek kan kun ændres for denne rapport ved at flytte feltet over i
et af frifelterne, således at et 30 karakters navn på denne måde kan udskrives
som blot 20 karakterer.
14.11.
Specialfelter i et brev/rapport.
Man kan foruden
de normale felter:
#xx=feltnr.xx fra
hovedkartoteket
KK#xx=feltnr.xx
fra kartoteket KK.
anvende følgende
specialfelter:
14.12.1. #DD dags dato
Indtastet ved
start af rapporten. (##.##.##)
14.12.3. #PD pr.dato
Indtastet som
anden dato ved start af rapporten. (####) x(8);
14.12.5. #PP
sidenummer
Tildeles
automatisk fortløbende ved sideskift. (####) x0(13);
14.12.7. #KA
kartoteksnr.
Kan kun anvendes
for specialkartoteker, hvor kartoteksnavnet indeholder ? (se
installationsvejledningen). (####)
14.12.9. #SN
systemnavn
Kan anvendes såfremt
rapportgeneratoren er installeret med flere systemer, f.eks. forskellige
selskaber/kartotekssæt. Hentes som feltnr.1 fra DMS.RAPGEN.SYS, dvs. sat op ved
installationen. (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) til T8$(159, 188);
14.12.11. #SY systemnr.
Som #SN, giver
nummeret på det aktuelle system. (xxx) T8$(155, 157);
14.12.13. #TI
systemtid.
Hentes fra
maskinens indbyggede ur. (##.##.##) call 99, T2$;
14.12.15. #NO
programnummer
Rapportens
programnr., f.eks. for rapportnr. 15 er dette 1015. (####) oversættes til x(1);
14.12.17. #SC
skærmnummer
Nummeret på den
skærm, der har startet udskriften (##) x(10);
14.13. Specialtegn (gåseøjne mm.).
Teksten i en
rapport må ikke indeholde gåseøjne ("") eller pil baglæns (<) ,
idet disse tegn er basic specialkarakterer og vil forårsage fejl ved generering
af programmet. Anvend f.eks. ' (enkelt ping) for gåseøjne.
En tekst kan ikke
placeres umiddelbart til venstre for et felt, idet rapportgeneratoren ville
opfatte dette som reference til et andet kartotek, f.eks. vil SALDO#7 opfattes
som felt 7 fra kartoteket DO, skriv SALDO #7 istedet.
14.15. Breve i
flere versioner
Denne facilitet
i rapportgeneratoren er delvist udgået, idet den kun kan anvendes på systemer,
der er installeret uden optimeringskoden er aktiveret, altså ikke i forbindelse
med flere filer. Ønsker man at udnytte denne kan man på samme maskine få
installeret et specielt rapportgeneratorsystem for dette.
Ved oprettelse af
et nyt brev med funktion 6 vil rapportgeneratoren spørge om man ønsker at
definere flere forskellige versioner af brevet, og, i bekræftende fald, hvor
mange versioner, der ønskes, og hvilket feltnr. der skal styre disse versioner.
Figure 78 Definition af
brev i flere versioner.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 5 BREV 6....DEFINER
NYT BREV │
│GR.... VAREGRUPPER
│
│KU.... KURSER
│
│LE.... LEVERANDØRKARTOTEK
│
│VA.... VAREKARTOTEK
│
│
│
│
│
│ │
│
│
│ │
│
│
│
│
│
│
│
│
│KARTOTEKSNR.?
LE......LEVERANDØRKARTOTEK │
│
│
│RAPPORT NAVN (FOR PROGRAMVALG)
? BREV │
│
│
│ANTAL LINIER PR.SIDE (CR=51) ?
72 BRUGERNAVN ?
XXX │
│
│
│SKAL BREVET UDSKRIVES I FLERE VERSIONER (SPROG) (J/N) ? J │
│HVORMANGE VERSIONER FORUDEN DENNE ? 2 │
│RAPPORTERNE: 6 7 TILRETTES TIL VERSION 1,2... │
│BEREGNINGER MM.DEFINERES PÅ DENNE RAPPORT. │
│HVILKET FELTNR SKAL STYRE VERSIONSNUMMERET ? 5 │
└────────────────────────────────────────────────────────────────────────────────┘
Herefter
definerer man brevet på normal måde, og dette bliver grundversionen.
Rapportgeneratoren vil lagre en kopi af denne grundversion i de næstfølgende
rapporter, svarende til det ønskede antal versioner. Disse rapporter skal
således være frie når et brev med flere versioner defineres.
Man kan nu ændre
de forskellige versioner med funktion 7, rettelse af rapport, f.eks. oversætte
disse til forskellige sprog eller lade et rykkerbrev blive skrappere og
skrappere.
Det felt, der
styrer versionerne, skal være en kode med værdien 0, 1, 2 osv., således at
brevets version 1 udskrives for kode 1, version 2 for kode 2 etc., falder koden
udenfor en defineret version udskrives grundversionen. Styrefeltet kan være et
beregnet felt.
Kun grundversionen
af rapporten kan startes, ligesom beregninger, selektioner og sortering skal
defineres på denne. De øvrige versioner er kun slaveversioner, der styres af
grundversionen, og kan ikke behandles selvstændigt.
Der kan
max.defineres 9 versioner foruden grundversionen.
Hver version kan
knyttes til en selvstændig printer, girokort og checks kan således udskrives i
samme kørsel såfremt man har 2 printere til rådighed.
14.17. Nyttige
linier og positioner
En A4 side er 72
linier høj og 80 karakterer bred, undgå dog at skrive i position 80, da dette
kan bevirke dobbelt linieskift.
En normal
printside er 132 karakterer bred og 51 linie høj.
Girokort er
normalt 24 linier.
Årsopgørelser til
skattevæsenet er normalt 48 linier.
En normal
rudekuvert har adressefeltet startende på linie 10 i position 10.
Labels er mellem 8
og 12 linier. Postvæsenet tillader udskrift af kundenr. øverst på en label.
15.
Kopiering,sletning og dokumentation.
16.1. Kopiering
af en rapport.
En rapport kan
kopieres til en anden ved hjælp af funktion 10, hvor man angiver:
Figure 79 Kopiering af
en rapport.
FRA
RAPPORT NR:
TIL
RAPPORT NR:
NYT
RAPPORT NAVN:
NYT
BRUGERNAVN:
hvorefter
rapporten kopieres.Første gang den nye rapport startes vil programmet blive
genereret, dvs.selve basic programmet kopieres ikke.Kopifunktionen kan specielt
udnyttes til at tage en kopi af en bestående rapport, man ønsker at udbygge,
men for alt i verden ikke ødelægge, og herefter udbygge kopien.
Figure 80 Kopiering af
en rapport.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
10.....KOPIERING │
│ 1 PRISLISTE
│
│ 2 LAGERVÆRDILISTE
│
│ 3 DÆKNINGSGRADER
│
│ 4 PRISBEREGNING
│
│ 5 LABELS TIL LEVERANDØRER
│
│ 6 SALDOLISTE │
│ 7 VARELISTE
│
│ 8 VAREGRUPPELISTE │
│ 9 LEVERANDØRLISTE
│
│ 10 KURSLISTE
│
│ 11 VARER PR.LEVERANDØR
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│ │
│
│
│
│
│
│
│RAPPORT NUMMER ? 2 TIL RAPPORTNR.?
12
│
│NYT RAPPORTNAVN ? VEJET LAGERVÆRDI
NYT BRUGERNAVN ? YYY │
└────────────────────────────────────────────────────────────────────────────────┘
16.2.1. Kopiering af
rapporter mellem systemer.
En speciel
facilitet er implementeret for kopiering mellem forskellige
rapportgeneratorsystemer.
Denne kan naturligvis kun finde anvendelse, hvis
rapportgeneratoren er installeret med flere systemer, hvor kartotekerne for
disse systemer er ens, for eksempel for at have mere end 88 rapporter til
rådighed.
Man skal være i det system, man ønsker at kopiere en
rapport FRA, som TIL rapport kan man herefter angive systemnummer komma
rapportnummer, f.eks.l0, 2 giver system 10 rapport 2.
16.3. Sletning af
en rapport.
Ved hjælp af
funktion 5 kan man slette en rapport, dog skal man først svare ja til
spørgsmålet SLET (J/N) således at man ikke ved en fejltagelse sletter en
forkert rapport.
Sletningen kan
også bruges på en speciel måde, måske især af programmøren ved installation af
rapportgeneratoren, idet man kan svare nej til at slette rapporten, herved
bliver rapportdefinitionerne naturligvis bevaret, men til gengæld slettes det
genererede basic program for rapporten.Dette vil således blive genereret igen
ved næste start af rapporten, hvorved eventuelle ændringer i standardrutiner
eller read‑statements vil blive aktive i det nygenererede program.
Dog skal man være
opmærksom på, at read‑statements for andre kartoteker knyttes til
rapporten idet beregningslinien READ (xx) indtastes, der lagres en kopi af
disse i rapportens tekstfil DMT10xx, for at få nye versioner af disse ind i en
rapport er man nødt til at vælge funktion 4, beregninger, og herefter godkende
alle beregningslinier, hvilket lettest gøres ved at taste 99 i OK (J/N/I).
Figure 81 Sletning af
en rapport.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
5.....SLET EN RAPPORT │
│ 1 PRISLISTE
│
│ 2 LAGERVÆRDILISTE
│
│ 3 DÆKNINGSGRADER │
│ 4 PRISBEREGNING
│
│ 5 LABELS TIL LEVERANDØRER │
│ 6 SALDOLISTE
│
│ 7 VARELISTE
│
│ 8 VAREGRUPPELISTE
│
│ 9 LEVERANDØRLISTE
│
│ 10 KURSLISTE
│
│ 11 VARER PR.LEVERANDØR
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│ │
│
│
│RAPPORT NUMMER ? 5 LABELS TIL LEVERANDØRER
SLET (J/N) ?
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
16.5.
Dokumentation af rapportdefinitionerne
Med funktion 8
kan man udskrive dokumentation for rapportdefinitionerne for een eller flere
rapporter.Man bliver bedt om at angive rapportnr., og her kan naturligvis på
normal måde indtastes et rapportnr. Der kan også angives en række rapporter,
hvor hvert rapportnummer adskilles med komma, eller et interval af rapporter
med minus mellem laveste og højeste nr.
F.eks.vil 5, 10‑13,
7 bevirke udskrift af rapporterne 5, 10, 11, 12, 13 og 7.
Figure 82 Udskrift af
definitioner.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
8.....UDSKRIFT AF DEFINITIONER │
│ 1 PRISLISTE
│
│ 2 LAGERVÆRDILISTE
│
│ 3 DÆKNINGSGRADER
│
│ 4 PRISBEREGNING
│
│ 5 LABELS TIL LEVERANDØRER
│
│ 6 SALDOLISTE
│
│ 7 VARELISTE
│
│ 8 VAREGRUPPELISTE │
│ 9 LEVERANDØRLISTE
│
│ 10 KURSLISTE
│
│ 11 VARER PR.LEVERANDØR
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│RAPPORT NUMMER ? 1‑2,12 SKAL
FELTOVERSIGT UDSKRIVES (J/N/S) ? J │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Når man har
angivet den/de rapporter, der skal dokumenteres, skal man svare på spørgsmålet:
SKAL FELTOVERSIGT UDSKRIVES (J/N/S)?
N=Feltoversigt
udskrives ikke.
J=Der udskrives en
oversigt med 1 side pr.refereret kartotek med en liste over felterne i
kartoteket, altså en noget større dokumentation.
S=Som J, for hvert
felt udskrives også den basic variabel, som rapportgeneratoren anvender for
feltet.
D=DUMP, fungerer som
S, efter udskriften af feltoversigten udskrives også et dump af det genererede
program, dog kun hvis et sådant findes.Denne funktion bruges normalt kun i
forbindelse med fejlrapporter eller andre spørgsmål til programmøren.
Figure 83
Rapportdefinitionen for vejede totaler.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DMS.RAPGEN RAPPORT NR.12 VEJET LAGERVÆRDI JAN 14, 1987 11:34:03│O
│
│
O│PRINTER:$LPT STARTPOSITION:001 ANTAL LINIER PR.SIDE:51 │O
│
│
O│KARTOTEK:
1 VA VAREKARTOTEK 8/CH.VAKA# │O
│
│
O│
│O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│1:DATO:#DD * VEJET LAGERVÆRDI * PR.#PD SIDE:#PP│O
│2: │
O│3:VARENR
NAVN KØBSPRIS
BEHOLDNING LAGERVÆRDI VEJET│O
│4: │
O│5:#1 #2 #4 #8 #11 #12 │O
│
1...,....10...,....20...,....30...,....40...,....50...,....60...,....70...,.│
O│
│O
│SELEKTIONER:
│
O│
│O
│BEREGNINGER:
│
O│ #11=#8*#4 LAGERVÆRDI=BEHOLDNING*KØBSPRIS │O
│ #12=#11%#13 VEJET=LAGERVÆRDI%TOTAL
VÆRDI │
O│ #12=FNR(#12) VEJET=FNR(VEJET) │O
│ NÅR 10 KUN FØRSTE PASS ALTID │
O│ #13=#13+#11 TOTAL VÆRDI=TOTAL
VÆRDI+LAGERVÆRDI │O
│
│
O│LISTEN
KRÆVER GENNEMLÆSNING AF KARTOTEKET FOR VEJEDE TOTALER. │O
│TOTALNIVEAUER
│
O│
│O
│ SKAL LISTEN
SORTERES (J/N) ? N │
O│
│O
│ VEJEDE TOTALER
(KRÆVER EXTRA GENNEMLØB) (J/N) ? J │
O│
│O
│ TOTAL‑NIVEAU:
FELTNR. ? 1(1,2) VARENR TOTAL NIVEAU (J/N) ? J │
O│ TOTAL
NAVN ? VAREGR SIDESKIFT (J/N) ?│O
│
│
O│
SKAL TOTALER BEREGNES FØR UDSKRIFT (J/N) ? N │O
│
│
O│
FELTER DER SKAL TOTALISERES:
│O
│ #11
LAGERVÆRDI
│
O│ #12
VEJET
│O
│
│
└──────────────────────────────────────────────────────────────────────────────┘
Figure 84 Feltoversigt
ved dokumentation af en rapport.
┌──────────────────────────────────────────────────────────────────────────────┐
O│KARTOTEK:VA VAREKARTOTEK 8/CH.VAKA# │O
│ 1 VARENR 4
AAAA
│
O│ 2 NAVN 20 AAAAAAAAAAAAAAAAAAAA │O
│ 3 SALGSPRIS 6,2 ######.## │
O│ 4 KØBSPRIS 6,2 ######.## │O
│ 5 SIDSTE KØBSDATO ,6, ##,##,## │
O│ 6 LEV.NR. 3 AAA │O
│ 7 GRUPPENR 2, ## │
O│ 8 BEHOLDNING ‑6, ‑‑‑‑‑‑# │O
│ 9 ALTERNATIV LEV 3, ### │
O│
10 FRIFELT ‑6,2 ‑‑‑‑‑‑#.## │O
│ 11 LAGERVÆRDI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │
O│
12 VEJET ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │O
│ 13 TOTAL VÆRDI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │
O│
14 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │O
│ 15 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │
O│
16 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │O
│ 17 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │
O│
18 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │O
│ 19 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │
O│
20 @FRI ‑9,2 ‑‑‑‑‑‑‑‑‑#.## │O
│ 21 @FRI ‑6, ‑‑‑‑‑‑# │
O│
22 @FRI ‑6, ‑‑‑‑‑‑# │O
│ 23 @FRI ‑6, ‑‑‑‑‑‑# │
O│
24 @FRI ‑6, ‑‑‑‑‑‑# │O
│ 25 @FRI ‑6, ‑‑‑‑‑‑# │
O│
26 @FRI ‑6, ‑‑‑‑‑‑# │O
│ 27 @FRI ‑6, ‑‑‑‑‑‑# │
O│
28 @FRI ‑6, ‑‑‑‑‑‑# │O
│ 29 @FRI ‑6, ‑‑‑‑‑‑# │
O│
30 @FRI ‑6, ‑‑‑‑‑‑# │O
└──────────────────────────────────────────────────────────────────────────────┘
Dokumentationen
udskrives altid på den til skærmen knyttede printer ($LPT), dog kan man i
forbindelse med spørgsmålet om feltoversigt angive en anden printer, såfremt
dette er nødvendigt:
N, $ORDP bevirker
udskrift på printeren $ORDP
N;001131080, $ORDP
sætter også printer‑open parametrene.
Specielt for test
kan lampe 4 (R4) tændes, hvorved dokumentationen udskrives på skærmen.
16.7. Andre
funktioner.
Foruden de normale funktioner 1 til 10 for
vedligeholdelse af rapporter kan man anvende en række specialfunktioner for
kommunikation med printerne, operativsystemet etc.
Figure 85
Rapportgeneratorens funktionsvalg.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN
│
│ KODE FUNKTION │
│ 1......DEFINER
NY RAPPORT
│
│
│
│ 2......DEFINER
SELEKTIONER
│
│
│
│ 3......DEFINER
SORTERING OG TOTALER
│
│
│
│ 4......DEFINER
KALKULATIONER
│
│ │
│ 5......SLET EN
RAPPORT
│
│ │
│ 6......DEFINER
NYT BREV
│
│
│
│ 7......RETTELSE
AF RAPPORT / BREV
│
│
│
│ 8......UDSKRIFT
AF DEFINITIONER
│
│
│
│ 9......START AF
UDSKRIFT
│
│
│
│
10......KOPIERING │
│
F......FORMULARFREMFØRING │
│ STOP...STOP AF
UDSKRIFT
│
│ INDTAST KODE: │
│
│
└────────────────────────────────────────────────────────────────────────────────┘
16.8.1.
Formularfremføring.
F giver 2 siders
formularfremføring på skærmens printer ($LPT).
F1, F2, F3, F4, F5
giver formularfremføring på printer 1‑5 iflg.definitionerne i
DMS.RAPGEN.SYS.
TOFx giver x
siders formularfremføring på skærmens printer ($LPT).
16.8.3. Afslutning.
SLUT bevirker at
rapportgenerator‑sessionen afsluttes og man vender tilbage til den normale
selector, denne er sat op ved hjælp af backchain parameteren i DMS.RAPGEN.SYS.
cr i
funktionsvalget vil også bevirke afslutning.
16.8.5. Skift til
andet system.
SYSTEM giver en
oversigt på skærmen over de forskellige systemer, der er installeret på
maskinen, og man kan herefter udvælge det system, man ønsker at anvende.Denne
kommando anvendes normalt kun når rapportgeneratoren er installeret med flere
systemer f.eks.for at have mere end 88 rapporter.
Rapportgeneratoren
vil flytte det valgte system, sat op med DMS.RAPGEN.SYS, fra den pågældende
record i filen 0/CHSYSTEM ned i common‑area.
16.8.7. Stop af
baggrundsporten.
Ved hjælp af
denne kommando kan man stoppe et program, der kører på baggrunds
(phantom)porten.
Man skal være
yderst varsom med denne kommando, da det er muligt at stoppe et hvilket som
helst program, også selv om dette ikke er et rapportgeneratorprogram, det er
endda muligt at stoppe en skærm, der kører et helt andet program.
For installationer
på STAR systemer er denne kommando derfor ikke tilladt.
STOP Stopper
ethvert program, der måtte køre på phantomporten. Nummeret på phantomporten er
angivet i DMS.RAPGEN.SYS.
STOP EXEp Stopper
ethvert program, der måtte køre på port nr.p. Denne kommando anvendes normalt
kun i forbindelse med store installationer, hvor der anvendes flere
baggrundsporte.
Det må bemærkes,
at før en baggrundsport overhovedet kan anvendes efter at systemet er startet
(IPL), skal denne stoppes.Dette er normalt indlagt i forbindelse med den
normale dagsstart man kan altså også gøres manuelt med STOP kommandoen såfremt
dette ikke skulle være tilfældet.
16.8.9. Jobkø.
Ved hjælp af Q
kommandoen er det muligt at skifte til DMS jobkø programmet, såfremt dette er
installeret på maskinen (dette er ikke det samme som TAMOS jobkø).Rapporter kan
være indsat i denne kø ved hjælp af Q kommandoen i forbindelse med start af en
rapport (funktion 9) ved spørgsmålet START (J/N/S/P).
16.8.11. Scope og
systemprogrammer.
# bevirker chain
til scope såfremt dette er tilladt for det anvendte password i
operativsystemet.
#xxxx bevirker
chain til programmet xxxx.
17. Start af
en rapport.
18.1. Brug af
funktion 9.
Når funktion 9
for start af en rapport vælges får man følgende skærmbillede frem:
Figure 86 Start af
udskrift
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 9.....START AF
UDSKRIFT │
│
│
│
│
│ DAGS DATO ? 060187 │
│
│
│ PR. DATO ? 060187 │
│
│
│ START FRA ?
INDEX: │
│
1:VARENR │
│ STOP VED ?
2:LEVERANDØRNR │
│ │
│
│
│ │
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│LAVESTE TOTAL‑NIVEAU,DER SKAL UDSKRIVES (0‑ 1 , 0=HELE LISTEN)
? 0 │
│START:( J=BAGGRUND, S=SKÆRM, P=SKÆRMPRINTER, N=ANNULER) ? P │
│TESTPRINT (J/N) ?
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
og man indtaster
disse startoplysninger samt bestemmer, hvorvidt rapporten skal køres på skærm
eller printer.
For STAR systemer
vil billedet se således ud:
Figure 87 STAR
systemers opstartsbillede.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 9.....START AF
UDSKRIFT │
│
│
│
│
│ PROGRAM: 1 PRISLISTE │
│
│
│ UDSKRIFT ELLER DANNELSE AF
SPOOL (U/K/D):
│
│ SKAL DEN GAMLE SPOOLFIL
SLETTES (J/N): │
│ RESTART FRA: TIL: │
│ │
│
│
│ DIREKTE/KOPI ELLER UDSKRIFT VIA SPOOL
(D/K/S): │
│
│
│ DAGS DATO (ÅÅMMDD):
│
│ PR. DATO (ÅÅMMDD):
│
│
│
│ FRA OG MED NR.: │
│ TIL OG MED NR.:
│
│
│
│ LAVESTE TOTAL NIVEAU (0‑1): │
│ BAGGRUND (J/N/S):
│
│ TESTPRINT (J/N):
│
│
│
│
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Herefter startes
rapporten, idet rapportgeneratoren første gang en rapport startes vil generere
et basic program til at udskrive denne (hvilket tager ca. 30 sekunder) og save
dette på disken, således at det ligger klart til næste gang rapporten startes.
Ændrer man i rapportdefinitionerne vil dette basic program blive fjernet og
således genereret igen med ændringerne ved næste start.
Idet programmet
genereres foretages en kontrol af, at alle beregningslinier m.v. overholder
basic syntaxen, er dette ikke tilfældet får brugeren en fejlmeddelelse og må
rette definitionen, inden rapporten kan startes. Denne kontrol foretages af
maskinens basic selv, og rapportgeneratoren har således automatisk indbygget de
fremtidige udvidelser, der evt. måtte komme heri.
Køres rapporten på
skærmen bliver man bedt om at taste cr. for hver skærmside. Køres en rapport på
printer via skærmen bliver man blot bedt om at taste cr. ved afslutningen af
rapporten. Køres rapporten på baggrundsporten (phantomporten) får man en
meddelelse på skærmen når udskriften er færdig, også selv om man på dette
tidspunkt ikke skulle befinde sig i rapportgenerator‑systemet.
En rapport kan
startes, før man har defineret denne færdigt, således at man hen ad vejen kan
godkende f.eks. layout før man definerer sine beregninger, eller først definere
en tidskrævende sortering til sidst, når resten af rapporten er godkendt. Det
må altid betragtes som god skik at køre en lille testkørsel på sin nydefinerede
rapport over skærmen indenfor et lille nummerinterval, før man starter en stor
kørsel. Skulle man være så uheldig slet ikke at få nogen records udskrevet, bør
man checke at der indenfor det angivne interval virkelig findes records, der
opfylder de angivne selektions‑kriterier, og eventuelt køre over et
større interval eller kople selektionerne helt fra for test af dette.
I det følgende
beskrives de enkelte parametre i detaljer:
18.2.1. Dags dato
Felterne for
henhv. dags dato og pr. dato udskrives normalt på første overskriftslinie på
rapporten og anvendes ikke til andet, medmindre man har defineret beregninger
eller selektioner på disse. #DD.;
Kvitterer man blot
i dette felt fås datoen fra maskinens indbyggede ur. Normalt vil denne dato
vendes som ÅÅMMDD, for systemer installeret af DMS vil denne dog normalt være
DDMMÅÅ.
Der foretages ikke
nogen decideret datovalidering, man kan altså indtaste datoen retvendt eller
omvendt som man ønsker eller som det passer bedst for de definerede
beregninger.
18.2.3. Pr.dato
Indtastes på
samme måde som dags dato ovenfor.
Pr.datoen anvendes
typisk, såfremt man vil definere beregninger eller selektion på et datofelt.
18.2.5. Start fra og
stop ved
I felterne start
fra og stop ved kan man angive det nummerinterval i kartoteket, hvorpå
rapporten skal køres, f.eks. fra kundenummer til kundenummer Tastes blot cr. i
start Tastes blot cr. i start fra/stop ved køres rapporten på hele kartoteket.
Man kan nøjes med
at indtaste en del af nummeret, idet udskriften altid vil starte fra det nummer,
der er højere end eller lig med det indtastede, og slutte når kartotekets nøgle
bliver større end stop værdien.
Det er nødvendigt,
at man kender lidt til nøgleopbygningen for sine kartoteker for at kunne angive
start og stopværdierne, f.eks. om et kundenr. på 5 cifre indeholder
foranstillede nuller eller ej, da start/stop ellers ikke vil fungere efter
hensigten.
I feltet start fra
kan man desuden angive:
18.2.6.1. x: Valg af index ved start fra.
Arbejder man med
et kartotek med flere index kan man i start fra indtaste f.eks. 2:4711, hvorved
udskriften vil køre iflg. index 2 startende fra nr. 4711. Stop ved angives som
normalt, uden indexnr.
For DATAMASTER
kartoteker vil rapportgeneratoren til højre for start fra feltet vise en
oversigt over de mulige index for det pågældende kartotek. Programmøren har ved
installation mulighed for at indlægge en tilsvarende facilitet for systemets
andre kartoteker, men dette er ikke normalt standard.
18.2.6.3. SORT anvend
samme sortering som sidst
Når man starter
en sorteret rapport vil denne opbygge et sorteringskartotek før selve
udskriften starter, hvilket naturligvis tager noget tid såfremt det er et stort
kartotek, der skal sorteres. Ønsker man senere at køre samme eller en anden
rapport på samme kartotek med samme sortering kan man spare denne sorteringstid
ved at taste SORT i start fra og ingenting i stop ved, hvorved
rapportgeneratoren vil anvende det allerede opbyggede sorteringskartotek.
Det er op til
brugeren selv at sørge for, at sidste sortering virkelig er foregået på samme
kartotek, er dette ikke tilfældet vil udskriften komme i helt tilfældig orden,
eventuelt kan 'nul‑records' blive udskrevet og basic fejl 51 fremkomme
under kørselen.
Man skal være
opmærksom på, at selektionerne på en rapport udføres før sorteringsnøglen
opbygges, er den rapport, der danner sorteringskartoteket, således selekteret,
vil næste rapport, der startes med SORT, kun behandle de records, der opfylder
den første rapports selektionskriterier.
18.2.7. Ekstra data
ved opstart.
Såfremt man i
beregningerne eller selektionerne har anvendt et eller flere af felterne #D1
til #D7 eller #DA1 til #DA7 vil man ved start af rapporten blive bedt om at
indtaste værdierne for disse felter:
Figure 88 Data ved
start
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 1 PRISLISTE 9.....START AF
UDSKRIFT │
│
│
│
│
│ DAGS DATO ? 060187 │
│
│
│ PR. DATO ? 060187 │
│
│
│ START FRA ? INDEX: │
│
1:VARENR │
│ STOP VED ?
2:LEVERANDØRNR │
│
│
│ FRA GRUPPE: 1
│
│ TIL GRUPPE: 5
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│LAVESTE TOTAL‑NIVEAU,DER SKAL UDSKRIVES (0‑ 1 , 0=HELE LISTEN)
? 0 │
│START:( J=BAGGRUND, S=SKÆRM, P=SKÆRMPRINTER, N=ANNULER) ? P │
│TESTPRINT (J/N) ?
│
│
│
│
│
└────────────────────────────────────────────────────────────────────────────────┘
Denne funktion
kan specielt være nyttig til at bestemme selektionernes minimum/maximum idet
rapporten startes.
Man kan få knyttet
en tekst til et sådant felt ved at kalde et af frifelterne #D1tekst, denne
tekst vil så vises istedet for teksten DATA 1 og give operatøren vejledning i,
hvad der skal indtastes.
18.2.9. Advarsel om
sortering/vejede totaler.
Såfremt
rapporten er sorteret eller der er defineret vejede totaler vil man blive
advaret om dette idet rapporten startes, således at man ikke bliver utålmodig
fordi der går et stykke tid, før udskriften starter.
Selvom en rapport
måske kun skal sortere 2 records, skal der først foretages en oprydning af
sorteringskartoteket fra sidste kørsel af en sorteret rapport, og hvis denne
har været på 10.000 records kan det godt tage et par minutter.
Man kan ikke
starte en sorteret rapport, såfremt der allerede kører en rapport, der udfører
sortering, idet sorteringskartoteket i så fald vil være låst.
18.2.11. Laveste total
niveau.
Normalt vil man
blot taste cr.her, hvorved hele rapporten udskrives.
Der er mulighed
for at angive, at man kun ønsker totalerne for en rapport udskrevet, således at
selve specifikationen af de enkelte records i kartoteket udelades.
1 refererer til
første subtotal, 2 til næste og så fremdeles. Er der ikke subtotal niveauer på
rapporten vil 1 bevirke, at kun grande totalen udskrives.
18.2.12.1. Undertrykkelse
af udskrift.
Specielt for
rapportgenerator‑programmer med tilbageskrivning i kartoteket, f.eks. ved
DATAMASTER systemer, bevirker angivelse af laveste total niveau 9 at rapporten
køres helt uden udskrift på printeren, dvs.kun den angivne opdatering
foretages.
18.2.13. Kartoteksnr.
Dette spørgsmål
vil normalt kun fremkomme ved specialinstallationer, f.eks. klientbogføring,
hvor man på samme account har mange forskellige variabter af samme kartotek.
Såfremt
programmøren har defineret et kartoteksnavn, der indeholder ?, vil brugeren
blive bedt om at indtaste kartoteksnummeret ved opstart, det indtastede vil
erstatte ? når kartoteket åbnes.
Herved kan samme
rapport og system køres på mange forskellige kartoteker.
18.2.15. Start på
skærm/printer/baggrundsport.
Man angiver her,
hvorvidt programmet skal køres på skærm eller printer:
J=Ja, rapporten
startes på baggrundsporten (phantomporten) og udskriften kommer på den hertil
knyttede printer. Samtidig med rapporten kører vil skærmen være fri til andet
brug.
S=Skærm, rapporten
køres på skærm uden printer, dvs.listen vises på skærmen.
P=Print, rapporten
køres på skærmen med udskrift på skærmens tildelter printer.
1‑3=Som J,
rapporten startes på den angivne baggrundsport.
Q=Indsæt i jobkø.
Rapporten indsættes i systemets jobkø, enten TAMOS jobkø, såfremt denne er
aktiveret, eller DMS.JOBQUEUE. Se beskrivelsen af jobkøen for yderligere
parametre såsom prioritet for denne kommando.
18.2.17. Testprint
Såfremt man
svarer J til udskrift af testprint vil der udskrives een side af rapporten på
printeren, således at man kan indstille især fortrykte formularer, hvorefter
spørgsmålet om testprint stilles påny, dvs.testprintet kan gentages indtil
formularen er justeret.
Rapporten starter
når man svarer N til testprint.
På systemer med
meget lidt memory (KB) vil testprint af store breve ikke være mulig.
Figure 89 Eksempel på
testprint.
┌──────────────────────────────────────────────────────────────────────────────┐
O│DATO:##.##.## * VARELISTE * PR.##.##.## SIDE:####│O
│
│
O│NR NAVN SALGSPRIS KØBSPRIS
DATO LEV ALT GR BEHOLDNING │O
│
│
O│xxxx
xxxxxxxxxxxxxxxxxxxxx ######.## ######.## ##,##,## xxx ### ## ‑‑‑‑‑‑#
│O
└──────────────────────────────────────────────────────────────────────────────┘
18.3. Generering
af programmet.
Første gang en
rapport startes vil der blive genereret et basic program til at udskrive denne,
programmet saves på disken og kaldes direkte næste gang rapporten startes uden
ændringer. Genereringen foretages i 4 tempi:
Programmet
genereres
Programmet optimeres
Programmet loades
Programmet startes
Under genereringen
kombineres brugerens rapportdefinitioner såsom beregninger m.v. med
rapportgeneratorens rutiner til et egentligt basic program.
Under optimeringen
dannes print linier for rapportens layout m.v., dvs. samtlige
parameterstyringer af rapporten fjernes for at gøre programmet hurtigere. Denne
fase kan udelades såfremt en parameter i rapportgeneratorsystemet angiver
dette.
Ved loadningen
overgives det færdige program til operativsystemets basic, der foretager
kontrol af de indtastede beregninger m.m. og saver dette på disken såfremt
programmet er fejlfrit. Denne save kan foregå normalt eller optimeret iflg. en
parameter i rapportgeneratorsystemet. Når programmet startes kaldes dette
basicprogram og brugerens forskellige kartoteker åbnes via et specielt
opstartsmodul. foregår i DMS.RAPGEN.99.;
18.5. Betjening
af baggrundsporte (phantomporte).
En baggrundsport
fungerer som en ekstra skærm, som rapporten kan startes på, og samtidig vil
skærmen være fri til anden brug.
Normalt vil der
kun være een af denne slags baggrundsporte på systemet, og denne vil have
skærmnummer 1.
Programmøren kan
om ønsket configurere flere baggrundsporte, og hvert rappportgeneratorsystem
sættes herefter op med sin normale baggrundsport, hvor udskriften starter, når
man svarer J til start. Desuden kan man dirigere udskriften til en bestemt port
blot ved at indtaste nummeret på den pågældende istedet for J.
Såfremt der
allerede kører et program på baggrundsporten vil man få meddelelse om at
baggrundsporten er optaget og blive spurgt om man ønsker at prøve igen, dvs.
man må afvente, at det kørende program bliver færdigt, eller evt. afbryde
opstarten ved at trykke escape.
Et program, der
kører på en baggrundsport, kan afbrydes med STOP kommandoen (se denne) eller
TAMOS funktionen for spørge porte.
Når et
baggrundsprogram er færdigt gives meddelelse om dette til den skærm, der
startede programmet.
18.7.
Lampefunktioner
Når en rapport
køres på skærmen har man mulighed for at anvende følgende lampe‑taster:
R1 = lampe 1: Den
kartoteksnøgle, der pt.behandles, vises nederst på skærmen.
R2 = lampe 2: Man
bliver bedt om at indtaste næste nøgle.
Ved at trykke R1
ned kan man specielt under sorteringen af en rapport se hvor langt denne er
kommet. Desuden kan denne funktion anvendes, såfremt man er i tvivl om
nøgleopbygningen for det pågældende kartotek.
Ved at aktivere R2
kan man springe i nummerrækken for udskriften, denne funktion anvendes specielt
for test af rapporter.
19.
Meddelelser
20.1.
Fejlmeddelelser.
20.2.1. HJÆLP ‑
PRINTEREN ER IKKE KLAR!
Den angivne
printer er ikke tændt/mangler papir eller farvebånd.
Printeren kan
eventuelt også være optaget af en anden bruger.
Printeren
bestemmes af TAMOS printertildeling, evt.mangler denne, specielt for phantom‑port
1, eller er sat forkert op.
Fejlen kan også
forekomme hvis man forsøger at skrive længere linier end printeren er beregnet
til, typisk 132 eller 80 karakterer.
20.2.3. DETTE PROGRAM
FINDES IKKE.
En rapport skal
være defineret med funktion 1 eller 6 (brev), før man kan anvende de andre
funktioner på denne.
20.2.5. DENNE RAPPORT
ER IKKE DEFINERET.
En rapport skal
være defineret med funktion 1 eller 6 (brev), før man kan anvende de andre
funktioner på denne.
20.2.7. DENNE RAPPORT
ER ALLEREDE DEFINERET.
Man kan ikke
definere en rapport med funktion 1 eller 6 (brev), når rapportnummeret er
anvendt i forvejen.
Eventuelt må den
gamle rapport først slettes med funktion 5.
Ligeledes kan man
ikke kopiere til en rapport, der allerede er defineret, med funktion 10.
20.2.9. DER ER IKKE
FLERE FRIE RAPPORTER.
Antallet af
rapporter pr.system er bestemt ved installation og kan maksimalt være 88 af
hensyn til skærmbredden.
Ved sletning af
rapporter med funktion 5 skaffes der plads til nye, idet de gamle definitioner
fjernes.
Antallet af
rapporter kan evt.udvides med DMS.RAPGEN.SYS, ligeledes kan man evt.oprette op
til 100 forskellige systemer med max.88 rapporter i hver.
20.2.11. DENNE RAPPORT
ER IKKE DEFINERET MED DENNE RAPPORTGENERATOR.
Rapportdefinitionen er for gammel til at kunne behandles af denne version
af DMS.RAPGEN.
Kan kun forekomme
ved opgradering af systemer til nyere version, såfremt disse er installeret før
1/1‑1978.Alle nyere versioner/releases er baglæns kompatible.
20.2.13. DETTE ER IKKE
DIN RAPPORT.
Ved oprettelse
af en ny rapport med funktion 1 eller 6 (brev), samt ved kopiering til en
rapport med funktion 10, kan der knyttes et password til en rapport.
Dette password
skal herefter angives ved enhver rettelse af rapporten. Såfremt control E er
anvendt før og efter passwordet skal dette også angives ved start af
udskriften. Fejlmeddelelsen indikerer forkert indtastning af passwordet (også
kaldet brugernavn).
20.2.15. DENNE RAPPORT
ER I BRUG AF EN ANDEN.
En anden skærm
er i gang med at definere rapporten, og der er således ikke tilgang til det
valgte rapportnummer fra andre skærme. Såfremt man afbryder en
rapportdefinition med escape vil det rapportnummer, man var igang med at
definere, forblive reserveret for skærmen og kan ikke fjernes på andre måder
end ved at definere en rapport fra samme skærm og herefter slette denne. Dog
vil en udvidelse af rapportfilen med DMS.RAPGEN.SYS fjerne alle sådanne
reservationer automatisk, da det må antages at systemet er lukket, når en sådan
operation foretages.
20.2.17. FORKERT
SYSTEMNUMMER.
Med kommandoen
SYSTEM er det muligt at skifte system i rapportgeneratoren, det angivne
systemnummer er ikke defineret med DMS.RAPGEN.SYS. Ligeledes kan
fejlmeddelelsen fremkomme ved kopiering af en rapport til et andet system med
funktion 10, idet til rapportnummeret her kan angives som systemnr., rapportnr.
20.2.19.
RAPPORTGENERATOREN ER I BRUG AF EN ANDEN.
Ved installation
af rapportgeneratoren oprettes et antal arbejdsfiler (maksimalt 9) med
DMS.RAPGEN.SYS, ved kørsel af rapportgeneratoren kræver hver skærm tilgang til
een sådan arbejdsfil. Systemet er således installeret med for få arbejdsfiler,
hvilket kan ændres med DMS.RAPGEN.SYS, hver kræver ca.100 sectores diskplads.
20.2.21.
10.1.11. RING VENLIGST
TIL INSTALLATIONSGRUPPEN.
Denne
fejlmeddelelse kan kun forekomme på tidligere versioner af DMS.RAPGEN ved
uoverensstemmelse mellem discadressen for rapportgeneratoren (RDA for HBA af
DMS.RAPGEN) ved installation og ved kørsel. Fejlen afhjælpes ved kørsel af
DMS.RAPGEN.SYS på det givne system. Fejlen kan opstå ved uautoriseret kopiering
af rapportgeneratoren eller ved CLEANUP.
20.2.23. RING VENLIGST
TIL SERVICEAFDELINGEN.
Udløbsdatoen sat
med DMS.RAPGEN.SYS er overskredet. Det anbefales at sætte denne til 999999, med
mindre der er tale om prøveinstallation eller tidsbegrænset lejekontrakt.
20.2.25.
10.1.13. DETTE KARTOTEK
FINDES IKKE.
Forsøg på at
definere en rapport på, eller knytte en forbindelse til, et kartotek, der ikke
eksisterer.
20.2.27. DETTE KARTOTEK
ER IKKE IMPLEMENTERET.
Forsøg på at
definere en rapport på et kartotek, der er til stede i systemet, men ikke
tilladt for rapportgeneratoren (utility code i DMFILES skal være 999 for
tilladelse, sættes ved installation).
20.2.29. DETTE KARTOTEK
ER IKKE IMPLEMENTERET (READ MANGLER).
Tekstfilen
indeholdende READ‑statements er ikke tilstede (eller er evt. protected på
gamle operativsystemer op til 5.0). Denne tekstfil lægges op ved installation
og skal placeres på samme lu som DMFILES og kan i rækkefølge hedde:
filnavn.READ, DMREAD.xx eller READ.xx hvor DM er prefix for files.
20.2.31. DETTE KARTOTEK
ER IKKE IMPLEMENTERET (DRN MANGLER).
Kartoteket er
ikke korrekt tilmeldt rapportgeneratoren, idet datadefinitions‑nummeret
(DRN) mangler i DMFILES, til trods for utility koden er sat korrekt og read
statements findes.
20.2.33. DENNE RAPPORT
KAN IKKE STARTES.
Forsøg på start
af en rapport, hvor tekstfilen DMT10xx ikke findes, f.eks.kan et brev defineret
med flere versioner kun startes ved at vælge grundversionen, en underversion er
ikke en selvstændig rapport.
20.2.35. RAPPORTFILEN ER
FULD.
Det er ikke
sammenhængende (continous) plads nok i rapportfilen til at lagre denne rapport,
kan specielt fremkomme ved store breve eller hvis antallet af records i
DMREPORT ved installation er defineret for lille i forhold til antallet af
rapporter (normalt 4 gange). Rapportfilen må udvides med DMS.RAPGEN.SYS,
hvorved der også samtidig udføres CLEANUP på denne, idet den frigivne plads for
slettede rapporter gøres sammenhængende. Det er således ikke sikkert at det
hjælper at slette rapporter, da den frigivne plads ikke nødvendigvis bliver
sammenhængende.
20.2.37. FORKERT
KARAKTER I NUMERISK FELT.
Forekommer kun
på tidligere versioner af DMS.RAPGEN ved forsøg på selektion på et numerisk
felt og angivelse af karakterer i minimum/maksimum.I nyere versioner kan
minimum/maksimum være beregninger, hvorfor denne kontrol ikke udføres.
20.2.39. FORKERT RAPPORTNR.
Der er ved
installation ikke defineret så mange rapporter på systemet. Evt.kan DMREPORT
udvides med DMS.RAPGEN.SYS, eller der kan defineres flere systemer, idet max.er
88 rapporter pr.system af hensyn til skærmbredden.
20.2.41. DER KAN IKKE
SORTERES SAMTIDIG MED DEFINITION AF SORTERING.
Der kører en
sorteret rapport og denne har låst sorteringskartoteket, således at en anden
rapport ikke fejlagtigt kan destruere dette. Derfor kan sortering heller ikke
defineres, idet dette kræver åbning af sorteringskartoteket for at aflæse
nøglelængden, der kan være variabel.
20.2.43. SORTERING ER
IKKE IMPLEMENTERET.
Der er ikke
oprettet noget sorteringskartotek (DMSORTWORK) på systemet ved installation,
typisk af hensyn til diskplads. Dette kartotek kan oprettes med BUILDXF med en
keylængde på 10‑15 words, recordlængde 2 og antal records = det maksimale
antal records, der skal kunne sorteres på een gang. Evt.er sorteringskartoteket
protected (på ældre versioner af operativsystemet).
20.2.45. FORKERT FELTNR.
Der er ikke så
mange felter i kartoteket,
20.2.47. FORKERT ANTAL.
Når man
definerer gruppe‑totaler skal antallet af mulige koder i gruppen være
større end 0.
20.2.49. PROGRAMMET
BLIVER FOR STORT.
Fremkommer
specielt ved definition af rapporter med mange felter, der skal totaliseres
evt.i mange niveauer og store grupper. Den maksimale størrelse er bestemt af
active file size (partition size), der er angivet for systemet i
DMS.RAPGEN.SYS. Evt.må antallet af felter, der totaliseres, antallet af
subtotalniveauer eller antallet af grupper/koder i hver gruppetotal skæres ned.
Det vil også hjælpe at angive en mindre præcision for totalfelterne, idet den
normale er maskinens største, nemlig op til 16 cifre svarende til 4 ord.Dette
gøres ved i FELTER DER SKAL TOTALISERES:FELTNR: at indtaste enten 3% (max.10
cifre) eller 2% (max.6 cifre).Overskrides antallet af cifre i en total vil de
mindst betydende cifre blive 0, men totalen vil stadig være fornuftig, dog med
mindre præcision.Det må bemærkes, at 'udefinerede gruppetotaler' er temmelig
pladskrævende for et program.
20.2.51. DETTE FELT
TOTALISERES ALLEREDE.
Forsøg på at
definere total for et felt 2 gange.
20.2.53. BAGGRUNDSPORTEN
ER OPTAGET, PRØV IGEN (J/N).
Det er ikke
muligt at starte programmet på baggrundsporten (phantomporten), da der allerede
kører et program her. Afvent evt.programmet bliver færdigt og svar J eller
afbryd opstarten med escape og kør fra skærmen istedet. Det må bemærkes, at
efter hver start af maskinen (IPL) kræver NIROS, at phantomporten stoppes før
noget program kan startes herpå, og dette bør være indlagt i system ets
opstartsrutine..Evt.kan rapportgeneratorens STOP kommando anvendes, men pas på
ikke uhensigtsmæssigt at stoppe et kørende program.
20.2.55. LINIEN ER FOR
LANG.
Den maksimale
linielængde er 175 karakterer eller mindre, afhængig af den valgte printer.
20.2.57. BASIC FEJL
NR.xxxx I LINIE NR.xxxx.
Se efterfølgende
liste over basic fejl. Meddelelsen vil normalt blive efterfulgt af den
beregningslinie, hvor fejlen er opstået, således at fejlfinding er enkel.
Kontrol af rigtig indtastning ved beregninger etc.foretages først ved start og
generering af programmet og resulterer således i fejlmeddelelser på dette
tidspunkt.
20.2.59. BASIC FEJL
NR.xxxx i LINIE NR.xxxx I DMS.RAPGEN.xxx.
Se næstfølgende
liste over basic fejl. Check installationen, specielt coresize i DMS.RAPGEN.SYS
ikke er større end partition size (active file size), og at antallet af data
files i SYSMOD er tilstrækkeligt stort (20). Er dette i orden må fejlen
rapporteres hertil med angivelse af hvordan denne fremkommer.
20.2.61. BEKLAGER ‑
DER ER IKKE NOK CORE FOR TESTPRINT.
Testprint kræver
noget mere plads end selve kørselen af rapporten, specielt for store breve.
Undlad at anvende testprint for denne rapport eller sæt active file size op med
SYSMOD/DMS.RAPGEN.SYS.
20.2.63. FEJL UNDER
SORTERING, STATUS=x.
Der er opstået
en fejl ved indsættelse af en nøgle i sorteringskartoteket DMSORTWORK, den
angivne status er fejlkoden fra search kommandoen. Normalt opstår denne fejl
kun når sorteringskartoteket er for lille, hvorved status 2 eller 3
returneres.Man må så enten selektere sin rapport eller vælge et mindre
interval, således at det ikke er så mange records der skal sorteres, den
rigtige løsning er dog nok at bygge et større sorteringskartotek (med BUILDXF,
recordlen=2, keylen=f.eks.10).Desværre forekommer der en fejl i visse
operativsystemer, således at status 5 returneres, hvorefter
sorteringskartoteket er ødelagt når det een gang er løbet fuldt (ved næste
forsøg på sortering frem kommer basic fejl 79).I dette tilfælde er der ikke
andet at gøre end at bygge et nyt sorteringskartotek.
20.2.65. FUNKTION x KAN
IKKE UDFØRES PÅ DENNE RAPPORT.
Fremkommer ved
forsøg på definition af selektioner, beregninger etc.på en underversion af et
brev i flere versioner.Disse definitioner skal indlægges på
hovedversionen.Fejlmeddelelsen fremkommer når definitionstekstfilen DMT10xx for
rapporten ikke findes.
20.2.67. DISSE RAPPORTER
ER IKKE FRIE.
Ved definition
af et brev i flere versioner skal de næste rapporter være frie. Defineres
f.eks.rapport nr.10 som et brev i 4 versioner skal rapporterne 10 til 13 alle
være frie.
20.2.69. FORKERT FORMAT.
Ved angivelse af
et format for et frifelt er dette ikke korrekt. Alfafelter defineres som
f.eks.10 numeriske felter som f.eks.3, eller 8, 2 evt. ‑8, 2 eller , 8,
2.
20.2.71. FORKERT
FELTNUMMER, SKAL VÆRE MELLEM 1 OG xx.
Forkert
feltnr.indtastet.
20.2.73. DER ER INGEN
TOTALER PÅ BREVE.
Forsøg på at
definere totaler på en rapport defineret med funktion 6 som et brev.Der kan kun
defineres totaler på udskrifter defineret som normale lister med funktion 1.
20.2.75. SORTERINGSNØGLE
FORKORTET TIL xx KARAKTERER.
Man har
defineret f.eks.sortering på et navnefelt på 32 karakterer, hvor der maksimalt
kan være 27 karakterer i en nøgle.Sorteringen vil foregå korrekt, dog kun på de
første 27 karakterer.Længden af sorteringsnøglen bestemmes af key‑længden
på DMSORTWORK og er maksimalt denne minus 3 karakterer.
20.2.77. DMS.RAPGEN ER
IKKE INSTALLERET.
(Error #xx AT
xxxx FILE: xxxxxxxxx).
Fejl ved åbning af
en af rapportgeneratorens systemkartoteker ved start af rapportgeneratoren,
f.eks.fil‑ eller felt‑definitionskartotekerne. Rapportgeneratoren
kan ikke anvendes før DMS.RAPGEN.SYS er sat korrekt op.
20.3. SAVE
fejlnumre.
Save fejl kan
forekomme i det øjeblik rapportgeneratoren forsøger at lagre det genererede
program på disken, typisk på grund af manglende diskplads.
20.4.1. SAVE FEJL
NR.104.
Save fejl er
generelt beskrevet i basic håndbogen under SAVE processoren. Save fejl 104 indikerer
forkert cost/protection eller lignende og fremkommer normalt kun ved flytning
af en ældre rapportgenerator til operativsystem 5.0 eller nyere, idet det ikke
her er tilladt at save et program med partition size 0. Udskift
rapportgeneratoren til nyere version eller indlæg evt.rettelsesblad 6 af 15/2‑84
punkt 4 i DMS.RAPGEN.091 stat.500.
20.4.3. SAVE FEJL
NR.108.
Der er ikke
plads på disken til at save dette program, evt.for ældre operativ systemer, er
der ikke givet plads nok med utility til den aktuelle account. Fejlen afhjælpes
bedst ved at skaffe den fornødne diskplads, dog vil sletning af rapporter
hjælpe midlertidigt. Disse kan eventuelt slettes ved at vælge funktion 5 for
sletning og herefter svare N til at slette, idet det genererede basic‑program
så vil blive slettet og frigive diskplads, dette vil blive dannet igen ved
næste start af rapporten. Evt.kan antallet af savede rapporter i DMS.RAPGEN.SYS
sættes ned, dog på bekostning af hastighed, idet rapporter over et her
defineret nummer i så fald genereres hver gang disse startes.
20.5. Basic
fejlnumre.
I det følgende
beskrives de hyppigst forekommende BASIC fejl, og muligheder for at afhjælpe
disse. I øvrigt henvises til BASIC manualen, hvor samtlige fejl er beskrevet
bagerst.
Fejlmeddelelsen
kan se ud som f.eks.:
Figure 90 Eksempel på
BASIC fejlmeddelelse.
┌────────────────────────────────────────────────────────────────────────────────┐
│DMS.RAPGEN 2
LAGERVÆRDILISTE │
│
│
│
│
│
│
│
│
│
│
│
│
│
│
│ │
│
│
│ │
│ ‑
PROGRAMMET GENERERES ‑ V E N T... │
│ ‑
PROGRAMMET OPTIMERES ‑ V E N T... │
│ ‑
PROGRAMMET LOADES ‑ V E N T... │
│
#11=(#8*#4 │
│
│
│
│
│
BASIC FEJL NR. 11 I LINIE NR. 5201 │
│
│
│
FORKERT PARANTES. │
│
│
│
│
│
│
│TAST CR.
│
│ │
└────────────────────────────────────────────────────────────────────────────────┘
Man får altså
oplysning om fejlnummeret og dette oversat til klar tekst, foruden
rapportgeneratoren fremfinder den beregningslinie, hvori fejlen forekommer.
20.6.1. Nr.1
Syntaxfejl.
Maskinen forstår
ikke beregningslinien, f.eks. er der skrevet to gangetegn efter hinanden eller
en ulovlig tekst, eventuelt mangler man 'felt=' i en beregning.
20.6.3. Nr.2 Forkert
alfanumerisk tekstbehandling.
Når man udfører
beregninger med et alfanumerisk tekstfelt skal værdier sættes i gåseøjne og
numeriske værdier må ikke indgå.
Typisk er
selektion på et alfanumerisk felt defineret uden gåseøjne om værdien (skal være
f.eks. "A" som minimum) tidligere versioner.;
Et alfanumerisk
felt, der indeholder et tal, som man ønsker at anvende i en beregning, må
konverteres til et numerisk felt først ved f.eks. #50=#2, hvorefter man kan
regne videre på det numeriske felt. Se også afsnittet om alfanumeriske felter
under beregningerne.
20.6.5. Nr.3
Programmet er for stort.
Rapportgeneratoren vil normalt ikke tillade brugeren at definere et for
stort program, idet antallet af totalniveauer/grupper kontrolleres op mod det
ved installation angivne maksimum KB. Skulle fejlen alligevel forekomme må
antallet af totaler sættes ned (se afsnittet om totaler), eller teksten på et
stort brev må reduceres. Det letteste er dog at udvide maskinens interne lager,
kontakt evt. programmør vedr. dette.
Forekommer fejlen
under definition af en rapport er maksimum KB angivet større end det egentlig
er ved installationen
På nyere
operativsystemer (5.0 ff.) afbrydes programmet uden fejlmeddelelse og man
vender tilbage til TAMOS selektoren umiddelbart, fejlen kan i så fald aflæses i
systemets logfil.
20.6.7. Nr.5 Forkert
tegn.
Svarer til fejl
1, syntaxfejl.
20.6.9. Nr.9 Forkert
ord.
Svarer til fejl
1, syntaxfejl.;
20.6.11. Nr.11 Forkert
parantes‑sætning.
Antal højreparanteser
svarer ikke til antal venstreparanteser i en beregningslinie.
20.6.13. Nr.15 Division
med 0 eller aritmetisk overflow.
Man må aldrig
dividere med 0, se afsnittet om division og procentberegninger. Selv om listen
er selekteret således at man ikke burde gøre dette, udføres beregningerne for
alle records, også de, der ikke opfylder selektioner.
Ved beregning på
et kartoteks felter, f.eks. for tilbageskrivning, kan værdien for et 1‑ords
felt ikke overskride +/‑7999.
20.6.15. Nr.18 For
mange FOR/NEXT løkker.
Kan forekomme
ved installation af tidligere versioner af rapportgeneratoren på nyere
operativsystemer (5.1 ff.). Udskift rapportgeneratoren med nyeste version.
20.6.17. Nr.25
Alfanumerisk felt (eller matrix) ikke dimensioneret.
Ved reference
til felter fra et andet kartotek skal beregningerne indeholde READ af dette
kartotek, og denne linie skal placeres før der regnes videre på kartotekets
felter.
20.6.19. Nr.26 Logisk
enhed er ikke aktiv.
Ved start af en
rapport forsøges på at åbne et kartotek på en disk (lu) , der ikke er
tilgængelig. Evt. er installationen af dette kartotek ikke foretaget korrekt.
20.6.21.
10.3.11. Nr.28 Forkert
værdi for index,kanalnr. eller signal‑parameter.
Forekommer kun
ved helt specielle beregninger.
20.6.23. Nr.30 FN
funktion ikke defineret.
Stavefejl ved
kald af basicfunktion, f.eks. FNE(#50).
20.6.25.
10.3.13. Nr.42 Kartoteket
findes ikke.
Når rapporten
startes og kartoteket åbnes kan dette ikke findes. Evt. er der monteret en
forkert disk, kartoteket er ikke tilgængeligt på denne account eller
installationen af kartoteket er ikke korrekt udført.
20.6.27. Nr.45
Kartoteket er læsebeskyttet.
Forekommer kun
på operativsystemer før 5.0 og indikerer, at protektion for kartoteket er sat,
dvs. dette er ikke tilgængeligt fra denne account. Anvend den rigtige account
eller kontakt programmør for at få dette ændret, da der kan være en begrundelse
for beskyttelsen.
20.6.29. Nr.47 Disken er
fuld.
Kan forekomme,
såfremt der ikke er plads til et af rapportgeneratorens arbejdskartoteker,
f.eks. under generering af et program. Der må skaffes fri plads på disken, evt.
kan rapportgeneratoren flyttes til en anden disk.
20.6.31. Nr.50
Kartoteket er i brug af en anden.
Kartoteket er
låst for opdatering fra en anden skærm.
Specielt kan man
ikke køre flere sorterede rapporter samtidig, se afsnittet om sortering.
20.6.33. Nr.51 Forkert
recordnr.
Kartotekets
index defekt, kontakt programmør. Evt. er SORT anvendt til opstart, uden at
sorteringskartoteket stemmer overens med rapportens kartotek, start da
rapporten normalt uden SORT. På ældre operativsystemer (3.3) kan fejlen også
blot betyde, at printeren ikke er klar.
20.6.35. Nr.52 Record
findes ikke.
Som fejlnr., 51.
20.6.37. Nr.73 Forkert
parameter.
Check
printertildelingen i TAMOS samt evt. om den angivne printer er aktiveret i
SYSMOD. Fejlen kan forekomme ved forsøg på at skrive for bredt på en printer
eller hvis karakterstørrelsen i TAMOS er defineret for en printer uden denne
facilitet.
Fejlen kan også
forekomme, såfremt sorteringskartoteket een gang er løbet fuldt, pga. en fejl i
operativsystemet. Det vil være nødvendigt at slette dette og oprette et nyt.
Figurer
Figure 1
Rapportgeneratorens funktionsvalg......................................................................................................................................
11
Figure 2 Kartoteker benyttet til eksemplerne........................................................................................................................................ 12
Figure 3 VA Varekartoteket..................................................................................................................................................................... 12
Figure 4 LE Leverandørkartoteket.......................................................................................................................................................... 12
Figure 5 KU Valutakurskartotek............................................................................................................................................................. 13
Figure 6 GR Varegruppekartoteket......................................................................................................................................................... 13
Figure 7 Vare‑kartoteket........................................................................................................................................................................... 13
Figure 8 Leverandør‑kartoteket.............................................................................................................................................................. 13
Figure 9 Kurs‑kartoteket.......................................................................................................................................................................... 13
Figure 10 Varegruppe‑kartoteket............................................................................................................................................................. 13
Figure 11 Tastaturplan for rapportgeneratoren..................................................................................................................................... 14
Figure 12 Diskplads................................................................................................................................................................................... 15
Figure 13 Rapportoversigt........................................................................................................................................................................ 20
Figure 14 Kartoteker.................................................................................................................................................................................. 21
Figure 15 Rapportens stamoplysninger................................................................................................................................................. 22
Figure 16 TAMOS selektor definition.................................................................................................................................................... 24
Figure 17 Rapportlinier.............................................................................................................................................................................. 24
Figure 18 Den færdige udskrift................................................................................................................................................................ 25
Figure 19 Definition af feltformatet......................................................................................................................................................... 28
Figure 20 Automatiske totaler.................................................................................................................................................................. 29
Figure 21 Leverandørlisten, kun saldi over 500
kr.udskrives.............................................................................................................. 33
Figure 22 Definition af selektioner.......................................................................................................................................................... 33
Figure 23 Beregninger i selektionerne.................................................................................................................................................... 34
Figure 24 Beregninger............................................................................................................................................................................... 39
Figure 25 Indtastning af en beregning................................................................................................................................................... 40
Figure 26 Ændring af en beregning......................................................................................................................................................... 40
Figure 27 NÅR, hvornår skal der beregnes............................................................................................................................................ 49
Figure 28 OCR checkciffer for girokort................................................................................................................................................... 50
Figure 29 Modulus 11 check (f.eks.personnummer)............................................................................................................................. 50
Figure 30 Beregning af arbejdsdage....................................................................................................................................................... 51
Figure 31 Udplukning af for‑ og efternavne.......................................................................................................................................... 51
Figure 32 Udplukning af for‑ og efternavne.......................................................................................................................................... 52
Figure 33 Fastlåsning af start/stop......................................................................................................................................................... 52
Figure 34 Opbygning af sorteringsnøgle............................................................................................................................................... 57
Figure 35 Liste med subtotaler, sorteret efter
varegruppe................................................................................................................... 58
Figure 36 Varer sorteret efter primær og sekundær
leverandør........................................................................................................... 60
Figure 37 Definition af subtotalniveau................................................................................................................................................... 60
Figure 38 Udskrift med subtotaler........................................................................................................................................................... 61
Figure 39 Udskrift kun med subtotaler................................................................................................................................................... 61
Figure 40 Udskrift med vejede totaler og subtotaler............................................................................................................................ 62
Figure 41 Rapportdefinitionen for vejede totaler.................................................................................................................................. 63
Figure 42 Behandling af en rapport......................................................................................................................................................... 64
Figure 43 Listen uden beregnede totaler, dækningsgrad
er forkert................................................................................................... 65
Figure 44 Listen med beregnede totaler, lagerværdi er
forkert............................................................................................................ 66
Figure 45 Listen med beregnede totaler og NÅR
beregninger........................................................................................................... 66
Figure 46 Rapportdefinitionen for beregnede totaler........................................................................................................................... 66
Figure 47 Felter, der skal totaliseres........................................................................................................................................................ 67
Figure 48 Eksempel på gruppetotaler...................................................................................................................................................... 68
Figure 49 Definition af gruppetotaler...................................................................................................................................................... 69
Figure 50 Eksempel på flere grupper, den sidste
'udefineret'.............................................................................................................. 70
Figure 51 Kartoteksoversigt ved brug af hjælp‑funktionen................................................................................................................ 73
Figure 52 Hjælp for et enkelt kartotek..................................................................................................................................................... 74
Figure 53 Udvidet hjælp ved indtastning af VA01............................................................................................................................... 74
Figure 54 Saldoliste med kursomregning............................................................................................................................................... 77
Figure 55 Beregning af ny pris udfra kurs og
prisfaktor...................................................................................................................... 77
Figure 56 Prisberegning med READ af flere kartoteker........................................................................................................................ 77
Figure 57 Prisberegningen uden automatiske
forbindelser................................................................................................................. 78
Figure 58 Opslag i samme kartotek flere gange..................................................................................................................................... 78
Figure 59 Alternative leverandører:flere opslag i samme
kartotek..................................................................................................... 79
Figure 60 Eksempel på gruppetotaler...................................................................................................................................................... 79
Figure 61 READ i forbindelse med totaler.............................................................................................................................................. 79
Figure 62 Total lagerværdi opsamlet med START/NEXT/OM........................................................................................................... 80
Figure 63 Rapportdefinitionen for summering af
lagerværdi............................................................................................................... 80
Figure 64 Flere løkker af START/NEXT/OM inden i
hinanden.......................................................................................................... 81
Figure 65 Leverandører ikke aktive siden d.30/6‑1986.......................................................................................................................... 81
Figure 66 Selektion i forbindelse med START/NEXT/OM.................................................................................................................. 82
Figure 67 Varer pr.leverandør med READH og LINIE.......................................................................................................................... 82
Figure 68 Selektion på varegruppe > 0................................................................................................................................................... 83
Figure 69 Selektion i forbindelse med READH/LINIE.......................................................................................................................... 83
Figure 70 Totaler ved START/NEXT/OM............................................................................................................................................. 84
Figure 71 Felter........................................................................................................................................................................................... 85
Figure 72 Funktioner................................................................................................................................................................................. 85
Figure 73 Eksempler på nøgleopbygninger........................................................................................................................................... 85
Figure 74 Definition af et brev................................................................................................................................................................. 90
Figure 75 Ændring af en rapport.............................................................................................................................................................. 91
Figure 76 RASTER kommandoen aktiveret............................................................................................................................................ 92
Figure 77 Kommandoen mode 0,feltnumre............................................................................................................................................. 93
Figure 78 Definition af brev i flere versioner......................................................................................................................................... 95
Figure 79 Kopiering af en rapport........................................................................................................................................................... 99
Figure 80 Kopiering af en rapport........................................................................................................................................................... 99
Figure 81 Sletning af en rapport............................................................................................................................................................ 100
Figure 82 Udskrift af definitioner........................................................................................................................................................... 100
Figure 83 Rapportdefinitionen for vejede totaler................................................................................................................................ 101
Figure 84 Feltoversigt ved dokumentation af en rapport.................................................................................................................. 102
Figure 85 Rapportgeneratorens funktionsvalg................................................................................................................................... 103
Figure 86 Start af udskrift....................................................................................................................................................................... 107
Figure 87 STAR systemers opstartsbillede......................................................................................................................................... 107
Figure 88 Data ved start.......................................................................................................................................................................... 109
Figure 89 Eksempel på testprint............................................................................................................................................................. 111
Figure 90 Eksempel på BASIC fejlmeddelelse..................................................................................................................................... 121
Stikordsregister