Saving an unsigned long int to internal EEPROM

Back again with the corrections that PaulS suggested. For now tried to build functions outside the loop. Following is the code. If any improvements/ modifications please suggest. Thanks.

#include <Wire.h>
#include <hd44780.h>                       // main hd44780 header
#include <hd44780ioClass/hd44780_I2Cexp.h> // i2c expander i/o class header

hd44780_I2Cexp lcd; // declare lcd object: auto locate & config exapander chip

// LCD geometry
const int LCD_COLS = 16;
const int LCD_ROWS = 2;

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = 
{
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {6, 7, 8, 9}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 12, 11}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
bool a = true;

  const byte entryMaxSize = 5;
  static char digits[entryMaxSize + 1];
  static byte x; // index
  
void setup()
{
  Serial.begin(115200);
  lcd.begin(LCD_COLS, LCD_ROWS);
  lcd.setCursor(3, 0);
  lcd.print("  PRIYA");
  lcd.setCursor(3, 1);
  lcd.print("ELECTRONICS");
  delay(100);
  for (int positionCounter = 0; positionCounter < 40; positionCounter++)
  {
    lcd.scrollDisplayLeft();
    delay(120);
  }
  delay(800);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Set Count:");
}

void loop()
{
  char key = keypad.getKey();

  if (key != NO_KEY) // Check for a valid key.
  {
    switch (key)
    {
      case 'A': initializeCounter(); break;
      case 'D': setCount(); break;
      default: getCount(key);
    }
  }
}

void initializeCounter()
{
          lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Set Count:");
        x = 0; // reset the counter
        a = true;
  }

  void getCount(char key)
  {
    if(a)
    {
              // if not 5 characters yet
          if (x < entryMaxSize)
          {
            // add key to userinput array and increment counter
            if ( key >= '0' && key <= '9' ) // key is of type char and has a value between 0 and 9 so do something with it.
            {
              digits[x++] = key;
              digits[x] = '\0';
              lcd.print( key ) ;  // new print statement <<<<<<<<<<<<<<<<
            }
          }
          else 
          {
            countWarning();
          }
    }  
  }

  void setCount()
  {
    if (a) 
        {
          if (x == 0)
          {
            invalidCount();
          }
          else 
          {
            lcd.clear();
            lcd.print("Count Set:");
            for (byte i = 0; i < x; i++) 
            {
              lcd.print(digits[i]);
              a = false;
            }
             unsigned long count = atol(digits);
             Serial.print(count);
          }
        }
    }

void invalidCount()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Invalid Count!!");
  lcd.setCursor(0, 1);
  lcd.print("Press A"); // suggesting the user to enter the count again
  a = false;
}

void countWarning()
{
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("5 Digits Only!!"); // warning for the user if more than permitted digits are entered
  lcd.setCursor(0, 1);
  lcd.print("Press A"); // suggesting the user to enter the count again
  a = false;
}