There are many ways to do this.
If you control  X and Y and move to the position. Control the cylinder movement with a Z axis to bring down the hydraulic cyclinder. STOP. Manually punch the hole. START. Move the cylinder back up. Move to the next position - the code will look like this - 
G0 X10Y10 - move to position 10,10
G0 Z0         - move the hydraulic cylinder down to the punching position.
M1             - wait for the hole to be punched
Z10             - move the cylinder up, out of the way
G0 X35Y35   - move to position 35,35
G0 Z0          - move the hydraulic cylinder down to the punching position
M1              - wait for the hole to be punched.  
The computer will not move the table until it has moved the cylinder up out of the way.
If you only do X and Y then you only need
G0 X35Y35   - move to 35,35
M1              - wait for cylinder to be moved down and the hole to be punched.
G0 X47Y53  - move to the next hole
M1              - wait for cylinder to be moved down and the hole to be punched.
Here the "Resume" button can be in series with a switch on your punch, so that you cannot move the table if the cylinder is not fully "up" out of the way.
If you do the whole thing - 
G0 X35Y35    - move to the next hole
G0 X0            - bring the cylinder down
M3                - punch the hole
M5                - if needed to retract the punch
G0 X10          - move the cylinder up, out of the way
G0 X25Y50    - move to the next hole
Here M3 operates a relay to start the pumps on the hydraulic cylinder. M5 stops it, or releases a pressure valve retracting the punch.
The table WILL NOT move until each line is completed. You can put a "pause" in to delay, say 10 seconds, to allow the cylinder to fully retract. You could have a safety switch connected, so that the computer would not advance until the cylinder was fully "home"