[Date Prev][Date Next][Subject Prev][Subject Next][ Date Index][ Subject Index]

Hard number program, as written in XyBasic



Just FYI, here's the "source" code for my recently posted HDNUM.PGM:

defstr u2$ = 50 <=== set the variable named "u2$" to be s/g 50
comx "es 1" <==== "comx" translates to [BX] ...[Q2] with quoted stuff in between
         <==== blank lines, tabs, extra spaces, all allowed
c0 = 1
c1 = 1
c2 = 1
c3 = 1
c4 = 1
c5 = 1
c6 = 1
c7 = 1
c8 = 1
c9 = 1
dc$ = "DC" ; for parse use  <======= semicolon introduces a comment
equal$ = "=" ; for parse use
null$ = ""

'tf 'xp <======== prepended apostrophes translate as PFUNCs
loop:
 head$ = null$ : tail$ = null$ : dummy$ = null$ : new.tail$ = null$
 comx "se/f /" lft.g$ "C[N]" rt.g$ " +[O]" lft.g$ "DC[W]"
rt.g$ "/"
if error then stop <==== lft.g$ and rt.g$ are built-in constants for the guillemets
 'cr 'df comx "se/f /" rt.g$ "/" ; don't include the rt.g
 'df
 this.c$ = savedef$ ; this.c$ = e.g., C1 or DC3=16
 if this.c$ = null$ then 'bc print "this.c$ is null--can't parse it" : stop
 ; now deal with any counter-resets, e.g., DC3=16
 parse this.c$, dc$, head$, dummy$, tail$
 if dummy$ = null$ then goto skip ; not a counter-reset, so skip the below
;'bc print "HERE - in re-set section" : stopx  <======= used in debugging
; COUNTER RE-SET SECTION
'rd 'bd 'rc
;        now tail$ is, e.g., 3=16
 parse tail$, equal$, head$, dummy$, new.tail$
 if head$ = 0 then c0 = int(new.tail$)
 if head$ = 1 then c1 = int(new.tail$)
 if head$ = 2 then c2 = int(new.tail$)
 if head$ = 3 then c3 = int(new.tail$)
 if head$ = 4 then c4 = int(new.tail$)
 if head$ = 5 then c5 = int(new.tail$)
 if head$ = 6 then c6 = int(new.tail$)
 if head$ = 7 then c7 = int(new.tail$)
 if head$ = 8 then c8 = int(new.tail$)
 if head$ = 9 then c9 = int(new.tail$)
'cl 'cl
 goto loop

 skip: ; REGULAR COUNTER SECTION 
'rd 'bd 'rc
;  this.c$ is, e.g.,