weird millis() usage error, need some help

I’ve got this code from DFRobot wiki page that we had running on a Mega. Captures GPS data one-time and sends a text.
http://www.dfrobot.com/index.php?route=product/product&product_id=673&search=tel0051&description=true&category_id=48#.VwdBIfkrLX6

http://www.dfrobot.com/wiki/index.php/GPS/GPRS/GSM_Module_V3.0_(SKU:TEL0051)

Am adapting it for a 1284 board I have to capture & send every two minutes. Simple blink-without-delay addition, easy, yes? However I get these error messages, which I don’t understand.

I moved setup() and loop() to the top of the sketch, vs buried at the bottom below all the functions, which shouldn’t make a difference, should it?
IDE 1.0.6, Win7

Any ideas? Thanks.

// Modified for 1284P pins
// Read/Write from GPS/GSM on Serial1
// Talk to PC on Serial

// Product name: GPS/GPRS/GSM Module V3.0
// # Product SKU : TEL0051
// # Version     : 1.2

// # Description:
// # The sketch for driving the gps mode via the Arduino board

// # Steps:
// #        1. Turn the S1 switch to the Prog(right side)
// #        2. Turn the S2 switch to the Arduino side(left side)
// #        3. Set the UART select switch to middle one.
// #        4. Upload the sketch to the Arduino board
// #        5. Turn the S1 switch to the comm(left side) 
// #        6. RST the board 

// #        If you get 'inf' values, go outdoors and wait until it is connected.
// #        wiki link- http://www.dfrobot.com/wiki/index.php/GPS/GPRS/GSM_Module_V3.0_(SKU:TEL0051)

// modify to send every 2 minutes
unsigned long currentMillis();
unsigned long oldMillis();
unsigned long duration = 120000UL; // 1000 * 60 * 2 = 2 minutes

void setup()
{
  pinMode(4,OUTPUT);//Change the default digital driver pins for the GSM and GPS mode to 4,5,6
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  digitalWrite(6,HIGH);
  delay(1500);
  digitalWrite(6,LOW);

  digitalWrite(4,LOW);//Enable GSM mode
  digitalWrite(5,HIGH);//Disable GPS mode
  delay(2000);
  Serial.begin(9600);
  Serial1.begin(9600); 
  delay(5000);//GPS ready

  Serial1.println("AT");   
  delay(2000);
  //turn on GPS power supply
  Serial1.println("AT+CGPSPWR=1");
  delay(1000);
  //reset GPS in autonomy mode
  Serial1.println("AT+CGPSRST=1");
  delay(1000);

  digitalWrite(5,LOW);//Enable GPS mode
  digitalWrite(4,HIGH);//Disable GSM mode
  delay(2000);

  Serial.println("$GPGGA statement information: ");
  oldMillis = millis();
}
void loop()
{
  currentMillis = millis();
  if ((currentMillis - oldMillis) >= duration){
  oldMillis = oldMillis + duration;
   
    Serial.print("UTC:");
    UTC();
    Serial.print("Lat:");
    latitude();
    Serial.print("Dir:");
    lat_dir();
    Serial.print("Lon:");
    longitude();
    Serial.print("Dir:");
    lon_dir();
    Serial.print("Alt:");
    altitude();
    Serial.println(' ');
    Serial.println(' ');
  }
}

double Datatransfer(char *data_buf,char num)//convert the data to the float type
{                                           //*data_buf:the data array                                       
  double temp=0.0;                           //the number of the right of a decimal point
  unsigned char i,j;

  if(data_buf[0]=='-')
  {
    i=1;
    //process the data array
    while(data_buf[i]!='.')
      temp=temp*10+(data_buf[i++]-0x30);
    for(j=0;j<num;j++)
      temp=temp*10+(data_buf[++i]-0x30);
    //convert the int type to the float type
    for(j=0;j<num;j++)
      temp=temp/10;
    //convert to the negative numbe
    temp=0-temp;
  }
  else//for the positive number
  {
    i=0;
    while(data_buf[i]!='.')
      temp=temp*10+(data_buf[i++]-0x30);
    for(j=0;j<num;j++)
      temp=temp*10+(data_buf[++i]-0x30);
    for(j=0;j<num;j++)
      temp=temp/10 ;
  }
  return temp;
}

