I'm working on modernizing Rosetta Code's infrastructure. Starting with communications. Please accept this time-limited open invite to RC's Slack.. --Michael Mol (talk) 20:59, 30 May 2020 (UTC)

# 99 Bottles of Beer/Pascal

99 Bottles of Beer/Pascal is part of 99 Bottles of Beer. You may find other members of 99 Bottles of Beer at Category:99 Bottles of Beer.
99 Bottles of Beer done in Pascal-languages

Component Pascal

BlackBox Component Builder

` MODULE BottlesOfBeer;IMPORT StdLog;CONST bottles = 99; PROCEDURE Part(i: INTEGER);BEGIN	StdLog.Int(i);StdLog.String(" bottles of beer on the wall");StdLog.Ln;	StdLog.Int(i);StdLog.String(" bottles of beer");StdLog.Ln;	StdLog.String("Take one down, pass it around");StdLog.Ln;	StdLog.Int(i - 1);StdLog.String(" bottles of beer on the wall.");StdLog.Ln;	StdLog.LnEND Part; PROCEDURE Sing*;VAR	i: INTEGER;BEGIN	FOR i := bottles TO 1 BY -1 DO		Part(i)	ENDEND Sing;END BottlesOfBeer. `

Execute: ^Q BottlesOfBeer.Sing
Output:

``` 99 bottles of beer on the wall
99 bottles of beer
Take one down, pass it around
98 bottles of beer on the wall.

98 bottles of beer on the wall
98 bottles of beer
Take one down, pass it around
97 bottles of beer on the wall.

97 bottles of beer on the wall
97 bottles of beer
Take one down, pass it around
96 bottles of beer on the wall.

...

1 bottles of beer on the wall
1 bottles of beer
Take one down, pass it around
0 bottles of beer on the wall.
```

Delphi
See Pascal
Or
`program Hundred_Bottles;  {\$APPTYPE CONSOLE}  uses SysUtils;  const C_1_Down = 'Take one down, pass it around' ;  Var i : Integer ;  // As requested, some fun : examples of Delphi basic techniques. Just to make it a bit complex  procedure WriteABottle( BottleNr : Integer ) ; begin   Writeln(BottleNr, ' bottles of beer on the wall' ) ; end ;  begin   for i := 99 Downto 1 do begin   WriteABottle(i);   Writeln( Format('%d bottles of beer' , [i] ) ) ;   Writeln( C_1_Down ) ;   WriteABottle(i-1);   Writeln ; End ;  end.`

Pascal
`program BottlesOfBeer; var    i: integer; begin    for i := 99 downto 1 do        if i <> 1 then            begin                writeln(i, ' bottles of beer on the wall');                writeln(i, ' bottles of beer');                writeln('Take one down, pass it around');                if i = 2 then                    writeln('One bottle of beer on the wall')                else                    writeln(i - 1, ' bottles of beer on the wall');                writeln;            end        else            begin                writeln('One bottle of beer on the wall');                writeln('One bottle of beer');                writeln('Take one down, pass it around');                writeln('No more bottles of beer on the wall');            endend.`