We left off in the middle of a lengthy script which is run when a new game is started. You can review that script here Programming in Alpha Software Lesson 3. After the randomization runs we then save the solution to our currentpuzzlesolution table. My intent is to use the solution as a move checker similar to the move checker I used in our chess program. Currently that routine is not complete. I will review the code and process once it is done. Next we post the scrambled puzzle to our Sudokupuzzlesolver table and use an if statement for each field to determine if the cell contains a clue or not. If so the clue value is posted if not, we blank the field in the transaction table.  Once the script is run the game board looks like this

NewGame-01

Each field on the board is blank except for the random clues. The way the Sudoku game works is you must arrange the number without moving the clue fields. In fact, difficulty is determined by the number and location of clues. To insure the clues cannot be moved or changed we next run the Lock Clues button. The OnPush event looks like this.

script_play("Random1")
ui_yield()
xbasic_wait_for_idle()
script_play("Random2")
ui_yield()
xbasic_wait_for_idle()
tbl = table.open("sudokupuzzlesolver")
nbrtrys = 1
if tbl.b1s1v > 0 Then
    sk1 = "T"
else    
sk1 = "F"
end if
sv2:
if tbl.b1s2v > 0 Then
    sk2 = "T"
else    
sk2 = "F"
end if
if tbl.b1s3v > 0 Then
    sk3 = "T"
else
sk3 = "F"
end if
if tbl.b1s4v > 0 Then
    sk4 = "T"
else        
sk4 = "F"
end if
if tbl.b1s5v > 0 Then
    sk5 = "T"
else    
sk5 = "F"
end if    
if tbl.b1s6v > 0 Then
    sk6 = "T"
else    
sk6 = "F"
end if
if tbl.b1s7v > 0 Then
    sk7 = "T"
else    
sk7 = "F"
end if
if tbl.b1s8v > 0 Then
    sk8 = "T"
else    
sk8 = "F"
end if
if tbl.b1s9v > 0 Then
    sk9 = "T"
else
sk9 = "F"
end if
if tbl.b2s1v > 0 Then
    sk10 = "T"
else    
sk10 = "F"
end if
if tbl.b2s2v > 0 Then
    sk11 = "T"
else
sk11 = "F"
end if
if tbl.b2s3v > 0 Then
    sk12 = "T"
else
sk12 = "F"
end if
if tbl.b2s4v > 0 Then
    sk13 = "T"
else        
sk13 = "F"
end if
if tbl.b2s5v > 0 Then
    sk14 = "T"
else    
sk14 = "F"
end if    
if tbl.b2s6v > 0 Then
    sk15 = "T"
else    
sk15 = "F"
end if
if tbl.b2s7v > 0 Then
    sk16 = "T"
else    
sk16 = "F"
end if
if tbl.b2s8v > 0 Then
    sk17 = "T"
else    
sk17 = "F"
end if
if tbl.b2s9v > 0 Then
    sk18 = "T"
else    
sk18 = "F"
end if
if tbl.b3s1v > 0 Then
    sk19 = "T"
else    
sk19 = "F"
end if
if tbl.b3s2v > 0 Then
    sk20 = "T"
else    
sk20 = "F"
end if
if tbl.b3s3v > 0 Then
    sk21 = "T"
else
sk21 = "F"
end if
if tbl.b3s4v > 0 Then
    sk22 = "T"
else        
sk22 = "F"
end if
if tbl.b3s5v > 0 Then
    sk23 = "T"
else    
sk23 = "F"
end if    
if tbl.b3s6v > 0 Then
    sk24 = "T"
else    
sk24 = "F"
end if
if tbl.b3s7v > 0 Then
    sk25 = "T"
else    
sk25 = "F"
end if
if tbl.b3s8v > 0 Then
    sk26 = "T"
else    
sk26 = "F"
end if
if tbl.b3s9v > 0 Then
    sk27 = "T"
else    
sk27 = "F"
end if
if tbl.b4s1v > 0 Then
    sk28 = "T"
else    
sk28 = "F"
end if
if tbl.b4s2v > 0 Then
    sk29 = "T"
else    
sk29 = "F"
end if
if tbl.b4s3v > 0 Then
    sk30 = "T"
else
sk30 = "F"
end if
if tbl.b4s4v > 0 Then
    sk31 = "T"
else        
sk31 = "F"
end if
if tbl.b4s5v > 0 Then
    sk32 = "T"
else    
sk32 = "F"
end if    
if tbl.b4s6v > 0 Then
    sk33 = "T"
else    
sk33 = "F"
end if
if tbl.b4s7v > 0 Then
    sk34 = "T"
else    
sk34 = "F"
end if
if tbl.b4s8v > 0 Then
    sk35 = "T"
else    
sk35 = "F"
end if
if tbl.b4s9v > 0 Then
    sk36 = "T"
else    
sk36 = "F"
end if
if tbl.b5s1v > 0 Then
    sk37 = "T"
else    
sk37 = "F"
end if
if tbl.b5s2v > 0 Then
    sk38 = "T"
else    
sk38 = "F"
end if
if tbl.b5s3v > 0 Then
    sk39 = "T"
else
sk39 = "F"
end if
if tbl.b5s4v > 0 Then
    sk40 = "T"
else        
sk40 = "F"
end if
if tbl.b5s5v > 0 Then
    sk41 = "T"
else    
sk41 = "F"
end if
if tbl.b5s6v > 0 Then
    sk42 = "T"
else    
sk42 = "F"
end if
if tbl.b5s7v > 0 Then
    sk43 = "T"
else    
sk43 = "F"
end if
if tbl.b5s8v > 0 Then
    sk44 = "T"
else    
sk44 = "F"
end if
if tbl.b5s9v > 0 Then
    sk45 = "T"
else    
sk45 = "F"
end if
if tbl.b6s1v > 0 Then
    sk46 = "T"
else    
sk46 = "F"
end if
if tbl.b6s2v > 0 Then
    sk47 = "T"
else    
sk47 = "F"
end if
if tbl.b6s3v > 0 Then
    sk48 = "T"
else
sk48 = "F"
end if
if tbl.b6s4v > 0 Then
    sk49 = "T"
else        
sk49 = "F"
end if
if tbl.b6s5v > 0 Then
    sk50 = "T"
else    
sk50 = "F"
end if    
if tbl.b6s6v > 0 Then
    sk51 = "T"
else    
sk51 = "F"
end if
if tbl.b6s7v > 0 Then
    sk52 = "T"
