· Text 7403 · w8 · inlagg
Jag har en gammal rutin från ABC80-tiden som fungerar som
den skall och därför inte borde ändras, men som är "oskön"
därför att den innehåller ett virrvarr av IF-satser och ett
par GOTO. Det handlar om att ge namn på en fil och skriva i
den:
AA INPUT Filnamn (Fil)
IF Fil="PR1:" (öppnar printer m m) :GOTO BB
(ELSE)
ON ERROR GOTO BB
OPEN Fil:CLOSE ! Fil finns redan
(Skall vi fortsätta på den?)
IF NEJ THEN AA
(ELSE)
(Fixa en rad åtgärder och...)
BB SKRIV på filen
Saken kompliceras dels av att villkoren på flera ställen är
mycket komplicerade och kräver flera rader, dels också av
att jag måste ha en felrutin för att fånga upp oavsiktliga
tryckningar på PF-tangent.
Jag har gjort några försök att "modernisera" versionen med
WHILE-WEND och diverse funktioner, men jag kommer inte
ifrån GOTO-hoppen; i några fall blir de tydligen otillåtna
(det verkar som om man inte får hoppa ur en funktion med
GOTO).
Man KAN kanske dela upp koden i ett otal
smårutiner(funktioner) som anropas vid de behövliga
ställena, men då tycker jag koden blir ENORM och
oöverskådlig.
Man KAN också sätta flaggor för allt möjligt och pröva dem
vid alla kritiska punkter, men inte heller det gör koden
bättre, tycker jag.
Ytterligare en möjlighet jag fundert på är att anropa
skrivrutinen (som är en mycket omfattande egen procedur)
direkt överallt där det står GOTO BB och att hela resten
som en oändlig slinga; men då måste man kunna ta sig ur
slingan när skrivandet är färdigt - ny flagga...
Någon av melonerna som har något tips att ge?
(Jag har funderingar på att detta kunde vara inspiration
till en artikel i Bladet, det är därför jag tar upp det i
detta möte; kanske borde det varit i 800-mötet i stället?)
---
PS Naturligtvis är pseudokoden ovan starkt förenklad. Det finns ett par
ytterligare villkor som jag hoppat över, och det måste i några fall
sker filöppningar m m innan skrivrutinen anropas. Men jag bedömer
att dess detaljer inte påverkar PRINCIPLÖSNINGEN.