ExeName$

Geachte redactie,

In het juninummer is, op bladzijde vijf, een bijdrage van mijn hand verschenen, maar onlangs kwam (ook) ik erachter dat er een kleine fout was opgetreden, nl. voor de juiste werking van de routine is het wel noodzakelijk om de standaard PowerBASIC bibliotheek mee te linken. Dit omdat het geen intern commando betreft, maar een meegeleverde routine uit de bibliotheek. Ik was op het moment van schrijven ervan overtuigd dat het een ingebouwde functie van PowerBASIC was, en ik zal uitleggen waarom:

Ik heb ooit in den beginne de file NONAME.BAS voorzien van de volgende kreet:

$include "PB31.INC"

De getallen 31 zijn in dit geval de versie PB waarmee wordt gewerkt, bij PB3.5 vul je hier dus 35 in. Hierdoor wordt door de include compilerdirective het bestand PB31.INC beschouwd als zijnde een onderdeel van de sourcecode. Door nu eenmalig met F2 dit op te slaan als NONAME.BAS begint nu elk nieuw programma (dat uitgaat van NONAME.BAS) met deze directives, zodat ik daar niet opnieuw steeds over hoef na te denken. En de compiler van PowerBASIC is zo slim dat hij alleen bibliotheken daadwerkelijk meelinkt die worden gebruikt.

Door de directive wordt de declaratie van de PowerBASIC PBL file geregeld en de benodigde bibliotheekonderdelen meegelinkt tijdens het compileren. Hierdoor zijn alle fucnties en routines uit die bibliotheek 'at your fingertips'. De bibliotheek staat meestal in de subdirectory EXAMPLE: u treft daar een aantal bestanden aan die worden gebruikt voor het samenstellen van de library, een kleine opsomming uit het hoofd:
DOSUNIT.BAS, COMMUNIT.BAS, DIRUNIT.BAS, MATHUNIT.BAS, MOUSUNIT.BAS en SCRNUNIT.BAS.

Middels de batchfile BLDPB31.BAT (bij PB3.1), of PBPBL.BAT (diverse andere versies) wordt dan met behulp van de command-line compiler (PBC.EXE) de bibliotheek PB31.PBL aangemaakt. De compiler moet dan wel vanuit de werkdirectory te vinden zijn, dus bijvoorbeeld te regelen door op de DOS prompt in te typen (uitgaande van installatie in de directory PB31 van de C: drive):

path=%path%;c:\pb31

Wat je exact kan doen met deze bibliotheken en welke routines hierin zitten is eenvoudig te ondekken door de betreffende unit-files (dus bijvoorbeeld DOSUNIT.BAS) in de editor te openen en de verklaringen erbij door te lezen. Er zitten allerlei handige en nuttige routines bij! Het gebruik van bibliotheken en voorbeelden hiervan zijn reeds eerder verschenen in onze PowerBASIC nieuwsbrief die wij (FCB) aan PowerBASIC  gebruikers toesturen. Hiervoor kun je je opgeven door een email te sturen aan support@fcb.nl . Aangezien het in dit geval om een oud nummer gaat, zet die vraag om dat nummer erbij en je zal hem per email of per post ontvangen (binnen twee weken), service van de zaak.

De oplossing voor het probleem is dus relatief eenvoudig: zorg voor het '$INCLUDE' directive zoals boven beschreven in je source code staat, en daarna kun je wel gebruik maken van de ExeName$ routine. Door mijn manier van werken (u weet wel: met NONAME.BAS) is dit tijdens een controle voor inzending dit niet ontdekt, waardoor in de HCC nieuwsbrief (door mijn fout) foutieve informatie is gekomen.

Groeten, succes en sorry voor de overlast die het heeft opgeleverd.

Henk Broekhuizen