else    
sk52 = "F"
end if
if tbl.b6s8v > 0 Then
    sk53 = "T"
else    
sk53 = "F"
end if
if tbl.b6s9v > 0 Then
    sk54 = "T"
else    
sk54 = "F"
end if
if tbl.b7s1v > 0 Then
    sk55 = "T"
else    
sk55 = "F"
end if
if tbl.b7s2v > 0 Then
    sk56 = "T"
else    
sk56 = "F"
end if
if tbl.b7s3v > 0 Then
    sk57 = "T"
else
sk57 = "F"
end if
if tbl.b7s4v > 0 Then
    sk58 = "T"
else        
sk58 = "F"
end if
if tbl.b7s5v > 0 Then
    sk59 = "T"
else    
sk59 = "F"
end if    
if tbl.b7s6v > 0 Then
    sk60 = "T"
else    
sk60 = "F"
end if
if tbl.b7s7v > 0 Then
    sk61 = "T"
else    
sk61 = "F"
end if
if tbl.b7s8v > 0 Then
    sk62 = "T"
else    
sk62 = "F"
end if
if tbl.b7s9v > 0 Then
    sk63 = "T"
else    
sk63 = "F"
end if
if tbl.b8s1v > 0 Then
    sk64 = "T"
else    
sk64 = "F"
end if
if tbl.b8s2v > 0 Then
    sk65 = "T"
else    
sk65 = "F"
end if
if tbl.b8s3v > 0 Then
    sk66 = "T"
else
sk66 = "F"
end if
if tbl.b8s4v > 0 Then
    sk67 = "T"
else        
sk67 = "F"
end if
if tbl.b8s5v > 0 Then
    sk68 = "T"
else    
sk68 = "F"
end if    
if tbl.b8s6v > 0 Then
    sk69 = "T"
else    
sk69 = "F"
end if
if tbl.b8s7v > 0 Then
    sk70 = "T"
else    
sk70 = "F"
end if
if tbl.b8s8v > 0 Then
    sk71 = "T"
else    
sk71 = "F"
end if
if tbl.b8s9v > 0 Then
    sk72 = "T"
else    
sk72 = "F"
end if
if tbl.b9s1v > 0 Then
    sk73 = "T"
else    
sk73 = "F"
end if
if tbl.b9s2v > 0 Then
    sk74 = "T"
else    
sk74 = "F"
end if
if tbl.b9s3v > 0 Then
    sk75 = "T"
else
sk75 = "F"
end if
if tbl.b9s4v > 0 Then
    sk76 = "T"
else        
sk76 = "F"
end if
if tbl.b9s5v > 0 Then
    sk77 = "T"
else    
sk77 = "F"
end if    
if tbl.b9s6v > 0 Then
    sk78 = "T"
else    
sk78 = "F"
end if
if tbl.b9s7v > 0 Then
    sk79 = "T"
else
sk79 = "F"
end if
if tbl.b9s8v > 0 Then
    sk80 = "T"
else    
sk80 = "F"
end if
if tbl.b9s9v > 0 Then
    sk81 = "T"
