User Tools

Site Tools


data_20without_20data

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

data_20without_20data [2018/03/31 13:19]
127.0.0.1 external edit
data_20without_20data [2018/04/17 15:42] (current)
tbest3112 Added syntax highlighting
Line 2: Line 2:
  
 //By JGH, May-2006.//​\\ ​ It is common for programs to put commonly used data in **DATA** statements which are then read into a set a variables at startup. A classic example is the names of months:​\\ ​ //By JGH, May-2006.//​\\ ​ It is common for programs to put commonly used data in **DATA** statements which are then read into a set a variables at startup. A classic example is the names of months:​\\ ​
 +<code bb4w>
         DIM mon$(12)         DIM mon$(12)
         RESTORE         RESTORE
         FOR mon%=1 TO 12:READ mon$(mon%):​NEXT mon%         FOR mon%=1 TO 12:READ mon$(mon%):​NEXT mon%
         DATA Jan,​Feb,​Mar,​Apr,​May,​Jun,​Jul,​Aug,​Sep,​Oct,​Nov,​Dec         DATA Jan,​Feb,​Mar,​Apr,​May,​Jun,​Jul,​Aug,​Sep,​Oct,​Nov,​Dec
 +</​code>​
 This has a few immediate disadvantages:​\\ ​ This has a few immediate disadvantages:​\\ ​
  
Line 11: Line 13:
   * The **DATA** pointer is modified, unless **LOCAL**ised   * The **DATA** pointer is modified, unless **LOCAL**ised
 \\  You can avoid the **DATA** pointer being modified by doing the following:​\\ \\  \\  You can avoid the **DATA** pointer being modified by doing the following:​\\ \\ 
 +<code bb4w>
         DIM mon$(12)         DIM mon$(12)
         mon$() = "","​Jan","​Feb","​Mar","​Apr","​May","​Jun","​Jul","​Aug","​Sep","​Oct","​Nov","​Dec"​         mon$() = "","​Jan","​Feb","​Mar","​Apr","​May","​Jun","​Jul","​Aug","​Sep","​Oct","​Nov","​Dec"​
 +</​code>​
 but the data is still held in memory twice.\\ \\  An alternative for small bits of fixed data like this is to hold them in a string:​\\ ​ but the data is still held in memory twice.\\ \\  An alternative for small bits of fixed data like this is to hold them in a string:​\\ ​
 +<code bb4w>
         DEF FNmon(mon%)=MID$("​JanFebMarAprMayJunJulAugSepOctNovDec",​mon%*3-2,​3)         DEF FNmon(mon%)=MID$("​JanFebMarAprMayJunJulAugSepOctNovDec",​mon%*3-2,​3)
 +</​code>​
 This has several advantages:​\\ ​ This has several advantages:​\\ ​
  
Line 20: Line 26:
   * The **DATA** pointer is not affected   * The **DATA** pointer is not affected
 \\  This can even be done for data that at first sight doesn'​t look like fixed data:​\\ ​ \\  This can even be done for data that at first sight doesn'​t look like fixed data:​\\ ​
 +<code bb4w>
         DEF FNmonth(mon%) \         DEF FNmonth(mon%) \
         \ =MID$("​JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember",​ \         \ =MID$("​JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember",​ \
         \ VALMID$("​010816212629333743525967",​mon%*2-1,​2),​ \         \ VALMID$("​010816212629333743525967",​mon%*2-1,​2),​ \
         \ VALMID$("​785534469788",​mon%,​1))         \ VALMID$("​785534469788",​mon%,​1))
 +</​code>​
 The first **VALMID$** string is a series of initial start positions of the month name strings for each month. The second **VALMID$** string is the length of each month name.\\ \\  Note: the example functions only give valid results for valid month numbers. The first **VALMID$** string is a series of initial start positions of the month name strings for each month. The second **VALMID$** string is the length of each month name.\\ \\  Note: the example functions only give valid results for valid month numbers.
data_20without_20data.txt ยท Last modified: 2018/04/17 15:42 by tbest3112