Wat is een dummy variabele?

Een dummy variabele (afgekort "dummy") is precies hetzelfde als een gewone variabele, alleen wordt deze op meerdere plaatsen in het programma voor verschillende handelingen gebruikt.
Een dummy heeft dan ook een nietszeggende naam zoals BD1 (= Byte Dummy 1).
Je moet er alleen voor zorgen dat de dummy maar binnen een paar regels die bij elkaar staan gebruikt wordt, anders loop je de kans op vergissingen.
 

Voorbeeld
De bedoeling van onderstaand voorbeeldprogramma is om een blokje op een bepaalde positie van regel 1 op het display te zetten, afhankelijk van de waarde van variabele 'NTC'.
Als deze wordt gecompileerd geeft de PIC Basic compiler echter een foutmelding.

DEVICE 16F628A                ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

DIM NTC    AS BYTE            ;Bevat de NTC temperatuur waarde

CLEAR                         ;Wis alle RAM geheugen
DELAYMS 500                   ;LCD stabilisering

CLS                           ;LCD scherm wissen
PRINT AT 1, (NTC + 16) / 16, 255 ;Zet blokje op berekende cursorpositie      

END                           ;Einde programma

Aangezien een berekening voor de cursorpositie ( (NTC + 16) / 16 ) niet rechtstreeks in de PRINT AT instructie kan, moet de uitkomst van die berekening eerst in een (dummy) variabele gezet worden.
Daarna wordt de dummy op zijn beurt in de PRINT AT instructie geplaatst, op die manier kan het wel:

DEVICE 16F628A                ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

DIM NTC    AS BYTE            ;Bevat de NTC temperatuur waarde
DIM BD1    AS BYTE            ;Byte Dummy 1

CLEAR                         ;Wis alle RAM geheugen
DELAYMS 500                   ;LCD stabilisering

CLS                           ;LCD scherm wissen
BD1 = (NTC + 16) / 16         ;Bereken cursorpositie, plaats uitkomst in BD1 
PRINT AT 1, BD1, 255          ;Zet blokje op cursorpositie BD1

END                           ;Einde programma

Zie je het verschil?

Maar om alleen hiervoor een hele variabele te reserveren (= declareren) die verder nooit meer in het programma gebruikt gaat worden is zonde van de geheugenruimte.
Vooral omdat dit soort dingen veel vaker voor (gaan) komen zou het zonde zijn om steeds een nieuwe variabele aan te maken.

Een dummy variabele is dus een hulpvariabele, een soort tussenstation waar je een waarde of berekeninguitkomst even inparkeert, om die waarde in de paar regels die er na komen er weer uit te halen.
Je gebruikt deze variabele op meerdere plekken in het programma, voor verschillende taken.
De (dummy) variabele BD1 in bovenstaand voorbeeld is na de PRINT AT opdracht weer vrij om voor wat anders gebruikt te worden.

Het is natuurlijk niet de bedoeling dat je een dummy variabele aan het begin van het programma een waarde geeft en pas halverwege het programma die waarde gaat gebruiken, daarvoor moet je 'gewone' variabelen met duidelijke namen gebruiken, zoals in een programma, waar de variabele 'Weerstand' in het hele programma alleen voor de gemeten weerstandswaarde van een potmeter wordt gebruikt.
Natuurlijk kun je deze variabele 'Weerstand' ook voor andere dingen gebruiken maar dan worden er snel vergissingen gemaakt.
Met een dummy variabele kan je dat natuurlijk ook overkomen, maar omdat een dummy variabele een nietszeggende naam heeft (bijvoorbeeld x, y of zoals hier BD1) ben je er eerder verdacht op.

Ikzelf gebruik voor dummy's in elk programma de volgende namen:

ID1 BIT Dummy 1
BD1 BYTE Dummy 1
BD2 BYTE Dummy 2
BD3 BYTE Dummy 3
WD1  WORD Dummy 1
... enzovoort

Door de eerste letter kan ik meteen zien of ik een BIT, BYTE of WORD (dummy) variabele heb te pakken.
Soms zijn er een paar dummy's tegelijk nodig, daarvoor is dus dat cijfer (WD1, WD2, enz.)

Ook een dummy variabele moet net als elke andere variabele boven in het programma opgegeven worden met DIM (= declareren), logisch, het is immers een gewone variabele, net als elke andere variabele.
Alleen de naam is nietszeggend, omdat de dummy variabele voor meerdere doeleinden gebruikt wordt.