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

⟦04a7c76d0⟧

    Length: 10112 (0x2780)
    Notes: Mikados TextFile, Mikados_K
    Names: »BREV«

Derivation

└─⟦98735d749⟧ Bits:30007443 8" floppy ( TEXT ) vedr. matematik i skibsindustrien
    └─ ⟦this⟧ »BREV« 

Text

0100 TRUE=1
0110 FALSE=0
0120 DIM SPLIT$(66),BL$(66)
0130 DIM B$(133),SYM$(66),S$(1),SIDE$(22,66),LINE$(133),SV$(2),FIL1$(20)
0140 DIM FIL$(20),UDFIL$(20),SV1$(1)
0150 FOR I=1 TO 66
0160 BL$(I)=" "
0170 NEXT I
0180 UDFIL$="DDE:BREVFIL"
0190 FIL$="DDE:MODUL"
0200 OPEN UDFIL$,W
0210 PROC INDMODUL
0220 LAST=0
0230 REPEAT 
0240 INPUT "MODULNR ",SV$
0250 EXEC CHECK1
0260 UNTIL OKAY=TRUE
0270 EXEC CONVERT(NR)
0280 FIL1$=FIL$+SV$
0290 OPEN FIL1$,R
0300 IF STATUS(FIL1$)=0 THEN 
0310 FOR L=1 TO 18
0320 GET FIL1$:SIDE$(L)
0330 IF LEN(SIDE$(L))>0 THEN LAST=L
0340 NEXT L
0350 CLOSE FIL1$
0360 EXEC SKRIV
0370 ENDIF 
0380 IF LAST=0 THEN GO TO 0230
0390 ENDPROC 
0400 PROC TILPAS
0410 I0=1
0420 REPEAT 
0430 CURSOR 1,23
0440 INPUT "T,TL,S,SL,R,E,F ",SV$
0450 EXEC CHECK
0460 IF OKAY=TRUE THEN 
0470 I=I0-1
0480 EXEC FINDPOS
0490 I0=I
0500 IF I0=>LAST THEN I0=1
0510 IF J>0 THEN 
0520 CASE SV$ OF 
0530 WHEN "TL","tl","Tl","tL"
0540 IF LAST<22 THEN 
0550 CURSOR 1,23
0560 PRINT BL$
0570 REPEAT 
0580 CURSOR 1,23
0590 INPUT "           ",LINE$
0600 UNTIL LEN(LINE$)>0 AND LEN(LINE$)<67
0610 I1=I
0620 EXEC INDSÆT
0630 ENDIF 
0640 WHEN "T","t"
0650 J1=J
0660 I1=I
0670 CURSOR 1,23
0680 PRINT BL$
0690 REPEAT 
0700 CURSOR 1,23
0710 INPUT "           ",LINE$
0720 UNTIL LEN(LINE$)>0 AND LEN(LINE$)<67
0730 EXEC INSERT
0740 WHEN "S","s"
0750 EXEC SLUTPOS
0760 EXEC DELETE
0770 WHEN "SL","sl","Sl","sL"
0780 I1=I
0790 EXEC SLET
0800 WHEN "R","r"
0810 EXEC SLUTPOS
0820 CURSOR 1,23
0830 PRINT BL$
0840 REPEAT 
0850 CURSOR 1,23
0860 INPUT "           ",LINE$
0870 UNTIL LEN(LINE$)>0 AND LEN(LINE$)<67
0880 IF I1=I THEN 
0890 IF LEN(LINE$)<=J-J1+1 THEN 
0900 SIDE$(I1,J1:LEN(LINE$))=LINE$
0910 J1=J1+LEN(LINE$)
0920 IF J1<=J THEN EXEC DELETE
0930 ELSE 
0940 SIDE$(I1,J1:J-J1+1)=LINE$(1:J-J1+1)
0950 LINE$=LINE$(J-J1+2,LEN(LINE$))
0960 J1=J+1
0970 EXEC INSERT
0980 ENDIF 
0990 ELSE 
1000 IF LEN(LINE$)<=66-J1 THEN 
1010 SIDE$(I1,J1:LEN(LINE$))=LINE$
1020 J1=J1+LEN(LINE$)
1030 IF J1>66 THEN 
1040 J1=1
1050 I1=I1+1
1060 ENDIF 
1070 EXEC DELETE
1080 ELSE 
1090 P=67
1100 IF J1>1 THEN LINE$=SIDE$(I1,1,J1-1)+LINE$
1110 EXEC FLÆK(LINE$)
1120 SIDE$(I1)=SPLIT$+BL$
1130 I1=I1+1
1140 J1=1
1150 IF I1=I THEN 
1160 IF LEN(LINE$)<=J-J1 THEN 
1170 IF LEN(LINE$)>0 THEN SIDE$(I1,J1:LEN(LINE$))=LINE$
1180 J1=J1+LEN(LINE$)
1190 EXEC DELETE
1200 ELSE 
1210 SIDE$(I1,J1:J-J1+1)=LINE$(1:J-J1+1)
1220 LINE$=LINE$(J-J1+2,LEN(LINE$))
1230 J1=J+1
1240 EXEC INSERT
1250 ENDIF 
1260 ELSE 
1270 SIDE$(I1)=LINE$
1280 J1=LEN(LINE$)+1
1290 EXEC DELETE
1300 ENDIF 
1310 ENDIF 
1320 ENDIF 
1330 WHEN "E","e"
1340 LINE$=SIDE$(I)
1350 CURSOR 1,23
1360 PRINT BL$
1370 REPEAT 
1380 CURSOR 1,23
1390 EDIT "           ",LINE$
1400 UNTIL LEN(LINE$)>0 AND LEN(LINE$)<67
1410 SIDE$(I)=LINE$
1420 ENDCASE 
1430 EXEC SKRIV
1440 ENDIF 
1450 ENDIF 
1460 UNTIL SV$="F" OR SV$="f"
1470 ENDPROC 
1480 PROC FINDPOS
1490 REPEAT 
1500 I=I+1
1510 CURSOR 1,I
1520 INPUT "           ",LINE$
1530 UNTIL I=22 OR LEN(LINE$)>0
1540 J=LEN(LINE$)
1550 IF J>66 THEN J=66
1560 ENDPROC 
1570 PROC SKRIV
1580 CLEAR 
1590 FOR X=1 TO 22
1600 CURSOR 1,X
1610 PRINT "            ";SIDE$(X)
1620 NEXT X
1630 ENDPROC 
1640 PROC INDSÆT
1650 LAST=LAST+1
1660 IF I1>LAST THEN LAST=I1
1670 FOR L=LAST TO I1+1 STEP -1
1680 SIDE$(L)=SIDE$(L-1)
1690 NEXT L
1700 SIDE$(I1)=LINE$+BL$
1710 ENDPROC 
1720 PROC SLET
1730 FOR L=I1 TO LAST-1
1740 SIDE$(L)=SIDE$(L+1)
1750 NEXT L
1760 SIDE$(LAST)=""
1770 LAST=LAST-1
1780 ENDPROC 
1790 PROC SLUTPOS
1800 I1=I
1810 J1=J
1820 CURSOR J+10,I
1830 INPUT " ",LINE$
1840 IF LEN(LINE$)=0 THEN 
1850 EXEC FINDPOS
1860 ELSE 
1870 J=LEN(LINE$)+J1-1
1880 IF J>66 THEN J=66
1890 ENDIF 
1900 ENDPROC 
1910 PROC FLÆK(LIN)
1920 SPLIT$=""
1930 FOUND=FALSE
1940 Q=LEN(LIN$)
1950 WHILE Q>0
1960 IF LIN$(Q)=" " THEN 
1970 LIN$(Q)=""
1980 Q=Q-1
1990 ELSE 
2000 Q=0
2010 ENDIF 
2020 ENDWHILE 
2030 IF P>LEN(LIN$) THEN 
2040 FOUND=TRUE
2050 P=LEN(LIN$)+1
2060 ELSE 
2070 IF P<66 THEN P=P+1
2080 IF LIN$(P)<>" " THEN 
2090 REPEAT 
2100 P=P-1
2110 IF LIN$(P)=" " THEN FOUND=TRUE
2120 UNTIL FOUND=TRUE OR P=1
2130 ELSE 
2140 FOUND=TRUE
2150 ENDIF 
2160 ENDIF 
2170 IF FOUND THEN 
2180 IF P=1 THEN 
2190 SPLIT$=""
2200 IF P<LEN(LIN$) THEN LIN$=LIN$(P+1,LEN(LIN$))
2210 ELSE 
2220 SPLIT$=LIN$(1,P-1)
2230 IF P<LEN(LIN$) THEN 
2240 LIN$=LIN$(P+1,LEN(LIN$))
2250 ELSE 
2260 LIN$=""
2270 ENDIF 
2280 ENDIF 
2290 ENDIF 
2300 ENDPROC 
2310 PROC INSERT
2320 B$=""
2330 IF J1>1 THEN B$=SIDE$(I1,1,J1-1)
2340 B$=B$+LINE$
2350 IF J1<67 THEN B$=B$+SIDE$(I1,J1,66)
2360 P=67
2370 EXEC FLÆK(B$)
2380 SIDE$(I1)=SPLIT$+BL$
2390 I1=I1+1
2400 J1=1
2410 LINE$=B$
2420 WHILE SIDE$(I1,1)<>" " AND LEN(LINE$)>0 AND LEN(SIDE$(I1))>0
2430 B$=SIDE$(I1)
2440 IF LINE$(LEN(LINE$))="-" THEN 
2450 LINE$(LEN(LINE$))=""
2460 ELSE 
2470 IF LEN(LINE$)<66 THEN LINE$=LINE$+" "
2480 ENDIF 
2490 SIDE$(I1,1,LEN(LINE$))=LINE$
2500 P=67-LEN(LINE$)
2510 EXEC FLÆK(B$)
2520 IF LEN(SPLIT$)>0 THEN SIDE$(I1,LEN(LINE$)+1,66)=SPLIT$+BL$
2530 LINE$=B$
2540 I1=I1+1
2550 ENDWHILE 
2560 IF LEN(LINE$)>0 THEN 
2570 EXEC INDSÆT
2580 ENDIF 
2590 ENDPROC 
2600 PROC DELETE
2610 J=J+1
2620 IF J>66 THEN 
2630 J=1
2640 I=I+1
2650 ENDIF 
2660 P=67-J1
2670 IF I=LAST+1 THEN 
2680 IF J1>1 THEN 
2690 SIDE$(I1,J1,66)=BL$
2700 ELSE 
2710 I1=I1-1
2720 ENDIF 
2730 FOR Q=I1+1 TO LAST
2740 SIDE$(Q)=BL$
2750 NEXT Q
2760 LAST=I1
2770 ELSE 
2780 LINE$=SIDE$(I,J,66)
2790 EXEC FLÆK(LINE$)
2800 REPEAT 
2810 HYPHEN=0
2820 IF LEN(SPLIT$)>0 THEN 
2830 IF SPLIT$(LEN(SPLIT$))="-" THEN 
2840 HYPHEN=LEN(SPLIT$)+J1-1+100*I1
2850 SPLIT$(LEN(SPLIT$))=""
2860 ELSE 
2870 SPLIT$=SPLIT$+" "
2880 ENDIF 
2890 ENDIF 
2900 SIDE$(I1,J1,66)=SPLIT$+BL$
2910 IF J1+LEN(SPLIT$)<66 AND LEN(LINE$)=0 THEN 
2920 J1=J1+LEN(SPLIT$)
2930 P=67-J1
2940 IF I<22 THEN 
2950 IF SIDE$(I+1,1)<>" " THEN 
2960 LINE$=SIDE$(I+1)
2970 I=I+1
2980 EXEC FLÆK(LINE$)
2990 IF LEN(SPLIT$)>0 THEN 
3000 SIDE$(I1,J1,66)=SPLIT$+BL$
3010 IF LEN(LINE$)>0 THEN I=I-1
3020 SPLIT$=LINE$
3030 LINE$=""
3040 HYPHEN=0
3050 ELSE 
3060 SIDE$(I1+1)=LINE$
3070 LINE$=""
3080 I1=I1+1
3090 ENDIF 
3100 ELSE 
3110 LINE$=""
3120 SPLIT$=""
3130 ENDIF 
3140 ELSE 
3150 LINE$=""
3160 SPLIT$=""
3210 ENDIF 
3220 ELSE 
3230 B$=LINE$
3240 LINE$=SIDE$(I+1)
3250 SIDE$(I1+1)=B$
3260 J1=LEN(B$);P=67-J1
3270 EXEC FLÆK(LINE$)
3280 ENDIF 
3300 IF HYPHEN>0 THEN SIDE$(HYPHEN DIV 100,HYPHEN MOD 100)="-"
3310 J1=1
3320 J=1
3330 I1=I1+1
3340 I=I+1
3350 IF I>22 THEN I=22
3360 UNTIL (LEN(SPLIT$)=0 AND LEN(LINE$)=0) OR (J=1 AND SIDE$(I,1)=" ")
3370 J=I1
3380 WHILE J<I
3390 EXEC SLET
3400 J=J+1
3410 ENDWHILE 
3420 ENDIF 
3430 ENDPROC 
3440 PROC CHECK1
3450 NR=0
3460 I=1
3470 IF LEN(SV$)>0 AND LEN(SV$)<3 THEN 
3480 OKAY=TRUE
3490 ELSE 
3500 OKAY=FALSE
3510 ENDIF 
3520 WHILE I<=LEN(SV$)
3530 IF SV$(I)<"0" OR SV$(I)>"9" THEN 
3540 OKAY=FALSE
3550 I=LEN(SV$)+1
3560 ELSE 
3570 NR=NR*10+ORD(SV$(I))-48
3580 I=I+1
3590 ENDIF 
3600 ENDWHILE 
3610 ENDPROC 
3620 PROC CONVERT(NO)
3630 SV$=CHR(NO DIV 10+48)+CHR(NO MOD 10+48)
3640 ENDPROC 
3650 PROC CHECK
3660 OKAY=FALSE
3670 CURSOR 20,23
3680 CASE SV$ OF 
3690 WHEN "T","t"
3700 OKAY=TRUE
3710 PRINT "Tilføjelse"
3720 WHEN "TL","tl","Tl","tL"
3730 OKAY=TRUE
3740 PRINT "Tilføj linie"
3750 WHEN "s","S"
3760 OKAY=TRUE
3770 PRINT "Sletning"
3780 WHEN "SL","sl","Sl","sL"
3790 OKAY=TRUE
3800 PRINT "Slet linie"
3810 WHEN "R","r"
3820 OKAY=TRUE
3830 PRINT "Retning"
3840 WHEN "e","E"
3850 OKAY=TRUE
3860 PRINT "Editering"
3870 ENDCASE 
3880 ENDPROC 
3890 PROC UDBREV
3900 FOR I=1 TO LAST
3910 PUT UDFIL$:SIDE$(I)
3920 NEXT I
3940 ENDPROC 
3950 REPEAT 
3960 CURSOR 1,23
3970 INPUT "FLERE MODULER (J/N) ",SV1$
3980 IF SV1$="J" OR SV1$="j" THEN 
3990 EXEC INDMODUL
4000 EXEC TILPAS
4010 EXEC UDBREV
4020 ENDIF 
4030 UNTIL SV1$<>"J" AND SV1$<>"j"
4040 ENDFILE UDFIL$
4050 CLOSE UDFIL$
4060 REPEAT 
4070 CLEAR 
4080 PRINT "BREVET ØNSKES UDSKREVET"
4090 PRINT "Som det er:              1"
4100 PRINT "Til en enkelt kunde:     2"
4110 PRINT "Til en række kunder:     3"
4120 PRINT "Til en kundegruppe :     4"
4130 REPEAT 
4140 INPUT "(1/2/3/4) 0 FOR STOP  ",SV$
4150 EXEC CHECK1
4160 UNTIL NR=>0 AND NR<=4 AND OKAY=TRUE
4170 CASE NR OF 
4180 WHEN 1
4190 EXEC WRITE
4200 WHEN 2
4210 WHEN 3
4220 WHEN 4
4230 ENDCASE 
4240 UNTIL NR=0
4250 PROC WRITE
4260 OUTPUT P
4270 OPEN UDFIL$,R
4280 GET UDFIL$:SYM$
4290 LINES=0
4300 WHILE STATUS(UDFIL$)=0
4310 LINES=LINES+1
4320 IF LINES=43 THEN 
4330 FOR LINES=1 TO 6
4340 PRINT " "
4350 NEXT LINES
4360 LINES=1
4370 ENDIF 
4380 PRINT TAB(7);SYM$
4390 GET UDFIL$:SYM$
4400 ENDWHILE 
4410 CLOSE UDFIL$
4420 OUTPUT T
4430 ENDPROC