DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦53cbce649⟧ TextFile

    Length: 2528 (0x9e0)
    Types: TextFile
    Notes: Mikados_K
    Names: »PERSONNU.K«

Derivation

└─⟦4cd80c18f⟧ Bits:30003895/4xCOMAL3a.imd 4 * COMAL - SPC/1 - Disketter til bogen
    └─⟦this⟧ »PERSONNU.K« 
└─⟦bcf7b34c7⟧ Bits:30003895/4xCOMAL2.imd 4 * COMAL - SPC/1 - Disketter til bogen
    └─⟦this⟧ »PERSONNU.K« 

Mikados K File

0010 // ------------------ personnu -----------------------
0020 // Programmet kontrollerer om et opgivet personnummer er korrekt
0030 // Datoens gyldighed kontrolleres også
0040 // 
0041 INTEGER TRUE,FALSE
0042 TRUE:=1;FALSE:=0
0050 PROC CPR_CHECK(REF CHTAL$)
0060 SUM:=0;TEST:=TRUE
0070 FOR I:=1 TO 7 DO 
0080 SUM:=SUM+ASC(CHTAL$(11-I))*I
0090 NEXT I
0100 FOR I:=2 TO 4 DO 
0110 SUM:=SUM+ASC(CHTAL$(5-I))*I
0120 NEXT I
0130 IF SUM MOD 11<>0 THEN TEST:=FALSE
0140 DATO:=ASC(CHTAL$(1:2))
0150 MÅNED:=ASC(CHTAL$(3:2))
0160 ÅR:=ASC(CHTAL$(5:2))
0170 IF DATO=0 OR DATO>31 OR MÅNED=0 OR MÅNED>12 THEN TEST:=FALSE
0180 RESTORE 
0190 DATA 4,6,9,11
0200 FOR I:=1 TO 4 DO 
0210 READ KORTMÅNED
0220 IF KORTMÅNED=MÅNED AND DATO=31 THEN TEST:=FALSE
0230 NEXT I
0240 IF MÅNED=2 AND DATO>29 THEN TEST:=FALSE
0250 IF MÅNED=2 AND DATO=29 AND (ÅR MOD 4<>0 OR ÅR=0) THEN TEST:=FALSE
0260 IF TEST=TRUE THEN CHTAL$:="OK"
0270 ENDPROC CPR_CHECK
0280 // 
0290 CLEAR 
0300 DIM TAL$ OF 20,KOPI$ OF 10
0310 PRINT 
0320 PRINT "          De 10 cifre i personnummeret skal nu indtastes uden ";
0321 PRINT "mellemrum"
0330 PRINT "          F.eks kan indtastningen se således ud: 1212121212"
0340 PRINT "          Programmet stopper, når der tastes 0"
0350 REPEAT 
0360 REPEAT 
0370 OMIGEN:=FALSE
0380 CURSOR 36,10
0390 PRINT "                   "
0400 CURSOR 11,10
0410 INPUT "Indtast et personnummer:  ":TAL$
0420 IF TAL$="0" THEN 
0430 CURSOR 1,22
0440 STOP 
0450 ENDIF 
0460 IF LEN(TAL$)=10 THEN 
0470 FOR I:=1 TO 10 DO 
0480 IF ORD(TAL$(I:I))<48 OR ORD(TAL$(I:I))>57 THEN OMIGEN:=TRUE
0490 NEXT I
0500 ELSE 
0510 OMIGEN:=TRUE
0520 ENDIF 
0530 UNTIL NOT OMIGEN
0540 KOPI$:=TAL$ // Nu har vi netop 10 cifre
0550 EXEC CPR_CHECK(TAL$)
0560 CURSOR 11,15
0570 IF TAL$="OK" THEN 
0580 PRINT "CPR-nummeret ";KOPI$;" er i orden"
0590 ELSE 
0600 PRINT "CPR-nummeret ";KOPI$;" er forkert"
0610 ENDIF 
0620 CURSOR 11,20
0630 INPUT "Tast <Return>":TAL$
0640 UNTIL FALSE
2661 // mrum"

Mikados K File

