File: SSTRBE.MA of Tape: Various/Decus/decus-2
(Source file text) 

.TITLE L I N K - L I B R A R Y
.SBTTL STRBEW:STRINGBEWERTUNG

.INCLUDE SYS:MACLIB.MA

OPEN "STRBEW","F"

/****** STRBEW ******
/15-3-83 VH
/(L,AC)=?,?
/CALL STRBEW
/FELD STRINGDEFINITION
/ADRESSE    -"-
/1.RUECKSPRUNG: STRING NICHT GEFUNDEN
/2.    -"-    : STRING GEFUNDEN
/(L,AC)=?,STRINGNUMMER
/********************


/DAS UNTERPROGRAMM STRBEW SUCHT IN DER STRINGDEFINITIONSTABELLE EINEN
/BESTIMMTEN STRING UND GIBT DESSEN STRINGNUMMER IM AKKU ZURUECK

/MIT DEN MACROS OPSTR,TABERZ UND CLOSTR MUESSEN DIE STRINGDEFINITIONSTABELLE
/UND DIE ENTSPRECHENDE SUBROUTINENTABELLE ERTSELLT SEIN,DAMIT IN DIESEN DER
/STRING GESUCHT WERDEN KANN

.ENTRY STRBEW
.EXTERNAL STRBUF

DEFMER STELLE,STRLG,ZEICHN,STRNUM,STRANF,STRDEF,STRIN
DEFMER BUCH$,PNTR1$

STRBEW,	OPNSUB RT:EXIT$,STRFE,STRDEF
	RESMER CLA:STRNUM
	DCAADD ZEICHN,AC+STRDEF
	DCAADD STRFE$,AC+STRFE
	TAELS AC,STRBUF,(6)

STRFE:	V
	TAD I ZEICHN
	CDF .FLD
	DCA STRLG		/STRINGLAENGE

	TAD STRLG
	SNA
	JMP NOSTR$		/TABELLENENDE
	SNA SPA
	JMP STRB1$

	INC STRNUM,0		/STRLG > 0
	JMP STRB2$
STRB1$:	CMA IAC			/STRLG < 0
	DCA STRLG

STRB2$:	INC ZEICHN,0
	DCAADD STRANF,ZEICHN

	DCA STELLE		/STRING VERGLEICHEN

STRB3$:	TAELL AC,STRBUF,STELLE	/AC:=ZEICHEN AUS STRINGBUFFER
	SNA
	JMP STRGE$		/ZEICHEN=0
	DCA BUCH$

STRFE$:	V
	TAD I ZEICHN		/BUCHSTABE VON STRING-DEF.-TABELLE
	CDF .FLD
	CMA IAC
	TAD BUCH$		/BEIDE BUCHSTABEN GLEICH ?
	SZA CLA
	JMP STWEI$		/NEIN

	INC STELLE,0
	INC ZEICHN,0

	JMP STRB3$		/NAECHSTEN BUCHSTABEN VERGLEICHEN

STRGE$:	VERGLE STRLG,STELLE,EQ:STGEF$

STWEI$:	DCAADD ZEICHN,STRANF,STRLG	/NAECHSTE STRINGDEFINITION
	JMP STRFE

STGEF$:	CLA			/STRING GEFUNDEN
	DCA PNTR1$		/STRINGTABELLE AUF 0 SETZEN
STRG1$:	TAELS AC,STRBUF,PNTR1$
	INC PNTR1$,0
	VERGLE PNTR1$,(7.),LT:STRG1$

	INC STRBEW,0 
	TAD STRNUM
	SKP
NOSTR$:	CLA			/STRING NICHT GEFUNDEN

EXIT$:	V
	JMP I STRBEW		/RUECKSPRUNG

CLOSE "STRBEW"

ENDPR