DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

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

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦24bb9ae43⟧ TextFile

    Length: 47488 (0xb980)
    Types: TextFile
    Names: »ENTRYME.BAS«

Derivation

└─⟦f51bd807e⟧ Bits:30005981/disk5.imd Turn Key Data Entry System/Datenerfassungspaket - Vers. 1.90
    └─⟦this⟧ »ENTRYME.BAS« 

TextFile

1 REM		**************************************************
2 REM		*                                                *
3 REM		*	MODULE : ENTRYME .BAS (TKDES/RC700)      *
4 REM		*	DATE   : 01.02.82                        *
5 REM		*	BY     : ASE GMBH , 6472 ALTENSTADT      *
6 REM		*	VERSION: 1.90                            *
7 REM		*                                                *
8 REM		**************************************************
9 REM
10 REM	***********************************************************************
11 REM	*  SET ERROR-HANDLING POINTER AND READ WORKNO. FROM CHAININF-FILE     *
12 REM	***********************************************************************
13 ON ERROR GOTO 10000 : GOSUB 22200          				 	REM *** SET ERROR-POINTER AND READ ARBNR 
14 IF VAL(ARBNR$) < 1 OR VAL(ARBNR$) > 11 GOTO 16 ELSE GOTO 1010
16 REM	***********************************************************************
17 REM 	*  READ MENUE FROM DEP-FORM-FILE                                      *
18 REM  ***********************************************************************
20 ERRFLAG% = 0 : DEPFORM% = 0 : ARBSTATOPEN% = 0 : ARBSTATWRITE% = 0
21 USRFORMFOPEN% = 0
25 CLOSE 									REM *** CLOSE ALL FILES
30 FORMNAME$ = "DEPFORM .DEP" : FILENAME$ = FORMNAME$
40 GOSUB 9280                                    				REM *** OPEN FORM-FILE
50 GOSUB 9580                                    				REM *** INIT FORMBUFFER-FIELD
55 FORMNR% = 6 : GOSUB 9674                      				REM *** READ FORMAR-REC.
60 IF FORMBYTES$ = "#&" THEN 70
63 REM	***********************************************************************
64 REM 	*  NO DEP FORMAT ID. !!! PRINT ERRMSG AND STOP THE SYSTEM             *
65 REM	***********************************************************************
66 ERRMSGNR% = 4 : GOSUB 20000
68 GOTO 68									REM *** ILLEGAL DISK 1 !! NO DEP-FORMAT !!
69 REM	***********************************************************************
70 REM	*  INIT AND CALL DEP TO PRINT MENUE ON CRT                            *
71 REM 	***********************************************************************
72 GOSUB 9100                                    				REM *** OPEN ARBSTAT-FILE
74 GOSUB 9150 									REM *** INIT ARBSTAT-FIELD
80 FIELDNO$ = "000" : MODE$ = "00" : SPECMOD$ = "000"
85 LSET FLN$ = FIELDNO$ : LSET MO$ = MODE$ : LSET SM$ = SPECMOD$
90 F% = VARPTR(#2) : Z% = VARPTR(#1) : CALL INIT(F%,Z%)  
100 GOSUB 7240                                   				REM *** TEST GENERAL DEP-STATUS
110 ON PRIMST% GOTO 130,90,90,90,90,90,90,7280,90,90,90,90,90,90
120 GOSUB 7280 : GOTO 16                         				REM *** PRINT ERRMSG. (DEP-ERROR)
130 ERRFLAG% = 0 : CLOSE 							REM *** CLOSE ALL FILES
131 REM	***********************************************************************
132 REM *  INPUT WORKNO.                                                      *
133 REM	***********************************************************************
134 ARBSTATOPEN% = 0 : USRFORMFOPEN% = 0
135 ARBNR$ = SPACE$(2)
152 PRINT CHR$(13);CHR$(6);CHR$(80);CHR$(53);"..";CHR$(8);CHR$(8);
170 ARBNR1$=INPUT$(1)
175 IF ASC(ARBNR1$) = 12 GOTO 135
180 IF ASC(ARBNR1$) < 48 OR ASC(ARBNR1$) > 57 GOTO 170 ELSE 190
190 MID$(ARBNR$,1,1)=ARBNR1$:PRINT ARBNR1$;
200 ARBNR2$=INPUT$(1)
310 IF ASC(ARBNR2$) = 13 GOTO 360
320 IF ASC(ARBNR2$) = 12 GOTO 650
330 IF ASC(ARBNR2$) = 8 THEN PRINT CHR$(8); : GOTO 170
350 IF ASC(ARBNR2$) < 48 OR ASC(ARBNR2$) > 57 GOTO 200
360 MID$(ARBNR$,2,1) = ARBNR2$ : PRINT ARBNR2$;
365 IF VAL(ARBNR$) = 12 OR VAL(ARBNR$) = 13 THEN GOSUB 400 : GOTO 135
370 IF VAL(ARBNR$) < 1 OR VAL(ARBNR$) > 15 THEN GOSUB 400 : GOTO 135 ELSE 500
400 REM	***********************************************************************
402 REM *  SUB.: PRINT ERRMSG. IN LINE 25                                     *
404 REM	***********************************************************************
410 ERRMSGNR% = 1 : GOSUB 20000 : GOSUB 1000     	
420 RETURN
490 REM	***********************************************************************
495 REM *  INPUT 'WORKNO. OK ?'                                               *
500 REM	***********************************************************************
505 ARBNROK$ = SPACE$(1)
510 ON VAL(ARBNR$) GOSUB 520,525,530,535,540,545,550,555,560,565,570,132,132,574,577
511 IF ARBNROK$ = "N" GOTO 135 
512 ARBNROK$=INPUT$(1)
514 IF ARBNROK$ = "J" THEN PRINT ARBNROK$; : GOTO 1010 
515 IF ARBNROK$ = "N" GOTO 510 
516 PRINT CHR$(7); : GOTO 512
517 REM	***********************************************************************
518 REM *  SET / RESET INVERSE MODE ON CRT     				      *
519 REM	***********************************************************************
520 PRINT CHR$(6);CHR$(75);CHR$(37);CHR$(128); CHR$(6);CHR$(55);CHR$(37);
523 GOSUB 800
524 RETURN
525 PRINT CHR$(6);CHR$(76);CHR$(38);CHR$(128); CHR$(6);CHR$(55);CHR$(38);
528 GOSUB 800
529 RETURN
530 PRINT CHR$(6);CHR$(74);CHR$(39);CHR$(128); CHR$(6);CHR$(55);CHR$(39);
533 GOSUB 800
534 RETURN
535 PRINT CHR$(6);CHR$(86);CHR$(40);CHR$(128); CHR$(6);CHR$(55);CHR$(40);
538 GOSUB 800
539 RETURN
540 PRINT CHR$(6);CHR$(75);CHR$(41);CHR$(128); CHR$(6);CHR$(55);CHR$(41);
543 GOSUB 800
544 RETURN
545 PRINT CHR$(6);CHR$(72);CHR$(42);CHR$(128); CHR$(6);CHR$(55);CHR$(42);
548 GOSUB 800
549 RETURN
550 PRINT CHR$(6);CHR$(84);CHR$(43);CHR$(128);CHR$(6);CHR$(55);CHR$(43);
553 GOSUB 800
554 RETURN
555 PRINT CHR$(6);CHR$(73);CHR$(44);CHR$(128); CHR$(6);CHR$(55);CHR$(44);
558 GOSUB 800
559 RETURN
560 PRINT CHR$(6);CHR$(67);CHR$(45);CHR$(128); CHR$(6);CHR$(55);CHR$(45);
563 GOSUB 800
564 RETURN
565 PRINT CHR$(6);CHR$(77);CHR$(46);CHR$(128); CHR$(6);CHR$(54);CHR$(46);
568 GOSUB 800
569 RETURN
570 PRINT CHR$(6);CHR$(73);CHR$(47);CHR$(128); CHR$(6);CHR$(54);CHR$(47);
571 GOSUB 800
572 RETURN
574 PRINT CHR$(6);CHR$(75);CHR$(50);CHR$(128); CHR$(6);CHR$(54);CHR$(50);
575 GOSUB 800
576 RETURN
577 PRINT CHR$(6);CHR$(82);CHR$(51);CHR$(128); CHR$(6);CHR$(54);CHR$(51);
578 GOSUB 800
579 RETURN
580 REM	***********************************************************************
585 REM *  REPLACE DATA-FLOPPY IN DRIVE 1 				      *
590 REM	***********************************************************************
600 FILENAME$ = "RESET" : RESET                					REM *** WRITE CP/M DIR. ON DISK
620 ERRMSGNR% = 8 : GOSUB 20000
630 GOSUB 1000
642 RESET									REM *** INIT THE NEW DISK
644 GOTO 16
645 REM	***********************************************************************
646 REM *  CALL CP/M (WARM BOOT) 					      *
647 REM	***********************************************************************
650 SYSTEM
790 REM	***********************************************************************
795 REM * SUB.: IF ARBNROK$ = N THEN RESET INVERSE VIDEO ELSE SET INVERSE VID.*
800 REM	***********************************************************************
802 IF ARBNROK$ = "N" THEN INVERS% = 128 ELSE INVERS% = 144
804 PRINT CHR$(INVERS%)
810 PRINT CHR$(6);CHR$(81);CHR$(55);
820 RETURN
900 REM ***********************************************************************
902 REM * CHAIN TO USER-PROGRAMM					      *
904 REM ***********************************************************************
906 XPOS% = 1 : YPOS% = 25 : GOSUB 1990
908 PRINT " BITTE PROGRAMMNAME EINGEBEN :  .......... ";
910 XPOS% = 33 : YPOS% = 25 : GOSUB 1990
912 ONE% = 1 : PROGNAME$ = SPACE$(10)
920 FOR I% = ONE%  TO 10 
925 KEYINPUT$ = INPUT$(1)
930 IF KEYINPUT$ = CHR$(8) THEN GOTO 950
932 IF KEYINPUT$ = CHR$(24) THEN GOTO 960
934 IF KEYINPUT$ = CHR$(13) THEN GOTO 970
936 IF ASC(KEYINPUT$) < 32 OR ASC(KEYINPUT$) > 122 THEN GOTO 925
938 PRINT KEYINPUT$;
940 MID$(PROGNAME$,I%,1) = KEYINPUT$
942 NEXT I%
944 I% = 10 : PRINT CHR$(8); : ONE% = 8 : GOTO 920
950 REM --- CURSOR BWD ---
952 IF I% = 1 THEN GOTO 925
954 PRINT KEYINPUT$;
956 I% = I% - 1 : GOTO 925
960 REM --- CURSOR FWD ---
962 IF I% = 10 THEN GOTO 925
964 PRINT KEYINPUT$;
966 I% = I% + 1 : GOTO 925
970 REM --- CR KEY ---
972 PROGNAME$ = PROGNAME$ + ".COM"
974 CHAIN PROGNAME$
976 REM ***********************************************************************
977 REM * PRINT ERRMSG. IN LINE 25    NO CHAIN-MODUL !!			      *
978 REM ***********************************************************************
980 ERRMSGNR% = 12 : GOSUB 20000 : GOSUB 1000 : GOTO 16
990  REM **********************************************************************
995  REM SUB.: (ESC) INPUT AFTER A ERRMSG.				      *
1000 REM **********************************************************************
1002 PRINT CHR$(7); : ESCINPUT$ = INPUT$(1) : IF ASC(ESCINPUT$) <> 27 GOTO 1002
1004 PRINT SPACE$(76); : RETURN
1006 REM **********************************************************************
1008 REM * RESET ALL INPUT-BUFFER AND GO TO SEL. PROGRAMM		      *
1010 REM **********************************************************************
1011 IF VAL(ARBNR$) = 15 THEN GOTO 1013
1012 IF VAL(ARBNR$) > 2 THEN PRINT CHR$(12)
1013 OVERWRITE% = 0:NFORMNAME% = 0:NDATANAME% = 0:FIELDINPUT$ = SPACE$(8):FORMNAME$ = SPACE$(12):NFORMNAME$ = SPACE$(12):DATANAME$ = SPACE$(12):NDATANAME$ = SPACE$(12)
1014 ON VAL(ARBNR$) GOTO 3886,3886,3080,4050,4200,4300,4400,4500,4536,3915,4565,16,16,900,600
1860 REM **********************************************************************
1870 REM * PRINT ERRMSG. IN LINE 25 AND RESET THE INPUT-BUFFER		      *
1872 REM **********************************************************************
1873 ERRMSGNR% = 3 : GOSUB 20000 : GOSUB 1000 : GOSUB 4560 : GOTO 3127
1980 REM **********************************************************************
1985 REM * SUB.: POS. CURSOR						      *
1990 REM **********************************************************************
1992 PRINT CHR$(13);
1994 PRINT CHR$(6);CHR$(XPOS%+31);CHR$(YPOS%+31);
1996 RETURN
3070 REM **********************************************************************
3075 REM * PRINT HEADER ON CRT 						      *
3080 REM **********************************************************************
3082 XPOS% = 52 : YPOS% = 4 : GOSUB 1990
3085 PRINT CHR$(128);
3090 XPOS% = 28:YPOS% = 4:GOSUB 1990
3095 PRINT CHR$(144);
3100 PRINT "*** Daten  erfassen ***"
3102 GOSUB 3972
3110 XPOS% = 2:YPOS% = 10:GOSUB 1990
3120 PRINT "Bitte den Namen der Format-Datei eingeben.  ........"
3125 XPOS% = 46 : YPOS% = 10 : GOSUB 1990
3127 NKEYINP% = 8 : FORMNAMEINPFLAG% = 1
3130 ONE% = 1
3131 REM **********************************************************************
3132 REM * TEST THE KEYBOARD-INPUT KEY'S. ARE THE KEY'S OK PRINT IT ON CRT    *
3133 REM **********************************************************************
3134 FOR I% = ONE% TO NKEYINP%
3140   KEYINPUT$ = INPUT$(1)
3150   IF KEYINPUT$ = "<" GOTO 3140
3160   IF KEYINPUT$ = ">" GOTO 3140
3170   IF KEYINPUT$ = "." GOTO 3140
3180   IF KEYINPUT$ = "," GOTO 3140
3190   IF KEYINPUT$ = ";" GOTO 3140
3200   IF KEYINPUT$ = ":" GOTO 3140
3210   IF KEYINPUT$ = "=" GOTO 3140
3220   IF KEYINPUT$ = "?" GOTO 3140
3230   IF KEYINPUT$ = "*" GOTO 3140
3240   IF KEYINPUT$ = "Æ" GOTO 3140
3250   IF KEYINPUT$ = "Å" GOTO 3140
3260   IF KEYINPUT$ = " " GOTO 3400
3262   IF ASC(KEYINPUT$) = 26 GOTO 3140
3264   IF ASC(KEYINPUT$) = 10 GOTO 3140
3266   IF ASC(KEYINPUT$) = 127 GOTO 3420
3268   IF ASC(KEYINPUT$) = 12 GOTO 1013
3270   IF ASC(KEYINPUT$) = 8 GOTO 3500
3280   IF ASC(KEYINPUT$) = 24 GOTO 3600
3290   IF ASC(KEYINPUT$) = 5 GOTO 3450
3300   IF ASC(KEYINPUT$) = 9 GOTO 3470
3305   IF ASC(KEYINPUT$) = 19 GOTO 3700
3310   IF ASC(KEYINPUT$) = 13 GOTO 3700
3315   IF ASC(KEYINPUT$) = 27 GOTO 3140
3316   IF ASC(KEYINPUT$) = 17 GOTO 16
3317   IF ASC(KEYINPUT$) <= 31 GOTO 3140
3318   IF NKEYINP% = 8 GOTO 3320
3319   IF ASC(KEYINPUT$) < 48 OR ASC(KEYINPUT$) > 57 GOTO 3140 
3320   PRINT KEYINPUT$;
3330   MID$(FIELDINPUT$,I%,1) = KEYINPUT$
3340 NEXT I%
3350 I% = NKEYINP% : PRINT CHR$(8); : IF NKEYINP% = 8 THEN ONE% = 8 : GOTO 3132
3352 ONE% = 3 : GOTO 3132
3399 REM --- SPACE KEY ---
3400 IF MID$(FIELDINPUT$,I%,1) = " " GOTO 3140 ELSE 3320
3420 REM --- RUB-OUT KEY ---
3430 IF I% = 1 GOTO 3446
3435 MID$(FIELDINPUT$,I%,1) = " " : LET I% = I% -1
3445 PRINT " "; : PRINT CHR$(8);CHR$(8); : GOTO 3140
3446 MID$(FIELDINPUT$,I%,1) = " "
3447 PRINT " "; : PRINT CHR$(8); : GOTO 3140
3450 REM --- FIELD BACKWARD KEY ---
3452 IF VAL(ARBNR$) = 10 AND FORMNAMEINPFLAG% = 0 AND NDATANAME% THEN MID$(NDATANAME$,1,8) = FIELDINPUT$ : MID$(FIELDINPUT$,1,8) = DATANAME$ : NDATANAME% = 0 : GOTO 3982
3454 IF VAL(ARBNR$) = 10 AND FORMNAMEINPFLAG% AND NFORMNAME% THEN MID$(NFORMNAME$,1,8) = FIELDINPUT$ : MID$(FIELDINPUT$,1,8) = FORMNAME$ : NFORMNAME% = 0 : GOTO 3125
3455 IF FORMNAMEINPFLAG% THEN GOTO 3125
3458 MID$(DATANAME$,1,8) = MID$(FIELDINPUT$,1,8) : IF VAL(ARBNR$) = 4 OR VAL(ARBNR$) = 7 THEN GOTO 3982
3460 MID$(FIELDINPUT$,1,8) = MID$(FORMNAME$,1,8) : GOTO 3125
3470 REM --- FIELD FORWARD KEY ---
3480 IF FORMNAMEINPFLAG% OR NKEYINP% = 8 GOTO 3700 ELSE 3140
3499 REM --- CURSOR BACKWARD KEY ---
3500 IF I% = 1 GOTO 3140
3510 PRINT KEYINPUT$;
3520 LET I% = I% - 1
3530 GOTO 3140
3600 REM --- CURSOR FORWARD KEY ---
3610 IF I% = NKEYINP% GOTO 3140
3620 FOR BLANKTEST% = I% TO NKEYINP%
3630   IF MID$(FIELDINPUT$,BLANKTEST%,1) = " " GOTO 3640 ELSE 3660
3640 NEXT BLANKTEST%
3650 GOTO 3140
3660 PRINT KEYINPUT$;
3670 LET I% = I% + 1
3680 GOTO 3140
3700 REM --- CR KEY ---
3705 BLANKF% = 0
3710 FOR CRBLANK% = 1 TO NKEYINP%
3720   IF MID$(FIELDINPUT$,CRBLANK%,1) = " " THEN BLANKF% = 1:GOTO 3740
3730   IF BLANKF% = 1 GOTO 3760
3740 NEXT CRBLANK%
3742 REM --- ONLEY SPACE IN A FIELD ? ---
3744 FOR SPACE% = 1 TO NKEYINP%
3746   IF MID$(FIELDINPUT$,SPACE%,1) <> " " GOTO 3765
3748 NEXT SPACE%
3750 IF FORMNAMEINPFLAG% AND VAL(ARBNR$) = 3 GOTO 3125
3752 IF VAL(ARBNR$) = 10 AND NFORMNAME% THEN GOSUB 4560 : GOTO 3127
3754 IF VAL(ARBNR$) = 10 AND NDATANAME% THEN GOSUB 4562 : GOTO 3130
3755 GOTO 3982
3756 REM **********************************************************************
3757 REM * FORMNAME OR DATANAME INPUT ERROR 				      *
3759 REM **********************************************************************
3760 IF FORMNAMEINPFLAG% GOTO 3800 ELSE 3920
3762 REM **********************************************************************
3765 REM * INPUT NEXT FIELD OR CHAIN TO SEL. PROGRAMM / MODUL		      *
3768 REM **********************************************************************
3780 IF FORMNAMEINPFLAG% = 0 GOTO 3789
3782 IF NFORMNAME% THEN MID$(NFORMNAME$,1,8) = MID$(FIELDINPUT$,1,8) : MID$(NFORMNAME$,9,4) = ".FRM" : GOTO 3787
3785 MID$(FORMNAME$,1,8) = MID$(FIELDINPUT$,1,8) : MID$(FORMNAME$,9,4) = ".FRM" 
3786 IF VAL(ARBNR$) = 10 AND NFORMNAME% = 0 THEN GOSUB 4560 : GOTO 3127
3787 IF MID$(FORMNAME$,1,1) <> " " AND VAL(ARBNR$) = 9 OR VAL(ARBNR$) = 10 OR VAL(ARBNR$) = 11 THEN GOTO 3795 ELSE GOTO 3982
3789 IF NDATANAME% THEN MID$(NDATANAME$,1,8) = MID$(FIELDINPUT$,1,8) : MID$(NDATANAME$,9,4) = ".DAT" : GOTO 3795
3790 MID$(DATANAME$,1,8) = MID$(FIELDINPUT$,1,8) : MID$(DATANAME$,9,4) = ".DAT"
3792 IF VAL(ARBNR$) = 10 AND NDATANAME% = 0 THEN GOSUB 4562 : GOTO 3130
3795 ON VAL(ARBNR$) GOTO 3886,3886,22000,22000,22000,22000,22000,22000,4590,22310,20710
3796 REM **********************************************************************
3798 REM * PRINT ERRMSG. IN LINE 25. POS. CURSOR AND RETURN TO INPUT	      *
3800 REM **********************************************************************
3818 ERRMSGNR% = 2 : GOSUB 20000 : GOSUB 1000
3850 LET XPOS% = 46 + CRBLANK% -2 : YPOS% = 10
3860 GOSUB 1990
3870 LET I% = CRBLANK% - 1: GOTO 3140
3872 REM **********************************************************************
3873 REM * PRINT ERRMSG. IN LINE 25. RESET INPUT-BUFFER AND RETURN TO INPUT   *
3876 REM **********************************************************************
3878 ERRMSGNR% = 5 : GOSUB 20000
3880 GOSUB 1000
3882 FORMNAME$ = SPACE$(12)
3884 FIELDINPUT$ = SPACE$(8) : GOTO 3110
3885 REM **********************************************************************
3886 REM * WRITE CHAININFO TO CHAININF-FILE AND CHAIN TO PROGRAMM	      *
3887 REM **********************************************************************
3888 ERRFLAG% = 0 : FILENAME$ = "CHAININF.DEP"
3890 OPEN "R",#5,FILENAME$,26
3894 FIELD #5,12 AS CHAININFO1$,12 AS CHAININFO2$,2 AS CHAININFO3$
3895 LSET CHAININFO1$ = SPACE$(12) : LSET CHAININFO2$ = SPACE$(12) : LSET CHAININFO3$ = SPACE$(2)
3896 LSET CHAININFO1$ = FORMNAME$ : LSET CHAININFO2$ = DATANAME$ : LSET CHAININFO3$ = ARBNR$
3898 ERRFLAG% = 0 : PUT #5,1
3904 ON VAL(ARBNR$) GOTO 3905,3906,3907,3908,3909,3911,3912,3913,3914,3915,3916
3905 CHAIN "B:FORMAT.COM"
3906 CHAIN "B:FORMAT.COM"
3907 CHAIN "B:ENTRY.COM"
3908 CHAIN "B:ENTRY.COM"
3909 CHAIN "B:ENTRY.COM"
3911 CHAIN "B:VERIFY.COM"
3912 CHAIN "B:VERIFY.COM"
3913 CHAIN "B:VERIFY.COM"
3914 GOTO 4590
3915 GOTO 4546
3916 GOTO 20710
3917 REM **********************************************************************
3918 REM * PRINT ERRMSG. IN LINE 25. POS. CURSOR AND RETURN TO INPUT	      *
3919 REM **********************************************************************
3920 ERRMSGNR% = 6 : GOSUB 20000
3930 GOSUB 1000
3950 LET XPOS% = 46 + CRBLANK% - 2 : YPOS% = 14
3960 GOSUB 1990
3970 LET I% = CRBLANK% - 1 : GOTO 3140
3971 REM **********************************************************************
3972 REM * PRINT TEXT ON CRT AND POS. CURSOR				      *
3973 REM **********************************************************************
3974 XPOS% = 2 : YPOS% = 14
3976 GOSUB 1990
3978 PRINT "Bitte den Namen der Arbeitsdatei eingeben.  ........"
3980 RETURN
3982 XPOS% = 46 : YPOS% = 14
3984 GOSUB 1990
3985 REM **********************************************************************
3986 REM * SET INPUT-FIELD TO ENTER THE DATANAME			      *
3987 REM **********************************************************************
3988 FORMNAMEINPFLAG% = 0 : NFORMNAME% = 0 : MID$(FIELDINPUT$,1,8) = MID$(DATANAME$,1,8) : GOTO 3130
4000 REM **********************************************************************
4010 REM * PRINT HEADER ON CRT AND ALLOW INPUT				      *
4050 REM **********************************************************************
4060 XPOS% = 58 : YPOS% = 4 : GOSUB 1990
4070 PRINT CHR$(128); : XPOS% = 23 : YPOS% = 4 : GOSUB 1990
4080 PRINT CHR$(144);"*** Daten erfassen, fortsetzen ***"
4090 GOSUB 3974 : NKEYINP% = 8 : GOTO 3982
4092 REM **********************************************************************
4096 REM * PRINT ERRMSG. IN LINE 25. RESET THE INPUT-FIELD AND ALLOW INPUT    *
4100 REM **********************************************************************
4110 ERRMSGNR% = 7 : GOSUB 20000
4140 GOSUB 1000
4160 DATANAME$ = SPACE$(12)
4170 FIELDINPUT$ = SPACE$(8) : GOSUB 3972
4180 GOTO 3982
4182 REM **********************************************************************
4183 REM * PRINT ERRMSG. IN LINE 25. RESET INPUT-BUFFER AND ALLOW INPUT	      *
4185 REM **********************************************************************
4186 ERRMSGNR% = 11 : GOSUB 20000 : GOSUB 1000
4187 IF VAL(ARBNR$) = 10 THEN GOSUB 4562 : GOTO 3130
4188 DATANAME$ = SPACE$(12) : FIELDINPUT$ = SPACE$(12) : GOSUB 3972 : GOTO 3982
4200 REM **********************************************************************
4210 REM * PRINT HEADER ON CRT AND ALLOW INPUT 				      *
4215 REM **********************************************************************
4220 XPOS% = 52 : YPOS% = 4 : GOSUB 1990
4230 PRINT CHR$(128);: XPOS% = 27 : YPOS% = 4 : GOSUB 1990
4240 PRINT CHR$(144);"*** Daten  verændern ***"
4250 GOTO 3102
4260 REM **********************************************************************
4270 REM * PRINT HEADER ON CRT AND ALLOW INPUT 				      *
4300 REM **********************************************************************
4310 XPOS% = 51 : YPOS% = 4 : GOSUB 1990
4320 PRINT CHR$(128);: XPOS% = 29 : YPOS% = 4 : GOSUB 1990
4330 PRINT CHR$(144);"*** Daten  pråfen ***"
4340 GOTO 3102
4390 REM **********************************************************************
4395 REM * PRINT HEADER ON CRT AND ALLOW INPUT				      *
4400 REM **********************************************************************
4410 XPOS% = 57 : YPOS% = 4 : GOSUB 1990
4420 PRINT CHR$(128);: XPOS% = 24 : YPOS% = 4 : GOSUB 1990
4430 PRINT CHR$(144);"*** Daten pråfen, fortsetzen ***"
4440 GOSUB 3974 : NKEYINP% = 8 : GOTO 3982
4490 REM **********************************************************************
4495 REM * PRINT HEADER ON CRT AND ALLOW INPUT				      *
4500 REM **********************************************************************
4510 XPOS% = 51 : YPOS% = 4 : GOSUB 1990
4520 PRINT CHR$(128);: XPOS% = 28 : YPOS% = 4 : GOSUB 1990
4530 PRINT CHR$(144);"*** Datei  drucken ***"
4532 GOTO 3102
4533 REM **********************************************************************
4534 REM * PRINT HEADER ON CRT AND ALLOW INPUT				      *
4535 REM **********************************************************************
4536 XPOS% = 48 : YPOS% = 4 : GOSUB 1990
4538 PRINT CHR$(128); : XPOS% = 32 : YPOS% = 4 : GOSUB 1990
4540 PRINT CHR$(144);"*** KATALOG ***"
4542 GOTO 3102
4543 REM **********************************************************************
4544 REM * PRINT HEADER AND TEXT ON CRT AND ALLOW INPUT			      *
4545 REM **********************************************************************
4546 XPOS% = 53 : YPOS% = 4 : GOSUB 1990
4548 PRINT CHR$(128); : XPOS% = 27 : YPOS% = 4 : GOSUB 1990
4550 PRINT CHR$(144);"*** Dateiname  ændern ***";
4552 XPOS% = 2 : YPOS% = 11 : GOSUB 1990
4554 PRINT "Bitte neuen Namen der Format-Datei eingeben ........";
4555 XPOS% = 2 : YPOS% = 15 : GOSUB 1990
4556 PRINT "Bitte neuen Namen der Arbeitsdatei eingeben ........";
4558 GOTO 3102
4559 REM **************** POS. CURSOR AND RESET FIELD-INPUT *******************
4560 XPOS% = 46 : YPOS% = 11 : GOSUB 1990 : NFORMNAME% = 1 : MID$(FIELDINPUT$,1,8) = NFORMNAME$ : RETURN
4561 REM **************** POS. CURSOR AND RESET FIELD-INPUT *******************
4562 XPOS% = 46 : YPOS% = 15 : GOSUB 1990 : NDATANAME% = 1 : MID$(FIELDINPUT$,1,8) = NDATANAME$ : RETURN
4563 REM **********************************************************************
4564 REM * PRINT HEADER ON CRT AND ALLOW INPUT				      *
4565 REM **********************************************************************
4566 XPOS% = 50 : YPOS% = 4 : GOSUB 1990
4570 PRINT CHR$(128); : XPOS% = 27 : YPOS% = 4 : GOSUB 1990
4575 PRINT CHR$(146);"*** Datei  løschen ***"
4580 PRINT CHR$(7);CHR$(7);CHR$(7); : GOTO 3102
4582 REM **********************************************************************
4584 REM * DISPLAY ARBSTAT-RECORD					      *
4590 REM **********************************************************************
4592 IF ARBSTATOPEN% GOTO 4596 ELSE GOSUB 9100                              	REM *** OPEN ARBSTAT-FILE
4596 GOSUB 9180                         					REM *** READ ARBSTAT-DIR
4602 IF MID$(DATANAME$,1,1) = " " GOTO 4612
4603 IF DATANAME$ = "KATALOG .DAT" GOTO 4800
4604 FILENAME$ = DATANAME$ : FORMNR% = 1
4606 GOSUB 7410                            					REM *** SEARCHE FILE IN ARBSTAT-DIR
4608 IF FILEINDIR% GOTO 4620 ELSE 4110
4612 IF MID$(FORMNAME$,1,1) = " " GOTO 1013
4613 IF FORMNAME$ = "KATALOG .FRM" GOTO 4800
4614 FILENAME$ = FORMNAME$ : FORMNR% = 3
4616 GOSUB 7410                             					REM *** SEARCH FILE IN ARBSTAT-DIR
4618 IF FILEINDIR% GOTO 4620 ELSE 3873
4620 R1$ = MID$(NAME$,13,4) : R1% = VAL(R1$)
4622 GOSUB 9150 : GOSUB 9564                              			REM *** READ ARBSTAT
4625 FORMCHAIN$ = FC$:OMODE$ = MO$:STATUS$ = ST$ : PSTATUS$ = SP$
4626 DRECCOUNT$ = SPACE$(6):MID$(DRECCOUNT$,1,3) = SM$ : MID$(DRECCOUNT$,4,3) = WF$
4627 PRECCOUNT$ = SPACE$(6) : MID$(PRECCOUNT$,1,4) = VA$ : MID$(PRECCOUNT$,5,2) = MID$(PC$,1,2)
4628 CRECCOUNT$ = SPACE$(6) : MID$(CRECCOUNT$,1,2) = MID$(PC$,3,2) : MID$(CRECCOUNT$,3,4) = FL$
4629 REM **********************************************************************
4630 REM * READ ARBSTAT-FORMAT AND CALL THE DEP TO PRINT IT ON CRT	      *
4631 REM **********************************************************************
4632 FORMNAME$ = "DEPFORM .DEP" : FILENAME$ = FORMNAME$
4634 GOSUB 9280                                   				REM *** OPEN DEP-FORMFILE
4636 GOSUB 9580                                    				REM *** INIT FORMBUFFER
4638 GOSUB 9674                							REM *** READ FORMREC #1 FROM DEP-FORMFILE
4642 IF FORMBYTES$ <> "#&" GOTO 4770
4644 FIELDNO$ = "000" : MODE$ = "00" : SPECMOD$ = "000"        			REM *** SET DEP TO ENTRY MODE WITH FIELD 00
4646 LSET FLN$ = FIELDNO$ : LSET MO$ = MODE$ : LSET SM$ = SPECMOD$
4647 REM **********************************************************************
4648 REM * CALL THE DEP							      *
4649 REM **********************************************************************
4650 F% = VARPTR(#2) : Z% = VARPTR(#1) : CALL INIT(F%,Z%)  
4652 REM **********************************************************************
4654 GOSUB 7240                                 				REM *** TEST GENERAL DEP STAT
4656 ON PRIMST% GOTO 4680,4650,4650,4650,4650,4650,4650,16,4650,4650,4650,4650,4650,4650
4658 GOSUB 7280                                  				REM *** DEP STATUS-ERROR
4660 GOTO 16
4680 IF ARBSTAT% GOTO 4812
4681 XPOS% = 3:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,3,8);:XPOS% = 15:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,11,8);CHR$(13);
4682 XPOS% = 30:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,23,3);CHR$(13);
4683 XPOS% = 41:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,26,3);:XPOS% = 52:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,29,1);
4684 XPOS% = 63:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,30,3);:XPOS% = 73:YPOS% = 2:GOSUB 1990:PRINT MID$(NONZ$,33,3);
4685 XPOS% = 28:YPOS% = 7:GOSUB 1990:
4686 FOR N%=1 TO 6:IF MID$(NONZ$,38+N%,1)=" " THEN PRINT "0"; ELSE PRINT MID$(NONZ$,38+N%,1);
4687 NEXT N%
4688 XPOS% = 61:YPOS% = 7:GOSUB 1990:PRINT PRECCOUNT$;:XPOS% = 72:YPOS% = 7:GOSUB 1990:PRINT CRECCOUNT$;
4691 XPOS% = 25:YPOS% = 10:GOSUB 1990:PRINT MID$(NONZ$,51,4);:XPOS% = 25:YPOS% = 12:GOSUB 1990:PRINT MID$(NONZ$,19,4);
4692 XPOS% = 23:YPOS% = 14:GOSUB 1990:PRINT DRECCOUNT$;CHR$(13);
4693 XPOS% = 25:YPOS% = 16:GOSUB 1990:PRINT FORMCHAIN$;CHR$(13);
4697 XPOS% = 21:YPOS% = 22:GOSUB 1990:PRINT MID$(PSTATUS$,1,2);" ";:PRINT MID$(PSTATUS$,3,5);
4698 XPOS% = 8:YPOS% = 24:GOSUB 1990:PRINT OMODE$;:XPOS% = 19:YPOS% = 24:GOSUB 1990
4700 PRINT MID$(STATUS$,1,2);:XPOS% = 23:YPOS% = 24:GOSUB 1990:PRINT MID$(STATUS$,3,2);
4710 XPOS% = 27:YPOS% = 24:GOSUB 1990:PRINT MID$(STATUS$,5,2);CHR$(13);
4711 IF FORMNR% = 3 THEN GOSUB 4871 : GOTO 4748
4712 XPOS% = 28:YPOS% = 4:GOSUB 1990:PRINT KE$;:XPOS% = 40:YPOS% = 4:GOSUB 1990:PRINT KV$;
4714 XPOS% = 51:YPOS% = 4:GOSUB 1990:PRINT EC$;:XPOS% = 28:YPOS% = 5:GOSUB 1990:PRINT EE$;
4716 XPOS% = 40:YPOS% = 5:GOSUB 1990:PRINT VE$;:XPOS% = 40:YPOS% = 6:GOSUB 1990:PRINT VK$;
4718 XPOS% = 51:YPOS% = 6:GOSUB 1990:PRINT FK$;
4720 XPOS% = 40 : YPOS% = 7 : GOSUB 1990
4721 FOR N% = 1 TO 6
4722 IF MID$(NONZ$,44+N%,1) = " " THEN PRINT "0"; ELSE PRINT MID$(NONZ$,44+N%,1);
4723 NEXT N%
4724 P1% = 36 : P2% = 10 : XPOS% = P1% : YPOS% = P2% : GOSUB 1990
4726 FOR F% = 1 TO 211 STEP 15
4728 PRINT MID$(ADDR$,F%,15);
4730 XPOS% = P1% : P2% = P2% + 1 : YPOS% = P2% : GOSUB 1990
4732 NEXT F%
4734 P1% = 60 : P2% = 10 : XPOS% = P1% : YPOS% = P2% : GOSUB 1990
4736 FOR F% = 1 TO 121 STEP 15
4738 PRINT MID$(SUBR$,F%,15);
4740 XPOS% = P1% : P2% = P2% + 1 : YPOS% = P2% : GOSUB 1990
4742 NEXT F%
4744 XPOS% = 60 : YPOS% = 22 : GOSUB 1990 : PRINT MR$;
4748 XPOS% = 1:YPOS% = 25:GOSUB 1990:PRINT SPACE$(76);CHR$(13);" *** (ESC) *** ";CHR$(13);
4749 GOSUB 1000 : GOSUB 8210							REM *** CLOSE FORMAT-FILE
4755 GOTO 1012
4760 REM **********************************************************************
4762 REM * PRINT ERRMSG. IN LINE 25  
4764 REM **********************************************************************
4770 ERRMSGNR% = 9 : GOSUB 20000
4790 GOSUB 1000 : GOTO 16
4800 REM **********************************************************************
4802 REM * PRINT ARBSTAT-DIR ON CRT					      *
4804 REM **********************************************************************
4810 FORMNR% = 2 : ARBSTAT% = 1 : GOSUB 9150 : GOTO 4630 			REM *** INIT ARBSTAT FIELD TO CALL DEP
4811 REM ****************** PRINT ARBSTAT-DIR *********************************
4812 GOSUB 9180                                    				REM *** READ ARBSTAT-DIR
4814 ID$ = "FRM" : P1% = 2 : P2% = 2
4815 FOR F% = 1 TO 2
4816 XPOS% = P1% : YPOS% = P2% : GOSUB 1990
4820 FOR I% = 15 TO 127 STEP 16
4825 IF MID$(ARBSTATDIR1$,I%+9,3) = ID$ THEN PRINT MID$(ARBSTATDIR1$,I%,8);
4827 XPOS% = P1% + 10:P1% = XPOS%:YPOS% = P2%:GOSUB 1990
4830 NEXT I%
4832 P1% = 2:XPOS% = P1%:YPOS% = P2% + 1:GOSUB 1990
4834 FOR I% = 143 TO 239 STEP 16 
4836 IF MID$(ARBSTATDIR1$,I%+9,3) = ID$ THEN PRINT MID$(ARBSTATDIR1$,I%,8);
4837 XPOS% = P1% + 10:P1% = XPOS%:YPOS% = P2% + 1:GOSUB 1990
4838 NEXT I%
4840 XPOS% = 72:YPOS% = P2% + 1:GOSUB 1990
4842 IF MID$(ARBSTATDIR2$,10,3) = ID$ THEN PRINT MID$(ARBSTATDIR2$,1,8);
4844 P1% = 2:XPOS% = P1%:YPOS% = P2% + 2:GOSUB 1990
4846 FOR I% = 17 TO 129 STEP 16
4850 IF MID$(ARBSTATDIR2$,I%+9,3) = ID$ THEN PRINT MID$(ARBSTATDIR2$,I%,8);
4851 XPOS% = P1% + 10:P1% = XPOS%:YPOS% = P2% + 2:GOSUB 1990
4852 NEXT I%
4854 P1% = 12:XPOS% = P1%:YPOS% = P2% + 3:GOSUB 1990
4856 FOR I% = 145 TO 225 STEP 16
4860 IF MID$(ARBSTATDIR2$,I%+9,3) = ID$ THEN PRINT MID$(ARBSTATDIR2$,I%,8);
4861 XPOS% = P1% + 10:P1% = XPOS%:YPOS% = P2% + 3:GOSUB 1990
4862 NEXT I%
4864 P1% = 2 : P2% = 8 : ID$ = "DAT"
4866 NEXT F%
4867 ARBSTAT% = 0 : XPOS% = 68 : YPOS% = 24 : GOSUB 1990 : PRINT "1"; : GOTO 4748
4868 REM **********************************************************************
4869 REM PRINT FORMAT-NO. AND FORMAT-CHAIN-KEY ON CRT			      *
4870 REM **********************************************************************
4871 P1% = 25 : P2% = 10 : I1% = 1 : I2% = 21 : F1% = 1
4872 FOR I% = 1 TO 8
4874  FOR F% = I1% TO I2% STEP 4
4875  XPOS% = P1% + 8 : YPOS% = P2% : P1% = XPOS% : GOSUB 1990
4876  IF MID$(ADDR$,F%,4) = "    " GOTO 4880
4878  PRINT MID$(ADDR$,F%+1,3); : IF MID$(ADDR$,F%,1) = "*" THEN PRINT MID$(ADDR$,F%,1); ELSE PRINT CHR$(24);
4879 PRINT MID$(SUBR$,F1%,3);
4880 F1% = F1% + 3
4881 NEXT F%
4882 ON I% GOTO 4886,4888,4890,4892,4894,4896,4898
4884 RETURN
4886 P1% = 25 : P2% = 12 : I1% = 25 : I2% = 45 : GOTO 4900
4888 P1% = 25 : P2% = 14 : I1% = 49 : I2% = 69 : GOTO 4900
4890 P1% = 25 : P2% = 16 : I1% = 73 : I2% = 93 : GOTO 4900
4892 P1% = 25 : P2% = 18 : I1% = 97 : I2% = 117 : GOTO 4900
4894 P1% = 25 : P2% = 20 : I1% = 121 : I2% = 141 : GOTO 4900
4896 P1% = 25 : P2% = 22 : I1% = 145 : I2% = 165 : GOTO 4900
4898 P1% = 25 : P2% = 24 : I1% = 169 : I2% = 177 : GOTO 4900
4900 NEXT I%
6620 REM **********************************************************************
6622 REM * SUB.: DECREMENT RECORD-COUNTER				      *
6624 REM **********************************************************************
6625 RECCOUNT$ = MID$(NONZ50$,39,6) : RECCOUNT% = VAL(RECCOUNT$)
6630 RECCOUNT% = RECCOUNT% - 1 : RECCOUNT$ = STR$(RECCOUNT%)
6635 NRECCOUNT$ = SPACE$(6) : RSET NRECCOUNT$ = RECCOUNT$
6640 MID$(NONZ50$,39,6) = NRECCOUNT$ : RETURN
7210 REM **********************************************************************
7212 REM * SUB.: CLEAR ADD/SUB/MUL REGISTER TO USE IT AS FORMAT-NO. - DIR     *
7214 REM **********************************************************************
7220 MID$(MR$,1,15) = SPACE$(15) : MID$(ADDR$,1,225) = SPACE$(225) : MID$(SUBR$,1,135) = SPACE$(135)
7230 RETURN
7240 REM **********************************************************************
7242 REM * SUB.: CHECK GENERAL-STATUS (DEP)				      *
7244 REM **********************************************************************
7250 GENERALST$ = MID$(ST$,1,2) : PRIMST$ = MID$(ST$,3,2) : SEKST$ = MID$(ST$,5,2)
7260 GENERALST% = VAL(GENERALST$) : PRIMST% = VAL(PRIMST$) : SEKST% = VAL(SEKST$)
7270 ON GENERALST% GOTO 7330,7320,7320,7320,7320,7320,7320
7280 ERRMSGNR% = 10 : GOSUB 20000
7300 GOSUB 1000 : RETURN
7310 REM **********************************************************************
7320 PRIMST% = 8 : RETURN
7330 RETURN
7400 REM **********************************************************************
7402 REM * SUB.: FILE IN ARBSTAT-DIR. ?					      *
7404 REM **********************************************************************
7410 FILEINDIR% = 0 : DIR2% = 0 : NAME$ = SPACE$(16)
7412 FOR I% = 15 TO 239 STEP 16
7420 IF MID$(ARBSTATDIR1$,I%,12) = FILENAME$ GOTO 7480
7430 NEXT I%
7435 DIR2% = 1
7440 FOR I% = 1 TO 225 STEP 16
7450 IF MID$(ARBSTATDIR2$,I%,12) = FILENAME$ GOTO 7480
7460 NEXT I%
7470 FILEINDIR% = 0 : RETURN
7480 IF DIR2% = 1 THEN NAME$ = MID$(ARBSTATDIR2$,I%,16) ELSE NAME$ = MID$(ARBSTATDIR1$,I%,16)
7485 FILEINDIR% = 1 : RETURN
8000 REM **********************************************************************
8002 REM * PRINT ERRMSG. IN LINE 25					      *
8004 REM **********************************************************************
8010 ERRMSGNR% = 16 : GOSUB 20000
8030 GOSUB 1000 : GOTO 16
8050 REM ******************* FATAL SYTEM ERROR ********************************
8060 GOTO 8270
8100 REM ******************* DISC I/O ERROR ***********************************
8110 GOTO 8270
8120 REM ******************* DISC FULL ****************************************
8130 GOTO 16
8140 REM ******************* CP/M DIR FULL ************************************
8150 GOTO 8270
8160 REM ******************* CLOSE ARBSTAT ************************************
8170 ERRFLAG% = 0 : CLOSE #1
8190 ARBSTATOPEN% = 0 : ARBSTATWRITE% = 0 : RETURN
8200 REM ******************* CLOSE FORMFILE ***********************************
8210 ERRFLAG% = 0 : USRFORMFOPEN% = 0
8220 CLOSE #2 : RETURN
8260 REM **********************************************************************
8262 REM * ERROR !!!  WRITE ERROR-NO. IN ARBSTAT			      *
8264 REM **********************************************************************
8270 IF ARBSTATOPEN% = 1 AND ARBSTATWRITE% = 1 THEN GOTO 8280 ELSE GOTO 16
8280 MID$(PSTATUS$,1,2) = STR$(ERR)
8290 MID$(PSTATUS$,3,5) = STR$(ERL)
8295 LSET SP$ = PSTATUS$
8300 MID$(NONZ50$,23,3) = "ERR" : LSET NONZ$ = NONZ50$ : GOSUB 9550            	REM *** WRITE ARBSTAT
8330 GOTO 16
9000 REM ******************** OPEN ARBSTAT ************************************
9100 FILENAME$ = "ARBSTAT.DEP"
9120 ERRFLAG% = 0 : OPEN "R",#1,FILENAME$,512
9125 ARBSTATOPEN% = 1 
9130 RETURN
9140 REM ******************** FIELD FOR ARBSTAT AND DEP ***********************
9150 FIELD #1,54 AS NONZ$,8 AS SP$,2 AS MO$,3 AS FLN$,3 AS SM$,6 AS ST$,3 AS WF$,4 AS VA$,4 AS FC$,4 AS PC$,4 AS FL$,6 AS EE$,6 AS VE$,6 AS KE$,6 AS KV$,6 AS EC$,6 AS FK$,6 AS VK$,15 AS MR$,225 AS ADDR$,135 AS SUBR$
9160 RETURN
9170 REM ******************** READ ARBSTAT DIR ********************************
9180 FIELD #1,255 AS ARBSTATDIR1$,255 AS ARBSTATDIR2$,2 AS NOTUSED$
9200 ERRFLAG% = 0 : GET #1,1
9202 IF MID$(ARBSTATDIR1$,1,10) = "ARBSTATDIR" THEN RETURN
9210 ERRFLAG% = 8 : RETURN
9220 REM **********************************************************************
9222 REM * SUB.: PRINT ERRMSG. IN LINE 25				      *
9224 REM **********************************************************************
9230 ERRMSGNR% = 17 : GOSUB 20000
9250 GOSUB 1000 : RETURN
9270 REM ******************** OPEN FORMFILE ***********************************
9280 USRFORMFOPEN% = 1 : ERRFLAG% = 0
9290 OPEN "R",#2,FORMNAME$,1922
9300 RETURN
9360 REM ******************** WRITE ARBSTAT DIR *******************************
9370 ERRFLAG% = 0 : PUT #1,1
9420 RETURN
9430 REM ******************** INIT A NEW ARBSTAT ******************************
9450 LSET NONZ$ = NONZ50$
9460 LSET SP$ = PSTATUS$
9470 LSET MO$ = MODE$ : LSET FLN$ = FIELDNO$ : LSET SM$ = SPECMOD$
9530 RETURN
9540 REM ******************** WRITE ARBSTAT ***********************************
9550 ERRFLAG% = 0 : PUT #1,R1%
9555 ARBSTATWRITE% = 1
9560 RETURN
9562 REM ******************** READ ARBSTAT ************************************
9564 ERRFLAG% = 0
9566 GET #1,R1% : RETURN
9570 REM ******************** INIT FORMBUFFER *********************************
9580 FIELD #2,2 AS FORMBYTES$,255 AS FORMREC1$,255 AS FORMREC2$,255 AS FORMREC3$,255 AS FORMREC4$,255 AS FORMREC5$,255 AS FORMREC6$,			            255 AS FORMREC7$,135 AS FORMREC8$
9585 RETURN
9672 REM ******************** READ FORMREC ************************************
9674 ERRFLAG% = 0
9676 GET #2,FORMNR%
9678 RETURN
9680 REM **********************************************************************
9685 REM * SUB.: DECREMENT RECORD-COUNTER				      *
9688 REM **********************************************************************
9690 RECCOUNT$ = MID$(NONZ50$,39,6) : RECCOUNT% = VAL(RECCOUNT$)
9700 RECCOUNT% = RECCOUNT% + 1 : RECCOUNT$ = STR$(RECCOUNT%)
9705 NRECCOUNT$ = SPACE$(6) : RSET NRECCOUNT$ = RECCOUNT$
9710 MID$(NONZ50$,39,6) = NRECCOUNT$ : RETURN
9900 REM **********************************************************************
9902 REM * ERROR HANDLING						      *
9904 REM **********************************************************************
9910 ON ERRFLAG% GOTO 8060,8060,8060,8110,8130,8150,8010
9920 GOTO 16
10000 REM ***************************** E R R O R *****************************
10010 REM 
10020 REM ERRFLAG% = 1 = "FILE NOT FOUND"
10030 REM ERRFLAG% = 2 = "FILE ALREADY EXISTS"
10040 REM ERRFLAG% = 3 = "BAD FILENAME"
10050 REM ERRFLAG% = 4 = "FATAL ERROR"
10060 REM ERRFLAG% = 5 = "DISC I/O ERROR"
10070 REM ERRFLAG% = 6 = "DISC FULL"
10080 REM ERRFLAG% = 7 = "CP/M DIR FULL"
10085 REM ERRFLAG% = 8 = "NO ARBSTATDIR"
10090 IF ERR < 50 OR ERR > 67 GOTO 10110
10100 ON ERR-49 GOTO 10110,10110,10110,10310,10110,10110,10110,10160,10310,10110,10110,10210,10110,10110,10310,10110,10110,10290
10110 GOSUB 10340 : ERRFLAG% = 4 : RESUME 9900
10112 REM *********************************************************************
10114 REM * PRINT I/O ERRMSG. IN LINE 25				      *
10116 REM *********************************************************************
10160 ERRMSGNR% = 18 : GOSUB 20000
10190 GOSUB 1000 : ERRFLAG% = 5  : RESUME 9900
10200 REM *********************************************************************
10202 REM * PRINT I/O ERRMSG. IN LINE 25				      *
10204 REM *********************************************************************
10210 ERRMSGNR% = 19 : GOSUB 1990
10240 GOSUB 1000 : ERRFLAG% = 6 : RESUME 9900
10250 REM *********************************************************************
10290 GOSUB 10340 : ERRFLAG% = 7 : RESUME 9900
10310 IF VAL(ARBNR$) = 11 THEN GOSUB 10380 : RESUME 20810
10312 IF VAL(ARBNR$) = 14 THEN RESUME 980
10314 ERRFLAG% = 1 : RESUME 9900
10320 ERRFLAG% = 2 : RESUME 9900
10330 ERRFLAG% = 3 : RESUME 9900
10332 REM *********************************************************************
10334 REM * SUB.: PRINT BASIC OR I/O ERRMSG. IN LINE 25			      *
10336 REM *********************************************************************
10340 XPOS% = 1 : YPOS% = 25 : GOSUB 1990 
10350 PRINT CHR$(144);" *** FEHLER #";ERR;"/";ERL;" DATEI: ";FILENAME$;" (ON ERR) !! (ESC) ***";CHR$(128);CHR$(30);CHR$(13);
10360 GOSUB 1000 : RETURN
10370 REM *********************************************************************
10372 REM * SUB.: PRINT I/O ERRMSG. IN LINE 25				      *
10374 REM *********************************************************************
10380 ERRMSGNR% = 20 : GOSUB 20000
10400 GOSUB 1000 : RETURN
20000 REM *********************************************************************
20002 REM * SUB.: PRINT ERROR-MSG. ON CRT				      *
20004 REM *********************************************************************
20070 XPOS% = 1 : YPOS% = 25 : GOSUB 1990 
20080 PRINT CHR$(144);" *** ";
20090 ON ERRMSGNR% GOSUB 20120,20130,20140,20150,20160,20170,20180,20190,20200,20210,20220,20230,20240,20250,20260,20270,20280,20290,20300,20310
20095 PRINT " !!  (ESC) *** ";CHR$(128);CHR$(30);CHR$(13);
20115 RETURN
20120 PRINT "ARBEITS NR. FALSCH"; : RETURN					REM *** MSG. 01
20130 PRINT "FORMATNAME FALSCH"; : RETURN					REM *** MSG. 02
20140 PRINT "FORMATNAME BERIETS VORHANDEN"; : RETURN				REM *** MSG. 03
20150 PRINT "KEINE SYSTEM-FORMATE"; : RETURN					REM *** MSG. 04
20160 PRINT "FORMAT-DATEI NICHT VORHANDEN"; : RETURN				REM *** MSG. 05
20170 PRINT "NAME DER ARBEITSDATEI FALSCH"; : RETURN				REM *** MSG. 06
20180 PRINT "ARBEITSDATEI NICHT VORHANDEN"; : RETURN				REM *** MSG. 07
20190 PRINT "NEUE DISKETTE IN LAUFWERK 1 EINLEGEN"; : RETURN			REM *** MSG. 08
20200 PRINT "KEINE SYSTEM-FORMATE FÅR DIE ARBEITS-STATUS-DATEI"; : RETURN	REM *** MSG. 09
20210 PRINT "DEP FEHLER-STATUS"; : RETURN					REM *** MSG. 10
20220 PRINT "ARBEITSDATEI BEREITS VORHANDEN"; : RETURN				REM *** MSG. 11
20230 PRINT "KEIN PROGRAMM ";MID$(PROGNAME$,1,10); : RETURN			REM *** MSG. 12
20240 PRINT "ÆNDERUNG DURCHGEFÅHRT"; : RETURN					REM *** MSG. 13
20250 RETURN									REM *** MSG. 14 (FREE)
20260 RETURN									REM *** MSG. 15 (FREE)
20270 PRINT "ARBEITS-STATUS-DATEI NICHT VORHANDEN"; : RETURN			REM *** MSG. 16
20280 PRINT "ARBEITS-STATUS-DATEI VOLL"; : RETURN				REM *** MSG. 17 
20290 PRINT "SCHREIB- ODER LESEFEHLER AUF DER DISKETTE"; : RETURN		REM *** MSG. 18
20300 PRINT "DISKETTE VOLL"; : RETURN						REM *** MSG. 19
20310 PRINT "DATEI NICHT IN DER CP/M DATEIVERWALTUNG"; : RETURN			REM *** MSG. 20
20700 REM *********************************************************************
20702 REM * DELETE A FILE 						      *
20704 REM *********************************************************************
20710 IF ARBSTATOPEN% GOTO 20730 ELSE GOSUB 9100				REM *** OPEN ARBSTAT
20730 XPOS% = 1 : YPOS% = 25 : GOSUB 1990 : PRINT SPACE$(76);
20735 GOSUB 9180                        					REM *** READ ARBSTAT-DIR
20750 IF MID$(DATANAME$,1,1) = " " GOTO 20760
20755 FILENAME$ = DATANAME$ : GOTO 20770
20760 IF MID$(FORMNAME$,1,1) = " " GOTO 1013
20765 FILENAME$ = FORMNAME$
20770 GOSUB 7410                               					REM *** SEARCH FILE IN ARBSTAT-DIR
20780 IF FILEINDIR% THEN GOTO 20790 ELSE IF MID$(DATANAME$,1,1) = " " THEN GOTO 3873 ELSE GOTO 4110
20790 IF ENTRYSTATERR% THEN GOTO 20810 ELSE ERRFLAG% = 0 : KILL FILENAME$	REM *** KILL THE CP/M FILE
20810 IF DIR2% GOTO 20840
20820 MID$(ARBSTATDIR1$,I%,16) = SPACE$(16)
20830 GOTO 20841
20840 MID$(ARBSTATDIR2$,I%,16) = SPACE$(16)
20841 GOSUB 21020                          					REM *** DECREMENT ARBSTAT RECCOUNT
20842 GOSUB 9370                             					REM *** WRITE ARBSTAT-DIR
20850 XPOS% = 1 : YPOS% = 25 : GOSUB 1990
20860 PRINT CHR$(144);"*** ";MID$(FILENAME$,1,8);"   GELØSCHT !!!    ";
20870 IF VAL(ARBNR$) = 11 THEN PRINT "***";CHR$(128);CHR$(13);CHR$(7); : GOTO 1013
20880 PRINT "ANZAHL SÆTZE = 00 !! (ESC) ";CHR$(128);CHR$(13);CHR$(7); : GOSUB 1000 : GOTO 16
21010 REM *********************************************************************
21012 REM * SUB.: DECREMENT ARBSTAT-RECORD-COUNTER			      *
21014 REM *********************************************************************
21020 ARBSTATRECCOUNT$ = MID$(ARBSTATDIR1$,11,4) : ARBSTATRECCOUNT% = VAL(ARBSTATRECCOUNT$)
21030 ARBSTATRECCOUNT% = ARBSTATRECCOUNT% - 1 : ARBSTATRECCOUNT$ = STR$(ARBSTATRECCOUNT%)
21040 NARBSTATRECCOUNT$ = SPACE$(4) : RSET NARBSTATRECCOUNT$ = ARBSTATRECCOUNT$
21050 MID$(ARBSTATDIR1$,11,4) = NARBSTATRECCOUNT$
21060 RETURN
22000 REM *********************************************************************
22002 REM * FILES ON DISC ?						      *
22004 REM *********************************************************************
22010 GOSUB 9100                                    				REM *** OPEN ARBSTAT
22030 GOSUB 9170                                    				REM *** READ ARBSTATDIR
22042 ERRFLAG% = 0 : CLOSE							REM *** CLOSE ALL FILES
22044 IF MID$(FORMNAME$,1,1) = " " GOTO 22100
22050 FILENAME$ = FORMNAME$
22060 GOSUB 7410								REM *** SEARCH FILE IN ARBSTAT-DIR
22070 IF FILEINDIR% GOTO 22100
22090 GOTO 3873
22100 FILENAME$ = DATANAME$
22110 GOSUB 7410								REM *** SEARCH FILE ARBSTAT-DIR
22120 IF VAL(ARBNR$) = 3 AND FILEINDIR% GOTO 4185
22122 IF VAL(ARBNR$) = 3 AND FILEINDIR% = 0 GOTO 3886
22124 IF FILEINDIR% GOTO 3886
22150 GOTO 4100
22200 REM *********************************************************************
22202 REM * READ FROM CHAININF-FILE THE WORK-NO.			      *
22204 REM *********************************************************************
22210 ERRFLAG% = 0 : FILENAME$ = "CHAININF.DEP"
22220 OPEN "R",#5,FILENAME$,26
22240 FIELD #5,12 AS CHAININFO1$,12 AS CHAININFO2$,2 AS CHAININFO3$
22250 ERRFLAG% = 0 : GET #5,1
22270 FORMNAME$ = CHAININFO1$ : DATANAME$ = CHAININFO2$ : ARBNR$ = CHAININFO3$
22280 ERRFLAG% = 0 : CLOSE							REM *** CLOSE ALL FILES
22290 RETURN
22300 REM *********************************************************************
22302 REM * RENAME A FILE						      *
22304 REM *********************************************************************
22310 IF ARBSTATOPEN% THEN GOTO 22330 ELSE GOSUB 9100				REM *** OPEN ARBSTAT
22330 GOSUB 9180								REM *** READ ARBSTAT-DIR
22350 IF MID$(FORMNAME$,1,1) = " " THEN GOTO 22430
22360 FILENAME$ = FORMNAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22370 IF FILEINDIR% = 0 THEN NFORMNAME% = 0 : GOTO 3873
22380 FILENAME$ = NFORMNAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22390 IF FILEINDIR% GOTO 1873
22392 FILENAME$ = FORMNAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22400 IF DIR2% THEN MID$(ARBSTATDIR2$,I%,12) = NFORMNAME$ ELSE MID$(ARBSTATDIR1$,I%,12) = NFORMNAME$
22420 NFILENAME$ = NFORMNAME$ : GOSUB 22485 : GOSUB 22510 : GOTO 1013
22430 FILENAME$ = DATANAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22440 IF FILEINDIR% = 0 THEN NDATANAME% = 0 : GOTO 4110
22450 FILENAME$ = NDATANAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22460 IF FILEINDIR% GOTO 4186
22462 FILENAME$ = DATANAME$ : GOSUB 7410					REM *** SEARCH FILE IN ARBSTAT-DIR
22470 IF DIR2% THEN MID$(ARBSTATDIR2$,I%,12) = NDATANAME$ ELSE MID$(ARBSTATDIR1$,I%,12) = NDATANAME$
22474 NFILENAME$ = NDATANAME$ : GOSUB 22485 : GOSUB 22510 : GOTO 1013
22485 ERRFLAG% = 0 : NAME FILENAME$ AS NFILENAME$				REM *** RENAME THE CP/M FILENAME
22487 GOSUB 9370								REM *** WRITE ARBSTAT-DIR
22488 R1$ = MID$(NAME$,13,4) : R1% = VAL(R1$)
22490 GOSUB 9150 : GOSUB 9564							REM *** READ ARBSTAT
22494 IF MID$(FORMNAME$,1,1) = " " THEN MID$(NONZ$,3,8) = NDATANAME$ ELSE MID$(NONZ$,11,8) = NFORMNAME$
22496 GOSUB 9550								REM *** WRITE ARBSTAT
22498 RETURN
22500 REM *********************************************************************
22502 REM * SUB.: PRINT ERRMSG. IN LINE 25				      *
22504 REM *********************************************************************
22510 ERRMSGNR% = 13 : GOSUB 20000
22530 GOSUB 1000 : RETURN
«eof»