0x000…03d Line {l1=0x3b, l2=»0010 // ------------------ personnu -----------------------«, l3=0x3b}
0x03d…084 Line {l1=0x45, l2=»0020 // Programmet kontrollerer om et opgivet personnummer er korrekt«, l3=0x45}
0x084…0b1 Line {l1=0x2b, l2=»0030 // Datoens gyldighed kontrolleres også«, l3=0x2b}
0x0b1…0bb Line {l1=0x08, l2=»0040 // «, l3=0x08}
0x0bb…0d4 Line {l1=0x17, l2=»0041 INTEGER TRUE,FALSE«, l3=0x17}
0x0d4…0eb Line {l1=0x15, l2=»0042 TRUE:=1;FALSE:=0«, l3=0x15}
0x0eb…10c Line {l1=0x1f, l2=»0050 PROC CPR_CHECK(REF CHTAL$)«, l3=0x1f}
0x10c…124 Line {l1=0x16, l2=»0060 SUM:=0;TEST:=TRUE«, l3=0x16}
0x124…13c Line {l1=0x16, l2=»0070 FOR I:=1 TO 7 DO «, l3=0x16}
0x13c…15f Line {l1=0x21, l2=»0080 SUM:=SUM+ASC(CHTAL$(11-I))*I«, l3=0x21}
0x15f…16c Line {l1=0x0b, l2=»0090 NEXT I«, l3=0x0b}
0x16c…184 Line {l1=0x16, l2=»0100 FOR I:=2 TO 4 DO «, l3=0x16}
0x184…1a6 Line {l1=0x20, l2=»0110 SUM:=SUM+ASC(CHTAL$(5-I))*I«, l3=0x20}
0x1a6…1b3 Line {l1=0x0b, l2=»0120 NEXT I«, l3=0x0b}
0x1b3…1db Line {l1=0x26, l2=»0130 IF SUM MOD 11<>0 THEN TEST:=FALSE«, l3=0x26}
0x1db…1f8 Line {l1=0x1b, l2=»0140 DATO:=ASC(CHTAL$(1:2))«, l3=0x1b}
0x1f8…216 Line {l1=0x1c, l2=»0150 MÅNED:=ASC(CHTAL$(3:2))«, l3=0x1c}
0x216…231 Line {l1=0x19, l2=»0160 ÅR:=ASC(CHTAL$(5:2))«, l3=0x19}
0x231…274 Line {l1=0x41, l2=»0170 IF DATO=0 OR DATO>31 OR MÅNED=0 OR MÅNED>12 THEN TEST:=FALSE«, l3=0x41}
0x274…283 Line {l1=0x0d, l2=»0180 RESTORE «, l3=0x0d}
0x283…297 Line {l1=0x12, l2=»0190 DATA 4,6,9,11«, l3=0x12}
0x297…2af Line {l1=0x16, l2=»0200 FOR I:=1 TO 4 DO «, l3=0x16}
0x2af…2c4 Line {l1=0x13, l2=»0210 READ KORTMÅNED«, l3=0x13}
0x2c4…2fa Line {l1=0x34, l2=»0220 IF KORTMÅNED=MÅNED AND DATO=31 THEN TEST:=FALSE«, l3=0x34}
0x2fa…307 Line {l1=0x0b, l2=»0230 NEXT I«, l3=0x0b}
0x307…335 Line {l1=0x2c, l2=»0240 IF MÅNED=2 AND DATO>29 THEN TEST:=FALSE«, l3=0x2c}
0x335…37d Line {l1=0x46, l2=»0250 IF MÅNED=2 AND DATO=29 AND (ÅR MOD 4<>0 OR ÅR=0) THEN TEST:=FALSE«, l3=0x46}
0x37d…3a2 Line {l1=0x23, l2=»0260 IF TEST=TRUE THEN CHTAL$:="OK"«, l3=0x23}
0x3a2…3ba Line {l1=0x16, l2=»0270 ENDPROC CPR_CHECK«, l3=0x16}
0x3ba…3c4 Line {l1=0x08, l2=»0280 // «, l3=0x08}
0x3c4…3d1 Line {l1=0x0b, l2=»0290 CLEAR «, l3=0x0b}
0x3d1…3f2 Line {l1=0x1f, l2=»0300 DIM TAL$ OF 20,KOPI$ OF 10«, l3=0x1f}
0x3f2…3ff Line {l1=0x0b, l2=»0310 PRINT «, l3=0x0b}
0x3ff…44d Line {l1=0x4c, l2=»0320 PRINT "          De 10 cifre i personnummeret skal nu indtastes uden ";«, l3=0x4c}
0x44d…465 Line {l1=0x16, l2=»0321 PRINT "mellemrum"«, l3=0x16}
0x465…4af Line {l1=0x48, l2=»0330 PRINT "          F.eks kan indtastningen se således ud: 1212121212"«, l3=0x48}
0x4af…4ec Line {l1=0x3b, l2=»0340 PRINT "          Programmet stopper, når der tastes 0"«, l3=0x3b}
0x4ec…4fa Line {l1=0x0c, l2=»0350 REPEAT «, l3=0x0c}
0x4fa…508 Line {l1=0x0c, l2=»0360 REPEAT «, l3=0x0c}
0x508…51c Line {l1=0x12, l2=»0370 OMIGEN:=FALSE«, l3=0x12}
0x51c…52f Line {l1=0x11, l2=»0380 CURSOR 36,10«, l3=0x11}
0x52f…551 Line {l1=0x20, l2=»0390 PRINT "                   "«, l3=0x20}
0x551…564 Line {l1=0x11, l2=»0400 CURSOR 11,10«, l3=0x11}
0x564…592 Line {l1=0x2c, l2=»0410 INPUT "Indtast et personnummer:  ":TAL$«, l3=0x2c}
0x592…5aa Line {l1=0x16, l2=»0420 IF TAL$="0" THEN «, l3=0x16}
0x5aa…5bc Line {l1=0x10, l2=»0430 CURSOR 1,22«, l3=0x10}
0x5bc…5c8 Line {l1=0x0a, l2=»0440 STOP «, l3=0x0a}
0x5c8…5d5 Line {l1=0x0b, l2=»0450 ENDIF «, l3=0x0b}
0x5d5…5f1 Line {l1=0x1a, l2=»0460 IF LEN(TAL$)=10 THEN «, l3=0x1a}
0x5f1…60a Line {l1=0x17, l2=»0470 FOR I:=1 TO 10 DO «, l3=0x17}
0x60a…64c Line {l1=0x40, l2=»0480 IF ORD(TAL$(I:I))<48 OR ORD(TAL$(I:I))>57 THEN OMIGEN:=TRUE«, l3=0x40}
0x64c…659 Line {l1=0x0b, l2=»0490 NEXT I«, l3=0x0b}
0x659…665 Line {l1=0x0a, l2=»0500 ELSE «, l3=0x0a}
0x665…678 Line {l1=0x11, l2=»0510 OMIGEN:=TRUE«, l3=0x11}
0x678…685 Line {l1=0x0b, l2=»0520 ENDIF «, l3=0x0b}
0x685…69c Line {l1=0x15, l2=»0530 UNTIL NOT OMIGEN«, l3=0x15}
0x69c…6ca Line {l1=0x2c, l2=»0540 KOPI$:=TAL$ // Nu har vi netop 10 cifre«, l3=0x2c}
0x6ca…6e5 Line {l1=0x19, l2=»0550 EXEC CPR_CHECK(TAL$)«, l3=0x19}
0x6e5…6f8 Line {l1=0x11, l2=»0560 CURSOR 11,15«, l3=0x11}
0x6f8…711 Line {l1=0x17, l2=»0570 IF TAL$="OK" THEN «, l3=0x17}
0x711…741 Line {l1=0x2e, l2=»0580 PRINT "CPR-nummeret ";KOPI$;" er i orden"«, l3=0x2e}
0x741…74d Line {l1=0x0a, l2=»0590 ELSE «, l3=0x0a}
0x74d…77d Line {l1=0x2e, l2=»0600 PRINT "CPR-nummeret ";KOPI$;" er forkert"«, l3=0x2e}
0x77d…78a Line {l1=0x0b, l2=»0610 ENDIF «, l3=0x0b}
0x78a…79d Line {l1=0x11, l2=»0620 CURSOR 11,20«, l3=0x11}
0x79d…7be Line {l1=0x1f, l2=»0630 INPUT "Tast <Return>":TAL$«, l3=0x1f}
0x7be…7d0 Line {l1=0x10, l2=»0640 UNTIL FALSE«, l3=0x10}
0x7d0…7df Line {l1=0x0d, l2=»2661 // mrum"«, l3=0x0d}
0x7df…7e0 00                                                                                                ┆ ┆
0x7e0…800 00 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63   ┆ ccccccccccccccccccccccccccccccc┆
0x800…820 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63   ┆cccccccccccccccccccccccccccccccc┆
          […0xe…]

TextFile

;0010 // ------------------ personnu -----------------------;E0020 // Programmet kontrollerer om et opgivet personnummer er korrektE+0030 // Datoens gyldighed kontrolleres også+▶08◀0040 // ▶08◀▶17◀0041 INTEGER TRUE,FALSE▶17◀▶15◀0042 TRUE:=1;FALSE:=0▶15◀▶1f◀0050 PROC CPR_CHECK(REF CHTAL$)▶1f◀▶16◀0060 SUM:=0;TEST:=TRUE▶16◀▶16◀0070 FOR I:=1 TO 7 DO ▶16◀!0080 SUM:=SUM+ASC(CHTAL$(11-I))*I!▶0b◀0090 NEXT I▶0b◀▶16◀0100 FOR I:=2 TO 4 DO ▶16◀ 0110 SUM:=SUM+ASC(CHTAL$(5-I))*I ▶0b◀0120 NEXT I▶0b◀&0130 IF SUM MOD 11<>0 THEN TEST:=FALSE&▶1b◀0140 DATO:=ASC(CHTAL$(1:2))▶1b◀▶1c◀0150 MÅNED:=ASC(CHTAL$(3:2))▶1c◀▶19◀0160 ÅR:=ASC(CHTAL$(5:2))▶19◀A0170 IF DATO=0 OR DATO>31 OR MÅNED=0 OR MÅNED>12 THEN TEST:=FALSEA\r0180 RESTORE \r▶12◀0190 DATA 4,6,9,11▶12◀▶16◀0200 FOR I:=1 TO 4 DO ▶16◀▶13◀0210 READ KORTMÅNED▶13◀40220 IF KORTMÅNED=MÅNED AND DATO=31 THEN TEST:=FALSE4▶0b◀0230 NEXT I▶0b◀,0240 IF MÅNED=2 AND DATO>29 THEN TEST:=FALSE,F0250 IF MÅNED=2 AND DATO=29 AND (ÅR MOD 4<>0 OR ÅR=0) THEN TEST:=FALSEF#0260 IF TEST=TRUE THEN CHTAL$:="OK"#▶16◀0270 ENDPROC CPR_CHECK▶16◀▶08◀0280 // ▶08◀▶0b◀0290 CLEAR ▶0b◀▶1f◀0300 DIM TAL$ OF 20,KOPI$ OF 10▶1f◀▶0b◀0310 PRINT ▶0b◀L0320 PRINT "          De 10 cifre i personnummeret skal nu indtastes uden ";L▶16◀0321 PRINT "mellemrum"▶16◀H0330 PRINT "          F.eks kan indtastningen se således ud: 1212121212"H;0340 PRINT "          Programmet stopper, når der tastes 0";\f

0350 REPEAT \f

\f

0360 REPEAT \f

▶12◀0370 OMIGEN:=FALSE▶12◀▶11◀0380 CURSOR 36,10▶11◀ 0390 PRINT "                   " ▶11◀0400 CURSOR 11,10▶11◀,0410 INPUT "Indtast et personnummer:  ":TAL$,▶16◀0420 IF TAL$="0" THEN ▶16◀▶10◀0430 CURSOR 1,22▶10◀
0440 STOP 
▶0b◀0450 ENDIF ▶0b◀▶1a◀0460 IF LEN(TAL$)=10 THEN ▶1a◀▶17◀0470 FOR I:=1 TO 10 DO ▶17◀@0480 IF ORD(TAL$(I:I))<48 OR ORD(TAL$(I:I))>57 THEN OMIGEN:=TRUE@▶0b◀0490 NEXT I▶0b◀
0500 ELSE 
▶11◀0510 OMIGEN:=TRUE▶11◀▶0b◀0520 ENDIF ▶0b◀▶15◀0530 UNTIL NOT OMIGEN▶15◀,0540 KOPI$:=TAL$ // Nu har vi netop 10 cifre,▶19◀0550 EXEC CPR_CHECK(TAL$)▶19◀▶11◀0560 CURSOR 11,15▶11◀▶17◀0570 IF TAL$="OK" THEN ▶17◀.0580 PRINT "CPR-nummeret ";KOPI$;" er i orden".
0590 ELSE 
.0600 PRINT "CPR-nummeret ";KOPI$;" er forkert".▶0b◀0610 ENDIF ▶0b◀▶11◀0620 CURSOR 11,20▶11◀▶1f◀0630 INPUT "Tast <Return>":TAL$▶1f◀▶10◀0640 UNTIL FALSE▶10◀\r2661 // mrum"\r▶00◀▶00◀ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

Reduced view