Line Following Not Working When Activated By IR

This is my code:

#include <IRremote.h>
//Line Following
int Sensor_1 = 0, Sensor_2 = 0, Sensor_3 = 0; //sensors
int Flag = 0, Current_Flag = 0, Counter = 0; //used to count how many times the car reverses.
String patch = ""; //Used to counter a Int to string error later on.
String Line_Value = ""; //String value that combines(not adds) the sensor values to then give us cases. This is also where the patch comes in.

//Pin Assigment.
int receiverpin = 12; //the pin for the IR
unsigned long RED; //Used to store incoming commands.
//
#define A 16736925 //Down to ----->

#define B 16754775

#define X 16712445

#define C 16720605

#define D 16761405

#define E 5316027

#define F 2747854299

#define Y 3622325019

#define G 1386468383

#define H 553536955 // this is just to make the car go forward, back, left, right and stop.

#define I 16738455  // code # related to number 1 on the remote

#define J 16750695  // code # related to number 2 on the remote

#define K 16756815  //code # related to number 3 on the remote

#define L 16724175  // code # related to number 4 on the remote
// the ABC...'s are cases for the Red Value.
IRrecv irrecv(receiverpin); //recive 
decode_results results; //decode



//the pin identication was put into the setup, because it made to code neater.
void setup() 
{
  Serial.begin(9600); // Set Up for Serial Communication

  pinMode(receiverpin, INPUT); // IR stuff
  irrecv.enableIRIn();
  
  pinMode(10, INPUT); // Line Follower s1
  pinMode(4, INPUT); //  Line Follower s2
  pinMode(2, INPUT); //  Line Follower s3

  pinMode(6, OUTPUT); // Wheel 1
  pinMode(7, OUTPUT); // Wheel 2
  pinMode(8, OUTPUT); // Wheel 3
  pinMode(9, OUTPUT); // Wheel 4

  pinMode(5, OUTPUT); // Enable A
  pinMode(11, OUTPUT); // Enable B
  analogWrite(5, 120); //change the speed of motors.(0~255)
  analogWrite(11, 120);
}
void loop()
{
  if (irrecv.decode(&results))
  {
    int RED = results.value;
    Serial.println(RED);
    irrecv.resume();
    delay(150);
    switch (RED) {
      case A:
        DForward();
        break;
      case B:
        DBack();
        break;
      case C:
        DLeft();
        break;
      case D:
        DRight();
        break;
      case E:
        DForward();
        break;
      case F:
        DBack();
        break;
      case G:
        DLeft();
        break;
      case H:
        DRight();
        break;
      case X:
        DStop();
        break;
      case Y:
        DStop();
        break;
      case I:
        _shake();
        DStop();
        break;
      case J:
        _rod();
        DStop();
        break;
      case K:
        _Stayng(); //Wrong song name but the car dances to the verses "Slide to the left, slide to the right, criss cross".
        DStop();
        break;
      case L:  // now with this new code This is what will be excuted when 4 on the remote is pressed.
        //Forward_Move();
        Sensors_Testing();
        Black_Line_Check();
    }
  }
}








void Forward_Move()
{
  digitalWrite(6, 1); // Forward Right
  digitalWrite(7, 0); // Reverse Right
  digitalWrite(8, 0); // Reverse Left
  digitalWrite(9, 1); // Forward Left
  // If you did Reverse before this Forward_Move ..... Increment 1
  if (Current_Flag == 1)
  {
    Counter++;
    Current_Flag = 0;
  }
  if (Counter == 15)
  { Serial.println("180 Degrees");
    Rotate_Right();
    delay(5000);
    Counter = 0;
  }
}
//These movements are for the Line Following.
void Reverse_Move()
{
  digitalWrite(6, 0); // Forward Right
  digitalWrite(7, 1); // Reverse Right
  digitalWrite(8, 1); // Reverse Left
  digitalWrite(9, 0); // Forward Left
}
void Rotate_Right()
{
  digitalWrite(6, 0); // Forward Right
  digitalWrite(7, 1); // Reverse Right
  digitalWrite(8, 0); // Reverse Left
  digitalWrite(9, 1); // Forward Left
}
void Rotate_Left()
{
  digitalWrite(6, 1); // Forward Right
  digitalWrite(7, 0); // Reverse Right
  digitalWrite(8, 1); // Reverse Left
  digitalWrite(9, 0); // Forward Left
}
void Turn_Right()
{
  digitalWrite(6, 0); // Forward Right
  digitalWrite(7, 0); // Reverse Right
  digitalWrite(8, 0); // Reverse Left
  digitalWrite(9, 1); // Forward Left
}
void Turn_Left()
{
  digitalWrite(6, 1); // Forward Right
  digitalWrite(7, 0); // Reverse Right
  digitalWrite(8, 0); // Reverse Left
  digitalWrite(9, 0); // Forward Left
}
void Stop()
{ if (Flag == 0)
  {
    digitalWrite(6, 0); // Forward Right
    digitalWrite(7, 0); // Reverse Right
    digitalWrite(8, 0); // Reverse Left
    digitalWrite(9, 0); // Forward Left
  }
  if (Flag == 1)
  {
    Reverse_Move();
    Current_Flag = 1;
    Serial.println(patch + Counter);
  }

}

