Check if your linux env has memory issue or disk I/O read issue. I am fine in my environment.
Here are some suggestions.
First, put OFS outside, in your command, OFS is defined again on every line.
zcat hlr*.gz | awk '{print substr($3,0,15),substr($4,3,10)}' FS="**" OFS="," >Op_Formatted.csv >Op_Formatted.csv
If the position is not changed, try this:
zcat hlr*.gz | awk '{print substr($0,12,15) "," substr($0,32,10)}' >Op_Formatted.csv >Op_Formatted.csv
Test with first command on a 3000 lines file
real 0m0.297s
user 0m0.249s
sys 0m0.046s
Test with second command:
real 0m0.078s
user 0m0.077s
sys 0m0.030s