a function-definition is not allowed here before '{' token

i am making a code for automatic irrigation system and want to declare global loop for every function so that if any condition detected the programe stops the further execution and returns to that function but i have a problem. here is the code

#include<Sim800L.h>
#include<LiquidCrystal.h>
#include<SoftwareSerial.h>
String str = "";
Sim800L Sim800L;
SoftwareSerial myserial(50, 51);
#include <dht.h>
#define dataPin 27
dht DHT;
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
const int SoMS1 = 22;
const int SoMS2 = 23;
const int SoMS3 = 24;
const int SoMS4 = 25;
const int RDpS = 26;
const int led1 = 28;
const int led2 = 29;
const int led3 = 30;
const int led4 = 31;
const int buz = 32;
int mtr1 = 33;
int mtr2 = 34;
int mtr3 = 35;
int mtr4 = 36;
const int lvled1 = 37;
const int lvled2 = 38;
const int lvled3 = 39;
const int lvled4 = 40;
const int lvled5 = 41;
int level1 = A1;
int level2 = A2;
int level3 = A3;
int level4 = A4;
int level5 = A5;
int motor = 5;
int n;
int o;
int p;
int q;
int s;
int r; //Water Pump status flag
int m = 0; //water Pump flag
int z = 121; // Adjust this value from 100 to 1023 if your circuit do not show correct value.
bool i = 1, j = 1;
bool a = 1, b = 1, c = 1, d = 1, e = 1, f = 1, g = 1, h = 1; //these are the flags to store sent msg termination for detection of conditions.
int soil1();
int soil2();
int soil3();
int soil4();
int rain();
void setup()
{
  myserial.begin(9600);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Water Irrigaton");
  lcd.setCursor(2, 1);
  delay(2000);
  lcd.clear();
  lcd.print("UCET UOS");
  lcd.setCursor(0, 1);
  lcd.print("Welcomes You");
  delay(2000);
  gsmInit();
  lcd.clear();
  lcd.print("System Ready");
  delay(1000);
  lcd.clear();
  lcd.print("SMART IRRIGATION");
  lcd.setCursor(2, 1);
  lcd.print("...SYSTEM...");
  delay(2000);
  lcd.clear();
  lcd.print("PRESENTED BY");
  lcd.setCursor(2, 1);
  lcd.print("BSC ELECTRICAL");
  delay(2000);
  lcd.clear();
  lcd.print("SUPERVISOR");
  lcd.setCursor(2, 1);
  lcd.print("*..ENGR.ERUM..*");
  delay(2000);
  lcd.clear();
  lcd.print("GROUP MEMBERS");
  lcd.setCursor(2, 1);
  lcd.print("---------------");
  delay(2000);
  lcd.clear();
  lcd.print("IKRAM UL HAQ");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15M003");
  delay(2000);
  lcd.clear();
  lcd.print("BEHZAD ASGHAR");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15E026");
  delay(2000);
  lcd.clear();
  lcd.print("TALHA HAIDER");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15E039");
  delay(2000);
  lcd.clear();
  pinMode(SoMS1, INPUT_PULLUP);
  pinMode(SoMS2, INPUT_PULLUP);
  pinMode(SoMS3, INPUT_PULLUP);
  pinMode(SoMS4, INPUT_PULLUP);
  pinMode(RDpS, INPUT_PULLUP);
  pinMode(mtr1, OUTPUT);
  pinMode(mtr2, OUTPUT);
  pinMode(mtr3, OUTPUT);
  pinMode(mtr4, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(lvled1, OUTPUT);
  pinMode(lvled2, OUTPUT);
  pinMode(lvled3, OUTPUT);
  pinMode(lvled4, OUTPUT);
  pinMode(lvled5, OUTPUT);
  pinMode(level1, INPUT);
  pinMode(level2, INPUT);
  pinMode(level3, INPUT);
  pinMode(level4, INPUT);
  pinMode(level5, INPUT);
  pinMode(motor, OUTPUT);
  digitalWrite(mtr1, HIGH);
  digitalWrite(mtr2, HIGH);
  digitalWrite(mtr3, HIGH);
  digitalWrite(mtr4, HIGH);
}
void loop()
{
  { 
    soil1();
    soil2();
    soil3();
    soil4();
    rain();
  }
  // this is the setup of soil moisture  sensors
  void soil1()
  {
  if ((digitalRead(SoMS1) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led1, HIGH);
    digitalWrite(mtr1, LOW);
    lcd.print("LOW MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE1 MOTOR 1 ON"); a = 0 ; b = 1;

  }
 else if ((digitalRead(SoMS1) == LOW)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    lcd.print("NORMAL MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS1) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led1, LOW); a = 1;
    digitalWrite(mtr1, HIGH);
    lcd.print("HIGH MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL MOISTURE MOTOR1 OFF"); a = 1; b = 0;
  }
   else if ((digitalRead(SoMS1) == HIGH)&&(digitalRead(RDpS)==LOW))
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    lcd.print("NORMAL MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil2()
  {
  if ((digitalRead(SoMS2) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led2, HIGH);
    digitalWrite(mtr2, LOW);
    lcd.print("LOW MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE2 MOTOR 2 ON"); c = 0; d = 1;
  }
   else if ((digitalRead(SoMS2) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS2) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE2 MOTOR 2 OFF"); c = 1; d = 0;
  }
   else if ((digitalRead(SoMS2) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil3()
  {
  if ((digitalRead(SoMS3) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led3, HIGH);
    digitalWrite(mtr3, LOW);
    lcd.print("LOW MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE3 MOTOR 3 ON"); e = 0; f = 1;
  }
    else if ((digitalRead(SoMS3) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS3) == LOW)&& (digitalRead(RDpS)==LOW))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE3 MOTOR 3 OFF"); e = 1; f = 0;
  }
    else if ((digitalRead(SoMS3) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil4 ()
  {
  if ((digitalRead(SoMS4) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led4, HIGH);
    digitalWrite(mtr4, LOW);
    lcd.print("LOW MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE4 MOTOR 4 ON"); g = 0; h = 1;
  }
    else if ((digitalRead(SoMS4) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS4) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE4 MOTOR 4 OFF"); g = 1; h = 0;
  }
    else if ((digitalRead(SoMS4) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void rain()
  {
  if (digitalRead(RDpS) == LOW)// low = high
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    digitalWrite(buz, HIGH);
    lcd.print("ITS RAINING");
    delay(1000);
    lcd.clear();
    sendSMS("ITS RAINING"); i = 0; j = 1;
  }
  if (digitalRead(RDpS) == HIGH)
  {
    lcd.print("NO RAIN");
    delay (1000);
    lcd.clear();
    sendSMS("NO RAIN DETECTED"); i = 1; j = 0;
  }
  }

here is the error i got

C:\Users\M.FAISAL\Desktop\if_works\if_works.ino: In function 'void loop()':
if_works:144: error: a function-definition is not allowed here before '{' token
** {**
** ^**
if_works:573: error: expected '}' at end of input
}
^

Multiple libraries were found for "Sim800L.h"
Used: C:\Users\M.FAISAL\Desktop\libraries\Sim800L_Library_Revised
Not used: C:\Users\M.FAISAL\Desktop\libraries\Sim800L-Arduino-Library-revised-master
Using library Sim800L_Library_Revised at version 1.1.5 in folder: C:\Users\M.FAISAL\Desktop\libraries\Sim800L_Library_Revised
Using library SoftwareSerial at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial
Using library LiquidCrystal at version 1.0.4 in folder: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
Using library DHTLib in folder: C:\Users\M.FAISAL\Desktop\libraries\DHTLib (legacy)
exit status 1
a function-definition is not allowed here before '{' token

You can't define a function inside another function. Your code is missing a '}' to close the loop method before defining the soil1 method.

i have made changes and now the code is some thing llike this

#include<Sim800L.h>
#include<LiquidCrystal.h>
#include<SoftwareSerial.h>
String str = "";
Sim800L Sim800L;
SoftwareSerial myserial(50, 51);
#include <dht.h>
#define dataPin 27
dht DHT;
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
const int SoMS1 = 22;
const int SoMS2 = 23;
const int SoMS3 = 24;
const int SoMS4 = 25;
const int RDpS = 26;
const int led1 = 28;
const int led2 = 29;
const int led3 = 30;
const int led4 = 31;
const int buz = 32;
int mtr1 = 33;
int mtr2 = 34;
int mtr3 = 35;
int mtr4 = 36;
const int lvled1 = 37;
const int lvled2 = 38;
const int lvled3 = 39;
const int lvled4 = 40;
const int lvled5 = 41;
int level1 = A1;
int level2 = A2;
int level3 = A3;
int level4 = A4;
int level5 = A5;
int motor = 5;
int n;
int o;
int p;
int q;
int s;
int r; //Water Pump status flag
int m = 0; //water Pump flag
int z = 121; // Adjust this value from 100 to 1023 if your circuit do not show correct value.
bool i = 1, j = 1;
bool a = 1, b = 1, c = 1, d = 1, e = 1, f = 1, g = 1, h = 1; //these are the flags to store sent msg termination for detection of conditions.
void setup()
{
  myserial.begin(9600);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Water Irrigaton");
  lcd.setCursor(2, 1);
  delay(2000);
  lcd.clear();
  lcd.print("UCET UOS");
  lcd.setCursor(0, 1);
  lcd.print("Welcomes You");
  delay(2000);
  gsmInit();
  lcd.clear();
  lcd.print("System Ready");
  delay(1000);
  lcd.clear();
  lcd.print("SMART IRRIGATION");
  lcd.setCursor(2, 1);
  lcd.print("...SYSTEM...");
  delay(2000);
  lcd.clear();
  lcd.print("PRESENTED BY");
  lcd.setCursor(2, 1);
  lcd.print("BSC ELECTRICAL");
  delay(2000);
  lcd.clear();
  lcd.print("SUPERVISOR");
  lcd.setCursor(2, 1);
  lcd.print("*..ENGR.ERUM..*");
  delay(2000);
  lcd.clear();
  lcd.print("GROUP MEMBERS");
  lcd.setCursor(2, 1);
  lcd.print("---------------");
  delay(2000);
  lcd.clear();
  lcd.print("IKRAM UL HAQ");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15M003");
  delay(2000);
  lcd.clear();
  lcd.print("BEHZAD ASGHAR");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15E026");
  delay(2000);
  lcd.clear();
  lcd.print("TALHA HAIDER");
  lcd.setCursor(2, 1);
  lcd.print("BEEF15E039");
  delay(2000);
  lcd.clear();
  pinMode(SoMS1, INPUT_PULLUP);
  pinMode(SoMS2, INPUT_PULLUP);
  pinMode(SoMS3, INPUT_PULLUP);
  pinMode(SoMS4, INPUT_PULLUP);
  pinMode(RDpS, INPUT_PULLUP);
  pinMode(mtr1, OUTPUT);
  pinMode(mtr2, OUTPUT);
  pinMode(mtr3, OUTPUT);
  pinMode(mtr4, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(lvled1, OUTPUT);
  pinMode(lvled2, OUTPUT);
  pinMode(lvled3, OUTPUT);
  pinMode(lvled4, OUTPUT);
  pinMode(lvled5, OUTPUT);
  pinMode(level1, INPUT);
  pinMode(level2, INPUT);
  pinMode(level3, INPUT);
  pinMode(level4, INPUT);
  pinMode(level5, INPUT);
  pinMode(motor, OUTPUT);
  digitalWrite(mtr1, HIGH);
  digitalWrite(mtr2, HIGH);
  digitalWrite(mtr3, HIGH);
  digitalWrite(mtr4, HIGH);
}
void loop()
{
}
 // this is the setup of soil moisture  sensors
  void soil1()
  {
  if ((digitalRead(SoMS1) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led1, HIGH);
    digitalWrite(mtr1, LOW);
    lcd.print("LOW MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE1 MOTOR 1 ON"); a = 0 ; b = 1;

  }
 else if ((digitalRead(SoMS1) == LOW)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    lcd.print("NORMAL MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS1) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led1, LOW); a = 1;
    digitalWrite(mtr1, HIGH);
    lcd.print("HIGH MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL MOISTURE MOTOR1 OFF"); a = 1; b = 0;
  }
   else if ((digitalRead(SoMS1) == HIGH)&&(digitalRead(RDpS)==LOW))
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    lcd.print("NORMAL MOISTURE1");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR1 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil2()
  {
  if ((digitalRead(SoMS2) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led2, HIGH);
    digitalWrite(mtr2, LOW);
    lcd.print("LOW MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE2 MOTOR 2 ON"); c = 0; d = 1;
  }
   else if ((digitalRead(SoMS2) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS2) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE2 MOTOR 2 OFF"); c = 1; d = 0;
  }
   else if ((digitalRead(SoMS2) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    lcd.print("HIGH MOISTURE2");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR2 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil3()
  {
  if ((digitalRead(SoMS3) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led3, HIGH);
    digitalWrite(mtr3, LOW);
    lcd.print("LOW MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE3 MOTOR 3 ON"); e = 0; f = 1;
  }
    else if ((digitalRead(SoMS3) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS3) == LOW)&& (digitalRead(RDpS)==LOW))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE3 MOTOR 3 OFF"); e = 1; f = 0;
  }
    else if ((digitalRead(SoMS3) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    lcd.print("HIGH MOISTURE3");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR3 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void soil4 ()
  {
  if ((digitalRead(SoMS4) == HIGH)&&(digitalRead(RDpS)==HIGH))
  { digitalWrite(led4, HIGH);
    digitalWrite(mtr4, LOW);
    lcd.print("LOW MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 ON");
    delay(1000);
    lcd.clear();
    sendSMS("LOW SOIL MOISTURE4 MOTOR 4 ON"); g = 0; h = 1;
  }
    else if ((digitalRead(SoMS4) == LOW)&&(digitalRead(RDpS)==HIGH))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
  }
  if ((digitalRead(SoMS4) == LOW)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
    sendSMS("NORMAL SOIL MOISTURE4 MOTOR 4 OFF"); g = 1; h = 0;
  }
    else if ((digitalRead(SoMS4) == HIGH)&&(digitalRead(RDpS)==LOW))
  {
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    lcd.print("HIGH MOISTURE4");
    lcd.setCursor(2, 1);
    lcd.print("MOTOR4 OFF");
    delay(1000);
    lcd.clear();
  }
  }
  void rain()
  {
  if (digitalRead(RDpS) == LOW)// low = high
  { digitalWrite(led1, LOW);
    digitalWrite(mtr1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(mtr2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(mtr3, HIGH);
    digitalWrite(led4, LOW);
    digitalWrite(mtr4, HIGH);
    digitalWrite(buz, HIGH);
    lcd.print("ITS RAINING");
    delay(1000);
    lcd.clear();
    sendSMS("ITS RAINING"); i = 0; j = 1;
  }
  if (digitalRead(RDpS) == HIGH)
  {
    lcd.print("NO RAIN");
    delay (1000);
    lcd.clear();
    sendSMS("NO RAIN DETECTED"); i = 1; j = 0;
  }
  }

Soooooo, now it is compiling? Also please auto-format your code, before posting it here (press CTRL+T in the arduino ide).

yes now it is compiling well.
will it detect condition quickly?
before doing this i used the functions of soil sensors in the void loop and the code compiles .
but when i use the code in my hardware i faced some errors like when ever new condition was detected
arduino does not acts quickly and the function was perform after all the loop completes and rechecks the conditions.
will doing this works or not?

Except from setting everything up it will not do anything, because your loop method is empty.