What is “pl” as a grib key (not as value of a grib key)?

Hello:

I downloaded mean sea level pressure from the new cds and I can see that there is a key named “pl”. As far as I know, “pl” means “pressure levels”, and denotes the type of levels in which the data exist. So, there is a grib key named “levtype” that tell us the kind of level of the data: “sfc” (surface), “ml” (model levels), “pl” (pressure levels), etc. So, “pl” is a value that the grib key “levtype” can take on. It is not (as far as I know) the name of a grib key.

However, “pl” appears in my data as the name of a grib key that stores an array with 373 values.

The “mean sea level pressure” is data of pressure on a single level, more precisely, at sea level (pressure on continents has been reduced to sea level). So there is only one level. The “pl” key that I get is an array of values.

My question is: What does “pl” mean here"?.

I have searched the documentation, but I only find information about “pl” as a value, not as the name of a grib key.

Here is the dump of the first grib message, where you can see some of the values (373 values) given to the “pl” key:

#==============   MESSAGE 1 ( length=678614 )              ==============
GRIB {
  editionNumber = 1;
  table2Version = 128;
  # European Centre for Medium-Range Weather Forecasts (common/c-1.table)  
  centre = 98;
  generatingProcessIdentifier = 145;
  # Mean sea level pressure (Pa)  (grib1/2.98.128.table)  
  indicatorOfParameter = 151;
  # Surface (of the Earth, which includes sea surface)  (grib1/local/ecmf/3.table , grib1/3.table)  
  indicatorOfTypeOfLevel = 1;
  level = 0;
  # Forecast product valid at reference time + P1 (P1>0)  (grib1/local/ecmf/5.table , grib1/5.table)  
  timeRangeIndicator = 0;
  # Unknown code table entry (grib1/0.ecmf.table)  
  subCentre = 0;
  paramId = 151;
  #-READ ONLY- cfName = air_pressure_at_mean_sea_level;
  #-READ ONLY- cfVarName = msl;
  #-READ ONLY- units = Pa;
  #-READ ONLY- name = Mean sea level pressure;
  decimalScaleFactor = 0;
  dataDate = 19790501;
  dataTime = 0;
  # Hour (stepUnits.table)  
  stepUnits = 1;
  stepRange = 0;
  startStep = 0;
  endStep = 0;
  #-READ ONLY- marsParam = 151.128;
  # MARS labelling or ensemble forecast data (grib1/localDefinitionNumber.98.table)  
  localDefinitionNumber = 1;
  # ERA5 (mars/class.table)  
  marsClass = 23;
  # Analysis (mars/type.table)  
  marsType = 2;
  # Atmospheric model (mars/stream.table)  
  marsStream = 1025;
  experimentVersionNumber = 0001;
  perturbationNumber = 0;
  numberOfForecastsInEnsemble = 0;
  shortName = msl;
  GDSPresent = 1;
  bitmapPresent = 0;
  numberOfVerticalCoordinateValues = 0;
  Ni = MISSING;
  Nj = 373;
  latitudeOfFirstGridPointInDegrees = 89.785;
  longitudeOfFirstGridPointInDegrees = 0;
  earthIsOblate = 0;
  uvRelativeToGrid = 0;
  latitudeOfLastGridPointInDegrees = -14.755;
  longitudeOfLastGridPointInDegrees = 359.719;
  iDirectionIncrement = MISSING;
  iDirectionIncrementInDegrees = MISSING;
  N = 320;
  iScansNegatively = 0;
  jScansPositively = 0;
  jPointsAreConsecutive = 0;
  #-READ ONLY- alternativeRowScanning = 0;
  global = 0;
  #-READ ONLY- numberOfDataPoints = 338880;
  #-READ ONLY- numberOfDataPointsExpected = 338880;
  #-READ ONLY- numberOfValues = 338880;
  isOctahedral = 0;
  pl(373) =  {
  18, 25, 36, 40, 45, 
  50, 60, 64, 72, 72, 
  75, 81, 90, 96, 100, 
  108, 120, 120, 125, 135, 
  144, 144, 150, 160, 180, 
  180, 180, 192, 192, 200, 
  216, 216, 216, 225, 240, 
  240, 240, 250, 256, 270, 
  270, 288, 288, 288, 300, 
  300, 320, 320, 320, 324, 
  360, 360, 360, 360, 360, 
  360, 375, 375, 384, 384, 
  400, 400, 405, 432, 432, 
  432, 432, 450, 450, 450, 
  480, 480, 480, 480, 480, 
  486, 500, 500, 500, 512, 
  512, 540, 540, 540, 540, 
  540, 576, 576, 576, 576, 
  576, 576, 600, 600, 600, 
  600, 640, 640, 640, 640
  ... 273 more values
  } 
  missingValue = 9999;
  #-READ ONLY- binaryScaleFactor = -3;
  #-READ ONLY- referenceValue = 96983.2;
  sphericalHarmonics = 0;
  complexPacking = 0;
  integerPointValues = 0;
  additionalFlagPresent = 0;
  packingType = grid_simple;
  bitsPerValue = 16;
  values(338880) =  {
  102996, 102977, 102952, 102924, 102896, 
  102871, 102854, 102846, 102849, 102862, 
  102883, 102908, 102936, 102963, 102985, 
  103001, 103009, 103007, 103079, 103051, 
  103016, 102973, 102926, 102878, 102834, 
  102796, 102766, 102746, 102739, 102745, 
  102764, 102792, 102828, 102869, 102914, 
  102960, 103004, 103041, 103069, 103091, 
  103105, 103108, 103099, 103162, 103136, 
  103104, 103064, 103019, 102970, 102918, 
  102865, 102814, 102765, 102722, 102685, 
  102656, 102636, 102626, 102628, 102638, 
  102656, 102683, 102718, 102760, 102807, 
  102855, 102905, 102956, 103005, 103049, 
  103088, 103124, 103153, 103174, 103190, 
  103200, 103203, 103196, 103183, 103245, 
  103216, 103179, 103132, 103081, 103025, 
  102964, 102899, 102833, 102769, 102708, 
  102650, 102602, 102563, 102533, 102513, 
  102507, 102513, 102528, 102553, 102588
  ... 338780 more values
  } 
  #-READ ONLY- numberOfCodedValues = 338880;
  #-READ ONLY- maximum = 104574;
  #-READ ONLY- minimum = 96983.2;
  #-READ ONLY- average = 101336;
  #-READ ONLY- standardDeviation = 763.951;
  #-READ ONLY- skewness = 0.39706;
  #-READ ONLY- kurtosis = 3.60443;
  #-READ ONLY- isConstant = 0;
  #-READ ONLY- numberOfMissing = 0;
  gridType = reduced_gg;
  #-READ ONLY- getNumberOfValues = 338880;
}

Thanks in advance.