else    
sk81 = "F"
end if
tbl.close()
dim text as c 
dim text2 as c
dim text3 as c
text = " 1. Finished... ."
text2 = "2. You can solve the puzzle the hard way by filling in the missing values,"
text3 = "3. Or you can click on 'Fill in block values' to get you started." 
font_color = "Dark Teal"
dim formatted_text as c
formatted_text = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text 
dim formatted_text2 as c
formatted_text2 = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text2
dim formatted_text3 as c
formatted_text3 = "{font=Tahoma,9,B}"+"{C="+font_color+"}" + text3
'Dialog Starts Here
dim xdialogStyle as p 
xdialogStyle.color = "white"
xdialogStyle.accentcolor = "Dark Rose"
ui_dlg_box("TakeCharge Puzzle Generator",<<%dlg%
{windowstyle=Gradient Radial Top Left}
{lf=2};
{blueframe=1,1:It's your choice!}
{region}
{lf};
{sp=4}{text=%O={@@}%80,1:formatted_text};
{sp=4}{text=%O={@@}%80,1:formatted_text2};
{sp=4}{text=%O={@@}%80,1:formatted_text3};
{lf};
{endregion};
{lf};
{sp=2}<%I=$$code.execution.done;B=T;O={J=C} {I=1}  OK ; %78,1OK>
%dlg%)

This script calls two scripts Random1 and Random2

Random1 sets the variable value for each of our puzzle clue fields. These fields are used to allow the user to create their own puzzle so in order for the code to work in that case we make it work in all cases. The default value of the fields are 1 through 9 but they can be in any order. The user can also create word puzzles which would make them letters instead of numbers. This script converts the values to 1 through 9 and insures there are no duplicates. Here is the code.

sk1 = "F"
sk2 = "F"
sk3 = "F"
sk4 = "F"
sk5 = "F"
sk6 = "F"
sk7 = "F"
sk8 = "F"
sk9 = "F"
sk10 = "F"
sk11 = "F"
sk12 = "F"
sk13 = "F"
sk14 = "F"
sk15 = "F"
sk16 = "F"
sk17 = "F"
sk18 = "F"
sk19 = "F"
sk20 = "F"
sk21 = "F"
sk22 = "F"
sk23 = "F"
sk24 = "F"
sk25 = "F"
sk26 = "F"
sk27 = "F"
sk28 = "F"
sk29 = "F"
sk30 = "F"
sk31 = "F"
sk32 = "F"
sk33 = "F"
sk34 = "F"
sk35 = "F"
sk36 = "F"
sk37 = "F"
sk38 = "F"
sk39 = "F"
sk40 = "F"
sk41 = "F"
sk42 = "F"
sk43 = "F"
sk44 = "F"
sk45 = "F"
sk46 = "F"
sk47 = "F"
sk48 = "F"
sk49 = "F"
sk50 = "F"
sk51 = "F"
sk52 = "F"
sk53 = "F"
sk54 = "F"
sk55 = "F"
sk56 = "F"
sk57 = "F"
sk58 = "F"
sk59 = "F"
sk60 = "F"
sk61 = "F"
sk62 = "F"
sk63 = "F"
sk64 = "F"
sk65 = "F"
sk66 = "F"
sk67 = "F"
sk68 = "F"
sk69 = "F"
sk70 = "F"
sk71 = "F"
sk72 = "F"
sk73 = "F"
sk74 = "F"
sk75 = "F"
sk76 = "F"
sk77 = "F"
sk78 = "F"
sk79 = "F"
sk80 = "F"
sk81 = "F"
nbrtrys = 0
tbl = table.open("sudokupuzzlesolver")
tbl.fetch_first()
rd1:
tbl.change_begin()
tbl.VL1 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl1 = 0 then
    goto rd1
end if
rd2:
tbl.change_begin()
tbl.VL2 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl2 = 0 .or. tbl.vl2 = tbl.vl1 then
    goto rd2
end if
rd3:
tbl.change_begin()
tbl.VL3 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl3 = 0 .or. tbl.vl3 = tbl.vl2 .or. tbl.vl3 = tbl.vl1 then
    goto rd3
end if
rd4:
tbl.change_begin()
tbl.VL4 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl4 = 0 .or. tbl.vl4 = tbl.vl3 .or. tbl.vl4 = tbl.vl2 .or. tbl.vl4 = tbl.vl1 then
    goto rd4
end if
rd5:
tbl.change_begin()
tbl.VL5 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl5 = 0 .or. tbl.vl5 = tbl.vl4 .or. tbl.vl5 = tbl.Vl3 .or. tbl.vl5 = tbl.vl2 .or. tbl.vl5 = tbl.vl1 then
    goto rd5
end if
rd6:
tbl.change_begin()
tbl.VL6 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl6 = 0 .or. tbl.vl6 = tbl.vl5 .or. tbl.vl6 = tbl.vl4 .or. tbl.vl6 = tbl.vl3 .or. tbl.vl6 = tbl.vl2 .or. tbl.vl6 = tbl.vl1 then
    goto rd6
end if
rd7:
tbl.change_begin()
tbl.VL7 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl7 = 0 .or. tbl.vl7 = tbl.vl6 .or. tbl.vl7 = tbl.vl5 .or. tbl.vl7 = tbl.vl4 .or. tbl.vl7 = tbl.vl3 .or. tbl.vl7 = tbl.vl2 .or. tbl.vl7 = tbl.vl1 then
    goto rd7
end if
rd8:
tbl.change_begin()
tbl.VL8 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl8 = 0 .or. tbl.vl8 = tbl.vl7 .or. tbl.vl8 = tbl.vl6 .or. tbl.vl8 = tbl.vl5 .or. tbl.vl8 = tbl.vl4 .or. tbl.vl8 = tbl.vl3 .or. tbl.vl8 = tbl.vl2 .or. tbl.vl8 = tbl.vl1 then
    goto rd8
end if
rd9:
tbl.change_begin()
tbl.VL9 = round(Rand()*9,0)
tbl.change_end(.t.)
if tbl.vl9 = 0 .or. tbl.vl9 = tbl.vl8 .or. tbl.vl9 = tbl.vl7 .or. tbl.vl9 = tbl.vl6 .or. tbl.vl9 = tbl.vl5 .or. tbl.vl9 = tbl.vl4 .or. tbl.vl9 = tbl.vl3 .or. tbl.vl9 = tbl.vl2 .or. tbl.vl9 = tbl.vl1 then
    goto rd9
end if
tbl.close()
xbasic_wait_for_idle()

Our scripts starts off by setting each sk variable back to “F”. Next it assigns a random number value of 1 through 9 for each of the vl fields. Once vl1 equals a valid number it goes to rd2. The valid value for vl2 cannot = 0 or the value in vl1. If it does, it loops until a valid answer is reached then goes to rd3 and so on.

Once complete control is passed to the calling script and Random2 is run.

Random2 uses the values we just assigned to the vl fields 1 through 9 and places them in each field on our puzzle board. The vl field value must equal the value of the associated cl field so an if statement is used for each line of the update.

update.field1 = "B1S1V"
update.expr1 = "if(B1s1=cl1,vl1,if(b1s1=cl2,vl2,if(b1s1=cl3,vl3,if(b1s1=cl4,vl4,if(b1s1=cl5,vl5,if(b1s1=cl6,vl6,if(b1s1=cl7,vl7,if(b1s1=cl8,vl8,if(b1s1=cl9,vl9,b1s1v)))))))))"

This update is run for each of the 81 fields. here is the entire update code.

tbl = table.open("sudokupuzzlesolver")
update.fields = 81
update.field1 = "B1S1V"
update.expr1 = "if(B1s1=cl1,vl1,if(b1s1=cl2,vl2,if(b1s1=cl3,vl3,if(b1s1=cl4,vl4,if(b1s1=cl5,vl5,if(b1s1=cl6,vl6,if(b1s1=cl7,vl7,if(b1s1=cl8,vl8,if(b1s1=cl9,vl9,b1s1v)))))))))"
update.field2 = "B1S2V"
update.expr2 = "if(B1s2=cl1,vl1,if(b1s2=cl2,vl2,if(b1s2=cl3,vl3,if(b1s2=cl4,vl4,if(b1s2=cl5,vl5,if(b1s2=cl6,vl6,if(b1s2=cl7,vl7,if(b1s2=cl8,vl8,if(b1s2=cl9,vl9,b1s2v)))))))))"
update.field3 = "B1S3V"
update.expr3 = "if(B1s3=cl1,vl1,if(b1s3=cl2,vl2,if(b1s3=cl3,vl3,if(b1s3=cl4,vl4,if(b1s3=cl5,vl5,if(b1s3=cl6,vl6,if(b1s3=cl7,vl7,if(b1s3=cl8,vl8,if(b1s3=cl9,vl9,b1s3v)))))))))"
update.field4 = "B1S4V"
update.expr4 = "if(B1s4=cl1,vl1,if(b1s4=cl2,vl2,if(b1s4=cl3,vl3,if(b1s4=cl4,vl4,if(b1s4=cl5,vl5,if(b1s4=cl6,vl6,if(b1s4=cl7,vl7,if(b1s4=cl8,vl8,if(b1s4=cl9,vl9,b1s4v)))))))))"
update.field5 = "B1S5V"
update.expr5 = "if(B1s5=cl1,vl1,if(b1s5=cl2,vl2,if(b1s5=cl3,vl3,if(b1s5=cl4,vl4,if(b1s5=cl5,vl5,if(b1s5=cl6,vl6,if(b1s5=cl7,vl7,if(b1s5=cl8,vl8,if(b1s5=cl9,vl9,b1s5v)))))))))"
update.field6 = "B1S6V"
update.expr6 = "if(B1s6=cl1,vl1,if(b1s6=cl2,vl2,if(b1s6=cl3,vl3,if(b1s6=cl4,vl4,if(b1s6=cl5,vl5,if(b1s6=cl6,vl6,if(b1s6=cl7,vl7,if(b1s6=cl8,vl8,if(b1s6=cl9,vl9,b1s6v)))))))))"
update.field7 = "B1S7V"
update.expr7 = "if(B1s7=cl1,vl1,if(b1s7=cl2,vl2,if(b1s7=cl3,vl3,if(b1s7=cl4,vl4,if(b1s7=cl5,vl5,if(b1s7=cl6,vl6,if(b1s7=cl7,vl7,if(b1s7=cl8,vl8,if(b1s7=cl9,vl9,b1s7v)))))))))"
update.field8 = "B1S8V"
update.expr8 = "if(B1s8=cl1,vl1,if(b1s8=cl2,vl2,if(b1s8=cl3,vl3,if(b1s8=cl4,vl4,if(b1s8=cl5,vl5,if(b1s8=cl6,vl6,if(b1s8=cl7,vl7,if(b1s8=cl8,vl8,if(b1s8=cl9,vl9,b1s8v)))))))))"
update.field9 = "B1S9V"
update.expr9 = "if(B1s9=cl1,vl1,if(b1s9=cl2,vl2,if(b1s9=cl3,vl3,if(b1s9=cl4,vl4,if(b1s9=cl5,vl5,if(b1s9=cl6,vl6,if(b1s9=cl7,vl7,if(b1s9=cl8,vl8,if(b1s9=cl9,vl9,b1s9v)))))))))"
update.field10 = "B3S1V"
update.expr10 = "if(b3s1=cl1,vl1,if(b3s1=cl2,vl2,if(b3s1=cl3,vl3,if(b3s1=cl4,vl4,if(b3s1=cl5,vl5,if(b3s1=cl6,vl6,if(b3s1=cl7,vl7,if(b3s1=cl8,vl8,if(b3s1=cl9,vl9,b3s1v)))))))))"
update.field11 = "B3S2V"
update.expr11 = "if(b3s2=cl1,vl1,if(b3s2=cl2,vl2,if(b3s2=cl3,vl3,if(b3s2=cl4,vl4,if(b3s2=cl5,vl5,if(b3s2=cl6,vl6,if(b3s2=cl7,vl7,if(b3s2=cl8,vl8,if(b3s2=cl9,vl9,b3s2v)))))))))"
update.field12 = "B3S3V"
update.expr12 = "if(b3s3=cl1,vl1,if(b3s3=cl2,vl2,if(b3s3=cl3,vl3,if(b3s3=cl4,vl4,if(b3s3=cl5,vl5,if(b3s3=cl6,vl6,if(b3s3=cl7,vl7,if(b3s3=cl8,vl8,if(b3s3=cl9,vl9,b3s3v)))))))))"
update.field13 = "B3S4V"
update.expr13 = "if(b3s4=cl1,vl1,if(b3s4=cl2,vl2,if(b3s4=cl3,vl3,if(b3s4=cl4,vl4,if(b3s4=cl5,vl5,if(b3s4=cl6,vl6,if(b3s4=cl7,vl7,if(b3s4=cl8,vl8,if(b3s4=cl9,vl9,b3s4v)))))))))"
update.field14 = "B3S5V"
update.expr14 = "if(b3s5=cl1,vl1,if(b3s5=cl2,vl2,if(b3s5=cl3,vl3,if(b3s5=cl4,vl4,if(b3s5=cl5,vl5,if(b3s5=cl6,vl6,if(b3s5=cl7,vl7,if(b3s5=cl8,vl8,if(b3s5=cl9,vl9,b3s5v)))))))))"
update.field15 = "B3S6V"
update.expr15 = "if(b3s6=cl1,vl1,if(b3s6=cl2,vl2,if(b3s6=cl3,vl3,if(b3s6=cl4,vl4,if(b3s6=cl5,vl5,if(b3s6=cl6,vl6,if(b3s6=cl7,vl7,if(b3s6=cl8,vl8,if(b3s6=cl9,vl9,b3s6v)))))))))"
update.field16 = "B3S7V"
update.expr16 = "if(b3s7=cl1,vl1,if(b3s7=cl2,vl2,if(b3s7=cl3,vl3,if(b3s7=cl4,vl4,if(b3s7=cl5,vl5,if(b3s7=cl6,vl6,if(b3s7=cl7,vl7,if(b3s7=cl8,vl8,if(b3s7=cl9,vl9,b3s7v)))))))))"
update.field17 = "B3S8V"
update.expr17 = "if(b3s8=cl1,vl1,if(b3s8=cl2,vl2,if(b3s8=cl3,vl3,if(b3s8=cl4,vl4,if(b3s8=cl5,vl5,if(b3s8=cl6,vl6,if(b3s8=cl7,vl7,if(b3s8=cl8,vl8,if(b3s8=cl9,vl9,b3s8v)))))))))"
update.field18 = "B3S9V"
update.expr18 = "if(b3s9=cl1,vl1,if(b3s9=cl2,vl2,if(b3s9=cl3,vl3,if(b3s9=cl4,vl4,if(b3s9=cl5,vl5,if(b3s9=cl6,vl6,if(b3s9=cl7,vl7,if(b3s9=cl8,vl8,if(b3s9=cl9,vl9,b3s9v)))))))))"
update.field19 = "B4S1V"
update.expr19 = "if(b4s1=cl1,vl1,if(b4s1=cl2,vl2,if(b4s1=cl3,vl3,if(b4s1=cl4,vl4,if(b4s1=cl5,vl5,if(b4s1=cl6,vl6,if(b4s1=cl7,vl7,if(b4s1=cl8,vl8,if(b4s1=cl9,vl9,b4s1v)))))))))"
update.field20 = "B4S2V"
update.expr20 = "if(b4s2=cl1,vl1,if(b4s2=cl2,vl2,if(b4s2=cl3,vl3,if(b4s2=cl4,vl4,if(b4s2=cl5,vl5,if(b4s2=cl6,vl6,if(b4s2=cl7,vl7,if(b4s2=cl8,vl8,if(b4s2=cl9,vl9,b4s2v)))))))))"
update.field21 = "B4S3V"
update.expr21 = "if(b4s3=cl1,vl1,if(b4s3=cl2,vl2,if(b4s3=cl3,vl3,if(b4s3=cl4,vl4,if(b4s3=cl5,vl5,if(b4s3=cl6,vl6,if(b4s3=cl7,vl7,if(b4s3=cl8,vl8,if(b4s3=cl9,vl9,b4s3v)))))))))"
update.field22 = "B4S4V"
update.expr22 = "if(b4s4=cl1,vl1,if(b4s4=cl2,vl2,if(b4s4=cl3,vl3,if(b4s4=cl4,vl4,if(b4s4=cl5,vl5,if(b4s4=cl6,vl6,if(b4s4=cl7,vl7,if(b4s4=cl8,vl8,if(b4s4=cl9,vl9,b4s4v)))))))))"
update.field23 = "B4S5V"
update.expr23 = "if(b4s5=cl1,vl1,if(b4s5=cl2,vl2,if(b4s5=cl3,vl3,if(b4s5=cl4,vl4,if(b4s5=cl5,vl5,if(b4s5=cl6,vl6,if(b4s5=cl7,vl7,if(b4s5=cl8,vl8,if(b4s5=cl9,vl9,b4s5v)))))))))"
update.field24 = "B4S6V"
update.expr24 = "if(b4s6=cl1,vl1,if(b4s6=cl2,vl2,if(b4s6=cl3,vl3,if(b4s6=cl4,vl4,if(b4s6=cl5,vl5,if(b4s6=cl6,vl6,if(b4s6=cl7,vl7,if(b4s6=cl8,vl8,if(b4s6=cl9,vl9,b4s6v)))))))))"
update.field25 = "B4S7V"
update.expr25 = "if(b4s7=cl1,vl1,if(b4s7=cl2,vl2,if(b4s7=cl3,vl3,if(b4s7=cl4,vl4,if(b4s7=cl5,vl5,if(b4s7=cl6,vl6,if(b4s7=cl7,vl7,if(b4s7=cl8,vl8,if(b4s7=cl9,vl9,b4s7v)))))))))"
update.field26 = "B4S8V"
update.expr26 = "if(b4s8=cl1,vl1,if(b4s8=cl2,vl2,if(b4s8=cl3,vl3,if(b4s8=cl4,vl4,if(b4s8=cl5,vl5,if(b4s8=cl6,vl6,if(b4s8=cl7,vl7,if(b4s8=cl8,vl8,if(b4s8=cl9,vl9,b4s8v)))))))))"
update.field27 = "B4S9V"
update.expr27 = "if(b4s9=cl1,vl1,if(b4s9=cl2,vl2,if(b4s9=cl3,vl3,if(b4s9=cl4,vl4,if(b4s9=cl5,vl5,if(b4s9=cl6,vl6,if(b4s9=cl7,vl7,if(b4s9=cl8,vl8,if(b4s9=cl9,vl9,b4s9v)))))))))"
update.field28 = "B5S1V"
update.expr28 = "if(b5s1=cl1,vl1,if(b5s1=cl2,vl2,if(b5s1=cl3,vl3,if(b5s1=cl4,vl4,if(b5s1=cl5,vl5,if(b5s1=cl6,vl6,if(b5s1=cl7,vl7,if(b5s1=cl8,vl8,if(b5s1=cl9,vl9,b5s1v)))))))))"
update.field29 = "B5S2V"
update.expr29 = "if(b5s2=cl1,vl1,if(b5s2=cl2,vl2,if(b5s2=cl3,vl3,if(b5s2=cl4,vl4,if(b5s2=cl5,vl5,if(b5s2=cl6,vl6,if(b5s2=cl7,vl7,if(b5s2=cl8,vl8,if(b5s2=cl9,vl9,b5s2v)))))))))"
update.field30 = "B5S3V"
update.expr30 = "if(b5s3=cl1,vl1,if(b5s3=cl2,vl2,if(b5s3=cl3,vl3,if(b5s3=cl4,vl4,if(b5s3=cl5,vl5,if(b5s3=cl6,vl6,if(b5s3=cl7,vl7,if(b5s3=cl8,vl8,if(b5s3=cl9,vl9,b5s3v)))))))))"
update.field31 = "B5S4V"
update.expr31 = "if(b5s4=cl1,vl1,if(b5s4=cl2,vl2,if(b5s4=cl3,vl3,if(b5s4=cl4,vl4,if(b5s4=cl5,vl5,if(b5s4=cl6,vl6,if(b5s4=cl7,vl7,if(b5s4=cl8,vl8,if(b5s4=cl9,vl9,b5s4v)))))))))"
update.field32 = "B5S5V"
update.expr32 = "if(b5s5=cl1,vl1,if(b5s5=cl2,vl2,if(b5s5=cl3,vl3,if(b5s5=cl4,vl4,if(b5s5=cl5,vl5,if(b5s5=cl6,vl6,if(b5s5=cl7,vl7,if(b5s5=cl8,vl8,if(b5s5=cl9,vl9,b5s5v)))))))))"
update.field33 = "B5S6V"
update.expr33 = "if(b5s6=cl1,vl1,if(b5s6=cl2,vl2,if(b5s6=cl3,vl3,if(b5s6=cl4,vl4,if(b5s6=cl5,vl5,if(b5s6=cl6,vl6,if(b5s6=cl7,vl7,if(b5s6=cl8,vl8,if(b5s6=cl9,vl9,b5s6v)))))))))"
update.field34 = "B5S7V"
update.expr34 = "if(b5s7=cl1,vl1,if(b5s7=cl2,vl2,if(b5s7=cl3,vl3,if(b5s7=cl4,vl4,if(b5s7=cl5,vl5,if(b5s7=cl6,vl6,if(b5s7=cl7,vl7,if(b5s7=cl8,vl8,if(b5s7=cl9,vl9,b5s7v)))))))))"
update.field35 = "B5S8V"
update.expr35 = "if(b5s8=cl1,vl1,if(b5s8=cl2,vl2,if(b5s8=cl3,vl3,if(b5s8=cl4,vl4,if(b5s8=cl5,vl5,if(b5s8=cl6,vl6,if(b5s8=cl7,vl7,if(b5s8=cl8,vl8,if(b5s8=cl9,vl9,b5s8v)))))))))"
update.field36 = "B5S9V"
update.expr36 = "if(b5s9=cl1,vl1,if(b5s9=cl2,vl2,if(b5s9=cl3,vl3,if(b5s9=cl4,vl4,if(b5s9=cl5,vl5,if(b5s9=cl6,vl6,if(b5s9=cl7,vl7,if(b5s9=cl8,vl8,if(b5s9=cl9,vl9,b5s9v)))))))))"
update.field37 = "B6S1V"
update.expr37 = "if(b6s1=cl1,vl1,if(b6s1=cl2,vl2,if(b6s1=cl3,vl3,if(b6s1=cl4,vl4,if(b6s1=cl5,vl5,if(b6s1=cl6,vl6,if(b6s1=cl7,vl7,if(b6s1=cl8,vl8,if(b6s1=cl9,vl9,b6s1v)))))))))"
update.field38 = "B6S2V"
update.expr38 = "if(b6s2=cl1,vl1,if(b6s2=cl2,vl2,if(b6s2=cl3,vl3,if(b6s2=cl4,vl4,if(b6s2=cl5,vl5,if(b6s2=cl6,vl6,if(b6s2=cl7,vl7,if(b6s2=cl8,vl8,if(b6s2=cl9,vl9,b6s2v)))))))))"
update.field39 = "B6S3V"
update.expr39 = "if(b6s3=cl1,vl1,if(b6s3=cl2,vl2,if(b6s3=cl3,vl3,if(b6s3=cl4,vl4,if(b6s3=cl5,vl5,if(b6s3=cl6,vl6,if(b6s3=cl7,vl7,if(b6s3=cl8,vl8,if(b6s3=cl9,vl9,b6s3v)))))))))"
update.field40 = "B6S4V"
update.expr40 = "if(b6s4=cl1,vl1,if(b6s4=cl2,vl2,if(b6s4=cl3,vl3,if(b6s4=cl4,vl4,if(b6s4=cl5,vl5,if(b6s4=cl6,vl6,if(b6s4=cl7,vl7,if(b6s4=cl8,vl8,if(b6s4=cl9,vl9,b6s4v)))))))))"
update.field41 = "B6S5V"
update.expr41 = "if(b6s5=cl1,vl1,if(b6s5=cl2,vl2,if(b6s5=cl3,vl3,if(b6s5=cl4,vl4,if(b6s5=cl5,vl5,if(b6s5=cl6,vl6,if(b6s5=cl7,vl7,if(b6s5=cl8,vl8,if(b6s5=cl9,vl9,b6s5v)))))))))"
update.field42 = "B6S6V"
update.expr42 = "if(b6s6=cl1,vl1,if(b6s6=cl2,vl2,if(b6s6=cl3,vl3,if(b6s6=cl4,vl4,if(b6s6=cl5,vl5,if(b6s6=cl6,vl6,if(b6s6=cl7,vl7,if(b6s6=cl8,vl8,if(b6s6=cl9,vl9,b6s6v)))))))))"
update.field43 = "B6S7V"
update.expr43 = "if(b6s7=cl1,vl1,if(b6s7=cl2,vl2,if(b6s7=cl3,vl3,if(b6s7=cl4,vl4,if(b6s7=cl5,vl5,if(b6s7=cl6,vl6,if(b6s7=cl7,vl7,if(b6s7=cl8,vl8,if(b6s7=cl9,vl9,b6s7v)))))))))"
update.field44 = "B6S8V"
update.expr44 = "if(b6s8=cl1,vl1,if(b6s8=cl2,vl2,if(b6s8=cl3,vl3,if(b6s8=cl4,vl4,if(b6s8=cl5,vl5,if(b6s8=cl6,vl6,if(b6s8=cl7,vl7,if(b6s8=cl8,vl8,if(b6s8=cl9,vl9,b6s8v)))))))))"
update.field45 = "B6S9V"
update.expr45 = "if(b6s9=cl1,vl1,if(b6s9=cl2,vl2,if(b6s9=cl3,vl3,if(b6s9=cl4,vl4,if(b6s9=cl5,vl5,if(b6s9=cl6,vl6,if(b6s9=cl7,vl7,if(b6s9=cl8,vl8,if(b6s9=cl9,vl9,b6s9v)))))))))"
update.field46 = "B7S1V"
update.expr46 = "if(b7s1=cl1,vl1,if(b7s1=cl2,vl2,if(b7s1=cl3,vl3,if(b7s1=cl4,vl4,if(b7s1=cl5,vl5,if(b7s1=cl6,vl6,if(b7s1=cl7,vl7,if(b7s1=cl8,vl8,if(b7s1=cl9,vl9,b6s1v)))))))))"
update.field47 = "B7S2V"
update.expr47 = "if(b7s2=cl1,vl1,if(b7s2=cl2,vl2,if(b7s2=cl3,vl3,if(b7s2=cl4,vl4,if(b7s2=cl5,vl5,if(b7s2=cl6,vl6,if(b7s2=cl7,vl7,if(b7s2=cl8,vl8,if(b7s2=cl9,vl9,b7s2v)))))))))"
update.field48 = "B7S3V"
update.expr48 = "if(b7s3=cl1,vl1,if(b7s3=cl2,vl2,if(b7s3=cl3,vl3,if(b7s3=cl4,vl4,if(b7s3=cl5,vl5,if(b7s3=cl6,vl6,if(b7s3=cl7,vl7,if(b7s3=cl8,vl8,if(b7s3=cl9,vl9,b7s3v)))))))))"
update.field49 = "B7S4V"
update.expr49 = "if(b7s4=cl1,vl1,if(b7s4=cl2,vl2,if(b7s4=cl3,vl3,if(b7s4=cl4,vl4,if(b7s4=cl5,vl5,if(b7s4=cl6,vl6,if(b7s4=cl7,vl7,if(b7s4=cl8,vl8,if(b7s4=cl9,vl9,b7s4v)))))))))"
update.field50 = "B7S5V"
update.expr50 = "if(b7s5=cl1,vl1,if(b7s5=cl2,vl2,if(b7s5=cl3,vl3,if(b7s5=cl4,vl4,if(b7s5=cl5,vl5,if(b7s5=cl6,vl6,if(b7s5=cl7,vl7,if(b7s5=cl8,vl8,if(b7s5=cl9,vl9,b7s5v)))))))))"
update.field51 = "B7S6V"
update.expr51 = "if(b7s6=cl1,vl1,if(b7s6=cl2,vl2,if(b7s6=cl3,vl3,if(b7s6=cl4,vl4,if(b7s6=cl5,vl5,if(b7s6=cl6,vl6,if(b7s6=cl7,vl7,if(b7s6=cl8,vl8,if(b7s6=cl9,vl9,b7s6v)))))))))"
update.field52 = "B7S7V"
update.expr52 = "if(b7s7=cl1,vl1,if(b7s7=cl2,vl2,if(b7s7=cl3,vl3,if(b7s7=cl4,vl4,if(b7s7=cl5,vl5,if(b7s7=cl6,vl6,if(b7s7=cl7,vl7,if(b7s7=cl8,vl8,if(b7s7=cl9,vl9,b7s7v)))))))))"
update.field53 = "B7S8V"
update.expr53 = "if(b7s8=cl1,vl1,if(b7s8=cl2,vl2,if(b7s8=cl3,vl3,if(b7s8=cl4,vl4,if(b7s8=cl5,vl5,if(b7s8=cl6,vl6,if(b7s8=cl7,vl7,if(b7s8=cl8,vl8,if(b7s8=cl9,vl9,b7s8v)))))))))"
update.field54 = "B7S9V"
update.expr54 = "if(b7s9=cl1,vl1,if(b7s9=cl2,vl2,if(b7s9=cl3,vl3,if(b7s9=cl4,vl4,if(b7s9=cl5,vl5,if(b7s9=cl6,vl6,if(b7s9=cl7,vl7,if(b7s9=cl8,vl8,if(b7s9=cl9,vl9,b7s9v)))))))))"
update.field55 = "B8S1V"
update.expr55 = "if(b8s1=cl1,vl1,if(b8s1=cl2,vl2,if(b8s1=cl3,vl3,if(b8s1=cl4,vl4,if(b8s1=cl5,vl5,if(b8s1=cl6,vl6,if(b8s1=cl7,vl7,if(b8s1=cl8,vl8,if(b8s1=cl9,vl9,b8s1v)))))))))"
update.field56 = "B8S2V"
update.expr56 = "if(b8s2=cl1,vl1,if(b8s2=cl2,vl2,if(b8s2=cl3,vl3,if(b8s2=cl4,vl4,if(b8s2=cl5,vl5,if(b8s2=cl6,vl6,if(b8s2=cl7,vl7,if(b8s2=cl8,vl8,if(b8s2=cl9,vl9,b8s2v)))))))))"
update.field57 = "B8S3V"
update.expr57 = "if(b8s3=cl1,vl1,if(b8s3=cl2,vl2,if(b8s3=cl3,vl3,if(b8s3=cl4,vl4,if(b8s3=cl5,vl5,if(b8s3=cl6,vl6,if(b8s3=cl7,vl7,if(b8s3=cl8,vl8,if(b8s3=cl9,vl9,b8s3v)))))))))"
update.field58 = "B8S4V"
update.expr58 = "if(b8s4=cl1,vl1,if(b8s4=cl2,vl2,if(b8s4=cl3,vl3,if(b8s4=cl4,vl4,if(b8s4=cl5,vl5,if(b8s4=cl6,vl6,if(b8s4=cl7,vl7,if(b8s4=cl8,vl8,if(b8s4=cl9,vl9,b8s4v)))))))))"
update.field59 = "B8S5V"
update.expr59 = "if(b8s5=cl1,vl1,if(b8s5=cl2,vl2,if(b8s5=cl3,vl3,if(b8s5=cl4,vl4,if(b8s5=cl5,vl5,if(b8s5=cl6,vl6,if(b8s5=cl7,vl7,if(b8s5=cl8,vl8,if(b8s5=cl9,vl9,b8s5v)))))))))"
update.field60 = "B8S6V"
update.expr60 = "if(b8s6=cl1,vl1,if(b8s6=cl2,vl2,if(b8s6=cl3,vl3,if(b8s6=cl4,vl4,if(b8s6=cl5,vl5,if(b8s6=cl6,vl6,if(b8s6=cl7,vl7,if(b8s6=cl8,vl8,if(b8s6=cl9,vl9,b8s6v)))))))))"
update.field61 = "B8S7V"
update.expr61 = "if(b8s7=cl1,vl1,if(b8s7=cl2,vl2,if(b8s7=cl3,vl3,if(b8s7=cl4,vl4,if(b8s7=cl5,vl5,if(b8s7=cl6,vl6,if(b8s7=cl7,vl7,if(b8s7=cl8,vl8,if(b8s7=cl9,vl9,b8s7v)))))))))"
update.field62 = "B8S8V"
update.expr62 = "if(b8s8=cl1,vl1,if(b8s8=cl2,vl2,if(b8s8=cl3,vl3,if(b8s8=cl4,vl4,if(b8s8=cl5,vl5,if(b8s8=cl6,vl6,if(b8s8=cl7,vl7,if(b8s8=cl8,vl8,if(b8s8=cl9,vl9,b8s8v)))))))))"
update.field63 = "B8S9V"
update.expr63 = "if(b8s9=cl1,vl1,if(b8s9=cl2,vl2,if(b8s9=cl3,vl3,if(b8s9=cl4,vl4,if(b8s9=cl5,vl5,if(b8s9=cl6,vl6,if(b8s9=cl7,vl7,if(b8s9=cl8,vl8,if(b8s9=cl9,vl9,b8s9v)))))))))"
update.field64 = "B9S1V"
update.expr64 = "if(b9s1=cl1,vl1,if(b9s1=cl2,vl2,if(b9s1=cl3,vl3,if(b9s1=cl4,vl4,if(b9s1=cl5,vl5,if(b9s1=cl6,vl6,if(b9s1=cl7,vl7,if(b9s1=cl8,vl8,if(b9s1=cl9,vl9,b9s1v)))))))))"
update.field65 = "B9S2V"
update.expr65 = "if(b9s2=cl1,vl1,if(b9s2=cl2,vl2,if(b9s2=cl3,vl3,if(b9s2=cl4,vl4,if(b9s2=cl5,vl5,if(b9s2=cl6,vl6,if(b9s2=cl7,vl7,if(b9s2=cl8,vl8,if(b9s2=cl9,vl9,b9s2v)))))))))"
update.field66 = "B9S3V"
update.expr66 = "if(b9s3=cl1,vl1,if(b9s3=cl2,vl2,if(b9s3=cl3,vl3,if(b9s3=cl4,vl4,if(b9s3=cl5,vl5,if(b9s3=cl6,vl6,if(b9s3=cl7,vl7,if(b9s3=cl8,vl8,if(b9s3=cl9,vl9,b9s3v)))))))))"
update.field67 = "B9S4V"
update.expr67 = "if(b9s4=cl1,vl1,if(b9s4=cl2,vl2,if(b9s4=cl3,vl3,if(b9s4=cl4,vl4,if(b9s4=cl5,vl5,if(b9s4=cl6,vl6,if(b9s4=cl7,vl7,if(b9s4=cl8,vl8,if(b9s4=cl9,vl9,b9s4v)))))))))"
update.field68 = "B9S5V"
update.expr68 = "if(b9s5=cl1,vl1,if(b9s5=cl2,vl2,if(b9s5=cl3,vl3,if(b9s5=cl4,vl4,if(b9s5=cl5,vl5,if(b9s5=cl6,vl6,if(b9s5=cl7,vl7,if(b9s5=cl8,vl8,if(b9s5=cl9,vl9,b9s5v)))))))))"
update.field69 = "B9S6V"
update.expr69 = "if(b9s6=cl1,vl1,if(b9s6=cl2,vl2,if(b9s6=cl3,vl3,if(b9s6=cl4,vl4,if(b9s6=cl5,vl5,if(b9s6=cl6,vl6,if(b9s6=cl7,vl7,if(b9s6=cl8,vl8,if(b9s6=cl9,vl9,b9s6v)))))))))"
update.field70 = "B9S7V"
update.expr70 = "if(b9s7=cl1,vl1,if(b9s7=cl2,vl2,if(b9s7=cl3,vl3,if(b9s7=cl4,vl4,if(b9s7=cl5,vl5,if(b9s7=cl6,vl6,if(b9s7=cl7,vl7,if(b9s7=cl8,vl8,if(b9s7=cl9,vl9,b9s7v)))))))))"
update.field71 = "B9S8V"
update.expr71 = "if(b9s8=cl1,vl1,if(b9s8=cl2,vl2,if(b9s8=cl3,vl3,if(b9s8=cl4,vl4,if(b9s8=cl5,vl5,if(b9s8=cl6,vl6,if(b9s8=cl7,vl7,if(b9s8=cl8,vl8,if(b9s8=cl9,vl9,b9s8v)))))))))"
update.field72 = "B9S9V"
update.expr72 = "if(b9s9=cl1,vl1,if(b9s9=cl2,vl2,if(b9s9=cl3,vl3,if(b9s9=cl4,vl4,if(b9s9=cl5,vl5,if(b9s9=cl6,vl6,if(b9s9=cl7,vl7,if(b9s9=cl8,vl8,if(b9s9=cl9,vl9,b9s9v)))))))))"
update.field73 = "B2S1V"
update.expr73 = "if(B2s1=cl1,vl1,if(b2s1=cl2,vl2,if(b2s1=cl3,vl3,if(b2s1=cl4,vl4,if(b2s1=cl5,vl5,if(b2s1=cl6,vl6,if(b2s1=cl7,vl7,if(b2s1=cl8,vl8,if(b2s1=cl9,vl9,b2s1v)))))))))"
update.field74 = "B2S2V"
update.expr74 = "if(B2s2=cl1,vl1,if(b2s2=cl2,vl2,if(b2s2=cl3,vl3,if(b2s2=cl4,vl4,if(b2s2=cl5,vl5,if(b2s2=cl6,vl6,if(b2s2=cl7,vl7,if(b2s2=cl8,vl8,if(b2s2=cl9,vl9,b2s2v)))))))))"
update.field75 = "B2S3V"
update.expr75 = "if(B2s3=cl1,vl1,if(b2s3=cl2,vl2,if(b2s3=cl3,vl3,if(b2s3=cl4,vl4,if(b2s3=cl5,vl5,if(b2s3=cl6,vl6,if(b2s3=cl7,vl7,if(b2s3=cl8,vl8,if(b2s3=cl9,vl9,b2s3v)))))))))"
update.field76 = "B2S4V"
update.expr76 = "if(B2s4=cl1,vl1,if(b2s4=cl2,vl2,if(b2s4=cl3,vl3,if(b2s4=cl4,vl4,if(b2s4=cl5,vl5,if(b2s4=cl6,vl6,if(b2s4=cl7,vl7,if(b2s4=cl8,vl8,if(b2s4=cl9,vl9,b2s4v)))))))))"
update.field77 = "B2S5V"
update.expr77 = "if(B2s5=cl1,vl1,if(b2s5=cl2,vl2,if(b2s5=cl3,vl3,if(b2s5=cl4,vl4,if(b2s5=cl5,vl5,if(b2s5=cl6,vl6,if(b2s5=cl7,vl7,if(b2s5=cl8,vl8,if(b2s5=cl9,vl9,b2s5v)))))))))"
update.field78 = "B2S6V"
update.expr78 = "if(B2s6=cl1,vl1,if(b2s6=cl2,vl2,if(b2s6=cl3,vl3,if(b2s6=cl4,vl4,if(b2s6=cl5,vl5,if(b2s6=cl6,vl6,if(b2s6=cl7,vl7,if(b2s6=cl8,vl8,if(b2s6=cl9,vl9,b2s6v)))))))))"
update.field79 = "B2S7V"
update.expr79 = "if(B2s7=cl1,vl1,if(b2s7=cl2,vl2,if(b2s7=cl3,vl3,if(b2s7=cl4,vl4,if(b2s7=cl5,vl5,if(b2s7=cl6,vl6,if(b2s7=cl7,vl7,if(b2s7=cl8,vl8,if(b2s7=cl9,vl9,b2s7v)))))))))"
update.field80 = "B2S8V"
update.expr80 = "if(B2s8=cl1,vl1,if(b2s8=cl2,vl2,if(b2s8=cl3,vl3,if(b2s8=cl4,vl4,if(b2s8=cl5,vl5,if(b2s8=cl6,vl6,if(b2s8=cl7,vl7,if(b2s8=cl8,vl8,if(b2s8=cl9,vl9,b2s8v)))))))))"
update.field81 = "B2S9V"
update.expr81 = "if(B2s9=cl1,vl1,if(b2s9=cl2,vl2,if(b2s9=cl3,vl3,if(b2s9=cl4,vl4,if(b2s9=cl5,vl5,if(b2s9=cl6,vl6,if(b2s9=cl7,vl7,if(b2s9=cl8,vl8,if(b2s9=cl9,vl9,b2s9v)))))))))"
tbl.update()
tbl.close()

When finished control is passed back to the calling script which then finishes the routine by checking each field. If blank the sk variable = “F” otherwise it equals “T” Then it displays a simple xDialog box telling the user they can play the game as is or click fill in block values. If the user click Fill in Block values a randomize script runs for each block and enters scrambled values in each of the blank fields in the block.

Lets break for now and the next lesson will look at the Fill in Block Values onPush event as well as the routine for swapping cell values.