Can't Get DAC to Work

I got this DAC to drive a tri-color LED via Op-Amps. But for the life of me, I can’t figure out why it’s not working. I am using shiftOut to send data to it. But it will not update the DAC. I used a pocket o-scope to check if the Uno was sending data too fast. I calculated it was sending data at about 100 kHz, well below the 5 MHz limit. I probed the data pin, the /cs pin, all outputs, everything. I have /reset held high.

/* This script controls a three channel DAC (MAX-512[513]). The DAC's outputs should be fed to the inputs of an Op-Amp.
pinout:
1. data
2. /CS
3. clk
4. /reset
5. vdd - positive supply; bypass .22uF cap to gnd; 2.7V to 5.5V
6. gnd - gnd
7. vss - negative supply; 0V or -1.5 to -5.5V; short to gnd for single supply; if using a negative voltage, bypass to gnd with .22uF to gnd
8. a - buffered; resets to 255 on reset
9. b - buffered; resets to 255 on reset
10. c - unbuffered; resets to 0 on reset
11. ref-c - reference voltage sets the 255 voltage
12. ref-a/b
13. i.c. - internally connected; do not connect
14. Lout - logic output; latched

bit order (shutdown bits and register load bits are all active high):
1. D0
2. D1
3. D2
4. D3
5. D4
6. D5
7. D6
8. D7
9. load A
10. load B
11. load C
12. shutdown A
13. shutdown B
14. shutdown C
15. logic output
16. uncommitted

send control bits first. connect red to A, green to B, and blue to C.
*/

//initialize the colors
int red = random(0,256);
int green = random(0,256);
int blue = random(0,256);

int LL; //lower limit
int UL; //upper limit

//define pins
int data = 2;
int cs = 3;
int clk = 4;

char method = MSBFIRST;

void setup(){
  pinMode(data,OUTPUT);
  pinMode(cs,OUTPUT);
  pinMode(clk,OUTPUT);
  digitalWrite(clk,0); //data is shifted in on the rising edge
  digitalWrite(cs,1);
  delay(10);
  colorWrite(red,green,blue);
}

void loop(){
  red = rGenerate();
  blue = bGenerate();
  green = gGenerate();
  colorWrite(red,green,blue);
}

int rGenerate(){
  if(red > 4){
    LL = red-5;
  }
  else{
    LL = 0;
  }
  
  if(red < 251){
    UL = red+5;
  }
  
  else{
    UL = 256;
  }
  
  return random(LL,UL);
}

int gGenerate(){
  if(green > 4){
    LL = green-5;
  }
  else{
    LL = 0;
  }
  
  if(green < 251){
    UL = green+5;
  }
  
  else{
    UL = 256;
  }
  
  return random(LL,UL);
  //return random(0,6);
}

int bGenerate(){
  if(blue > 4){
    LL = blue-5;
  }
  else{
    LL = 0;
  }
  
  if(blue < 251){
    UL = blue+5;
  }
  
  else{
    UL = 256;
  }
  
  return random(LL,UL);
}


void colorWrite(int a,int b,int c){
//  digitalWrite(clk,0);
  digitalWrite(cs,0);
  shiftOut(data,clk,method,1); shiftOut(data,clk,method,a); //red
  digitalWrite(cs,1);
  delay(1);
  digitalWrite(cs,0);
  shiftOut(data,clk,method,2); shiftOut(data,clk,method,b); //green
  digitalWrite(cs,1);
  delay(1);
  digitalWrite(cs,0);
  shiftOut(data,clk,method,4); shiftOut(data,clk,method,c); //blue
  digitalWrite(cs,1);
}

Can't tell if your sketch is correct or not, however the device is said to be SPI compatible so why are you not using the arduino's standard SPI library? It should simplify your coding a lot using a proven library.

http://arduino.cc/en/Reference/SPI