Verzeichnisnummern zählen für Cardrive im Netzwerk
Dieses Unterprogramm setzt den Inhalt der Seiten Das Carddrive im Netzwerk und Programmierung --> Batch voraus.
Mit einem ähnlichen Prinzip der „Nummerierung“ werden Linienflüge weltweit verwaltet, da der Wertevorrat auf Grund der Zahlenbasis 36 erheblich größer ist.
Im Jahre 1995 war das VNRPLUS1-Modul der Zähler eines TSR-Programmes zur fortlaufenden Speicherung von Bildschirminhalten (s. ZielDatei) und ist deshalb in keiner Hochsprache geschrieben worden. In der vorliegenden Form wird die Ausgabe in die Datei LETZTVNR.TXT als eine Möglichkeit der Datenübergabe an andere Programme verwendet.
Heutzutage könnte mit MySQL der Kern dieser Zählfunktion beispielsweise wie folgt realisiert werden:
SELECT CONV(`VNR`,36,10)+1;
VNRplus1.exe
.model small .code .stack 100h datum equ ´28.05.95´ ;Byte-suchen ;df = 0; es:di = Vergleichsstring; al = Vergl.Wert; cx anzahl ;ze gefunden, di = gefundene Pos. + 1 ;nz nicht gefunden, cx = 0, di = ende + 1 ; Makrodefinitionen ; Makro für den DOS-Aufruf DOS MACRO FunNr mov AH,FunNr int 21h ENDM ; --------------------------------------------------------- ; Konstanten für DOS-Funktionen oeffnen equ 3Dh erstellen equ 5Bh schliessen equ 3Eh lesen equ 3Fh schreiben equ 40h beenden equ 4Ch ausgeben equ 09h ; Ende des Vereinbarungsteils ; --------------------------------------------------------- org 100h vnrbearb proc mov ax,cs mov ds,ax MOV DX,OFFSET QuellDATEI ; Adresse des Quelldateinamens MOV AL,2 ; R/W-Zugriff DOS OEFFNEN JNC LAB_10 mov dx,offset ErrorOeffn jmp ProgEnde LAB_10: MOV cs:Haendler1,AX ; Handle speichern MOV CX,3 ; 3 Byte aus Quelldatei lesen MOV BX,cs:Haendler1 MOV DX,OFFSET vnr ; Adresse des Lesepuffers DOS LESEN JNC LAB_11 mov dx,offset ErrorLes jmp ProgEnde LAB_11: call vnrplus1 ;schreibzeiger verschieben MOV BX,cs:Haendler1 MOV DX,0 MOV CX,0 ; auf Dateianfang mov ax,4200h int 21h ;DOS Zeiger verschieben JNC LAB_13 mov dx,offset ErrorSchr jmp ProgEnde lab_13: ;geänderte VNR abspeichern MOV CX,3 ; 3 Byte schreiben MOV BX,cs:Haendler1 MOV DX,OFFSET vnr ; Adresse des Schreibpuffers DOS schreiben JNC LAB_12 mov dx,offset ErrorSchr jmp ProgEnde LAB_12: dos schliessen mov dx,offset TextOK jnc ProgEnde ;kein Fehler mov dx,offset ErrorSchlie ProgEnde: mov si,dx ; call textausgabe dos beenden ; ret vnrbearb endp ; Datenbereich Dateiarbeit Version db ´Version vom ´,Datum,10,13,´$´ ErrorZÜ db ´Abbruch durch Zeitüberschreitung!´,10,13,´$´ TextOK DB ´ Vorgang gespeichert! ´,10,13,´$´ ErrorErst DB ´FEHLER beim ERSTELLEN der Datei! ´,10,13,´$´ ErrorLes DB ´FEHLER beim LESEN der Datei! ´,10,13,´$´ ErrorOeffn DB ´FEHLER beim ÖFFNEN der Datei! ´,10,13,´$´ ErrorSchr DB ´FEHLER beim SCHREIBEN der Datei! ´,10,13,´$´ ErrorSchlie DB ´FEHLER beim SCHLIESSEN der Datei!´,10,13,´$´ QuellDatei DB ´LETZTVNR.TXT´,0 ;ZielDatei DB ´VORGANG1.XXX´,0 Haendler1 DW ? Haendler2 DW ? BytePuffer DB ? vnrplus1 proc mov dx,cs mov ds,dx mov es,dx mov al,cs:vnrr ;rechtes Zeichen call bytesuch mov al,[di] mov cs:vnrr,al cmp cl,1 ;Übertrag? jz weiterm ;ja ret weiterm: mov al,cs:vnrm ;mittleres Zeichen call bytesuch mov al,[di] mov cs:vnrm,al cmp cl,1 ;Übertrag? jz weiterl ;ja ret weiterl: mov al,cs:vnrl ;linkes Zeichen call bytesuch mov al,[di] mov cs:vnrl,al ret vnrplus1 endp bytesuch proc lea di,konvtab ;Vergleichsziel mov cx,37 ;Anzahl cld repnz scasb jnz fehler1 ;nicht gefunden fehler1: ret bytesuch endp vnr: ;3 Byte für VNR vnrl db ´z´ vnrm db ´z´ vnrr db ´z´ konvtab db ´0123456789abcdefghijklmnopqrstuvwxyz0X´ end