{$MODE OBJFPC}{$LONGSTRINGS ON}

uses
  SysUtils;

  {
    parameter   sample   meaning

    ALevel      28       pre-max level id
    AScore      991.000  pre-max score
    AGainLines  4        final line clear count
    AGainScore  34.800   final line clear score
  }
  function GetMaxOutResult(ALevel, AScore, AGainLines, AGainScore: Integer): String;
  var
    ScoreTotal, ScoreOvershot: Integer;
    PercentOvershot, FractionalLines: Single;
  begin
    ScoreTotal := AScore + AGainScore;    // 1.025.800 points
    ScoreOvershot := ScoreTotal - 999999; //    25.801 points

    PercentOvershot := ScoreOvershot / AGainScore;                // 74.14 percent
    FractionalLines := AGainLines - AGainLines * PercentOvershot; //  1.03 lines

    Result := '%.2d+%1.2f'.Format([ALevel, FractionalLines]); // 28+1.03 lines
  end;

var
  ResultString: String;
begin
  ResultString := GetMaxOutResult(28, 991000, 4, 34800);
  Write(ResultString);
end.