No experience with software serial but I'm sure you can use the same principles from the Serial Input Basics thread. I also have no idea about GSM shields but I guess they
Using approach 2,
Mega receives from PS2
Mega sends to Uno
Uno sends to GSM shield
GSM shield sends to UNO
UNO sends status to Mega (success or failure).
Mega displays status
Note that if you have multiple communication paths (e.g. hardware serial and software serial), you basically need to implement buffers ('receivedChars'), flags ('newData') and functions (rcvWithEndMarker') for each of them.