void Sensors_Testing()
{
  Sensor_1 = digitalRead(10); // Left   Sensor
  Sensor_2 = digitalRead(4); // Center  Sensor
  Sensor_3 = digitalRead(2); // Right    Sensor
  Line_Value = patch + Sensor_1 + Sensor_2 + Sensor_3;
  Serial.println(Line_Value);
  //delay(800);
}

void Black_Line_Check()
{
  if (Line_Value == "111")
  {
    Serial.println("Forward_Move()");
    Forward_Move();
    Flag = 1;
  }
  if (Line_Value == "010")
  {
    Serial.println("Forward_Move()");
    Forward_Move();
    Flag = 1;
  }
  if (Line_Value == "100")
  {
    Serial.println("Rotate_Left()");
    Rotate_Left();
    Flag = 1;
  }
  if (Line_Value == "001")
  {
    Serial.println("Rotate_Right()");
    Rotate_Right();
    Flag = 1;
  }
  if (Line_Value == "110")
  {
    Serial.println("Turn_Left()");
    Turn_Left();
    Flag = 1;
  }
  if (Line_Value == "000")
  {
    Serial.println("Stop()");
    Stop();
  }
  if (Line_Value == "011")
  {
    Serial.println("Turn_Right()");
    Turn_Right();
    Flag = 1;
  }

//Genaral actions and some functions.
}
void DForward()
{
  digitalWrite(5, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(6, HIGH); //digital output
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  Serial.println("Forward");
}
void DBack()
{
  digitalWrite(5, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  Serial.println("Back");
}
void DLeft()
{
  digitalWrite(5, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  digitalWrite(8, HIGH);
  digitalWrite(9, LOW);
  Serial.println("Left");
}
void DRight()
{
  digitalWrite(5, HIGH);
  digitalWrite(11, HIGH);
  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
  digitalWrite(8, LOW);
  digitalWrite(9, HIGH);
  Serial.println("Right");
}
void DStop()
{
  digitalWrite(5, LOW);
  digitalWrite(11, LOW);
  Serial.println("STOP!");
}
void _snakeR()
{
  DRight();
  delay(50);
  DLeft();
  delay(50);
  DForward();
  delay(50);
  DRight();
  delay(50);
  DLeft();
  delay(50);
  DRight();
  delay(50);
  DLeft();
  delay(50);
}
void _snake()
{
  for (int var2 = 0; var2 <= 20; var2++) {
    _snakeR();
    if (var2 == 20) {
      break;
      Serial.println("Rod 1 is done");
    }
  }
}
void _rodR()
{
  DForward();
  delay(100);
  DBack();
  delay(100);
}
void _rod()
{
  for (int var1 = 0; var1 <= 5; var1++) {
    _rodR();
  }
}
void _shakeR()
{
  DRight();
  delay(40);
  DLeft();
  delay(40);
}
void _shake()
{
  for (int var3 = 0; var3 <= 30; var3++) {
    _shakeR();
  }
}
void _Stayng() {
  DLeft();
  delay(200);
  DStop();
  delay(100);
  DForward();
  delay(200);
  DStop();
  delay(700);
  DRight();
  delay(420);
  DStop();
  delay(100);
  DForward();
  delay(300);
  DStop();
  delay(300);
  DLeft();
  delay(220);
  DStop();
  delay(1000);
  DRight();
  delay(200);
  DLeft();
  delay(300);
  DStop();
  delay(1000);
}

What I want is for Line Tracking to be activated by IR and continue looping until stopped by IR. When I pressed 4 on the remote it activates the Line Following case but it just turns to the left endlessly(Until I press Stop).
Any ideas on how to make it work?

    int RED = results.value;

The value field of the results struct is NOT an int.