GPS TRACKER with GSM

I want do project which is use GPS & GSM module use arduino take data from GPS(NEO6MV2) and send by GSM(SIM800L GSM ) to my phone I 'am use separate GPS module I try this code but still have

#include <TinyGPS++.h>

#include <SoftwareSerial.h>
double latitude, longitude;
TinyGPSPlus gps;
SoftwareSerial SIM800L(7,8);
SoftwareSerial gps_Serial(2,3);
String response;
int lastStringLength = response.length();
String link;

void setup() {
  Serial.begin(9600);
  Serial.println("GPS Mulai");
  
    SIM800L.begin(9600);  
    SIM800L.println("AT+CMGF=1");
    Serial.println("SIM800L started at 9600");
    delay(1000);
    Serial.println("Setup Complete! SIM800L is Ready!");
    SIM800L.println("AT+CNMI=2,2,0,0,0");
 
}

void loop() {

  if (SIM800L.available()>0){
      response = SIM800L.readStringUntil('\n');
    }
   
     

  if(lastStringLength != response.length()){
     // GPS();
      //Perintah ON
      if(response.indexOf("ON") == 4){
          
          SIM800L.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode
          delay(1000);  // Delay of 1000 milli seconds or 1 second
          SIM800L.println("AT+CMGS=\"082232949301\"\r"); // Replace x with mobile number
          delay(1000);
          SIM800L.println(link);// The SMS text you want to send
          delay(100);
          SIM800L.println((char)26);// ASCII code of CTRL+Z
          delay(1000);
      }GPS();
  }
 
    
  
}

void GPS(){
  if(Serial.available()) {
    gps.encode(Serial.read());
  }
  if(gps.location.isValid()) {
    latitude = gps.location.lat();
    longitude = gps.location.lng();
    link = "www.google.com/maps/place/" + String(latitude, 6) + "," + String(longitude, 6) ;
    Serial.println(link);
  
  }
}

I just receive a blank text.

you need to be outdoors for gps to work properly, have you tried sending a pre defined sms to check if the gsm module does the sending? to begin with?

      }GPS();

Nothing EVER follows a } on the same line (except for a ; at the end of a class/struct definition.

Your code layout sucks. Tools + Auto Format could fix that in a heartbeat.

    gps.encode(Serial.read());

The encode() method returns a very important piece of information that you just ignore. Why?

I'm done reading your code until you DO use the value that encode() returns.

I will observe, though, that you only send a text message once when you receive a message containing "ON". That is NOT what I would expect sending "ON" to do.