char ID()//Match the ID commands
{ 
  char i=0;
  char value[6]={
    '

The errors:

GPS_test.ino: In function 'void setup()':
GPS_test:58: error: assignment of function 'long unsigned int oldMillis()'
GPS_test:58: error: cannot convert 'long unsigned int' to 'long unsigned int ()()' in assignment
GPS_test.ino: In function 'void loop()':
GPS_test:62: error: assignment of function 'long unsigned int currentMillis()'
GPS_test:62: error: cannot convert 'long unsigned int' to 'long unsigned int ()()' in assignment
GPS_test:63: error: ISO C++ forbids using pointer to a function in subtraction
GPS_test:64: error: pointer to a function used in arithmetic
GPS_test:64: error: assignment of function 'long unsigned int oldMillis()'
GPS_test:64: error: cannot convert 'long unsigned int (*)()' to 'long unsigned int ()()' in assignment

,‘G’,‘P’,‘G’,‘G’,‘A’        };//match the gps protocol
  char val[6]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’        };

while(1)
  {
    if(Serial1.available()) // read Serial1 for GPS/GSM card
    {
      val[i] = Serial1.read();//get the data from the serial interface
      if(val[i]==value[i]) //Match the protocol
      {    
        i++;
        if(i==6)
        {
          i=0;
          return 1;//break out after get the command
        }
      }
      else
        i=0;
    }
  } 
}

void comma(char num)//get ‘,’
{   
  char val;
  char count=0;//count the number of ‘,’

while(1)
  {
    if(Serial1.available())
    {
      val = Serial1.read();
      if(val==’,’)
        count++;
    }
    if(count==num)//if the command is right, run return
      return;
  }

}
void UTC()//get the UTC data – the time
{
  char i;
  char time[9]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };
  double t=0.0;

if( ID())//check ID
  {
    comma(1);//remove 1 ‘,’
    //get the datas after headers
    while(1)
    {
      if(Serial1.available())
      {
        time[i] = Serial1.read();
        i++;
      }
      if(i==9)
      {
        i=0;
        t=Datatransfer(time,2);//convert data

// t=t-30000.00;//convert to the chinese time GMT+8 Time zone
        t=t+60000.00;//convert to the US east coast time GMT-6 Time zone
        long time=t;
        int h=time/10000;
        int m=(time/100)%100;
        int s=time%100;

//        if(h>=24)               //UTC+
        //        {
        //        h-=24;
        //        }

if (h<0)               //UTC-
        {
          h+=24;
        }
        Serial.print(h);
        Serial.print(“h”);
        Serial.print(m);
        Serial.print(“m”);
        Serial.print(s);
        Serial.println(“s”);

//Serial.println(t);//Print data 
        return;
      }  
    }
  }
}
void latitude()//get latitude
{
  char i;
  char lat[10]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(2);
    while(1)
    {
      if(Serial1.available())
      {
        lat[i] = Serial1.read();
        i++;
      }
      if(i==10)
      {
        i=0;
        Serial.println(Datatransfer(lat,5)/100.0,7);//print latitude 
        return;
      }  
    }
  }
}
void lat_dir()//get dimensions
{
  char i=0,val;

if( ID())
  {
    comma(3);
    while(1)
    {
      if(Serial1.available())
      {
        val = Serial1.read();
        Serial.write(val);
        Serial.println();
        i++;
      }
      if(i==1)
      {
        i=0;
        return;
      }  
    }
  }
}
void longitude()//get longitude
{
  char i;
  char lon[11]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(4);
    while(1)
    {
      if(Serial1.available())
        lon[i] = Serial1.read();
      i++;
    }
    if(i==11)
    {
      i=0;
      Serial.println(Datatransfer(lon,5)/100.0,7);
      return;
    }  
  }
}

void lon_dir()//get direction data
{
  char i=0,val;

if( ID())
  {
    comma(5);
    while(1)
    {
      if(Serial1.available())
      {
        val = Serial1.read();
        Serial.write(val); //Serial.println(val,BYTE);
        Serial.println();
        i++;
      }
      if(i==1)
      {
        i=0;
        return;
      }  
    }
  }
}
void altitude()//get altitude data
{
  char i,flag=0;
  char alt[8]={
    ‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’,‘0’
  };

if( ID())
  {
    comma(9);
    while(1)
    {
      if(Serial1.available())
      {
        alt[i] = Serial1.read();
        if(alt[i]==’,’)
          flag=1;
        else
          i++;
      }
      if(flag)
      {
        i=0;
        Serial.println(Datatransfer(alt,1),1);//print altitude data
        return;
      }  
    }
  }
}


The errors:

§DISCOURSE_HOISTED_CODE_1§

Put setup() & loop() back at the bottom, no change in error message.

unsigned long currentMillis();
unsigned long oldMillis();

What are those parenthesis doing there? I think you want those to be unsigned long variables. But you've told the compiler that they are functions returning unsigned long.

D'oh! Brainfart. Thanks, that fixed the compiling error.