Tough hdpg's example is correct, a Haas without a toolsetter almost never has a Z0 in the offset page.
I would strongly suggest the G52 method in one program OR! preset the workoffsets.
O00000
(Three parts from barstock)
M97 P1000
G52 Z-one part length
M97 P1000
G52 Z-two part length
M97 P1000
G28
M30
(-----)
N1000
(Part program)
M99
The nice thing, Haas automatically clears G52 workoffsets on a lathe after an M30
The other way with preset workoffsets is:
O00000
(Three parts from barstock)
G54 M97 P1000
G55 M97 P1000
G56 M97 P1000
G28
M30
(-----)
N1000
(Part program)
M99
I use the second method because of my preference to have all changes to be made external to the program. For example switching from a .094 cutoff tool to a .125 leaves the program intact, just change the offsets instead.