ReallyDoConversion
-- sigh! -- :
PROC =
BEGIN
ENABLE {ABORTED => GOTO UserAbort; UNWIND => locked ← FALSE};
argList: LIST OF Rope.ROPE;
cStream: IO.STREAM;
CommandTool.StarExpansion[cmd];
argList ← CommandTool.ParseToList[cmd].list;
Process.SetPriority[Process.priorityBackground];
IODefs.WriteLine["\n\n--- Cedar MPC Mebes Converter of February 1, 1985 ---"];
IF argList=
NIL
THEN
BEGIN
IODefs.WriteLine["..command line needs a file name for the plan (.mpc) file"];
GOTO Punt;
END;
cStream ←
FS.StreamOpen[argList.first
!
FS.Error =>
BEGIN
IODefs.WriteLine[IO.PutFR["..can't open plan file \"%g\".", IO.rope[argList.first]]];
GOTO Punt;
END];
DO IODefs.WriteChar[cStream.GetChar[! IO.EndOfStream => EXIT]] ENDLOOP;
IODefs.PrintTime["Starting syntax check of plan"];
cStream.SetIndex[0];
IF MPCParserDefs.Scan[cStream,
FALSE] # 0
--syntax check
THEN {IODefs.WriteLine["Syntax errors."]; GOTO Punt};
IODefs.PrintTime["Plan OK - Starting conversion"];
cStream.SetIndex[0];
[] ← MPCParserDefs.Scan[cStream, TRUE]; --and execute it
IODefs.PrintTime["Finished."];
locked ← FALSE;
EXITS
UserAbort =>
{[] ← PartitionDefs.DestroyPartitions[]; IODefs.WriteLine[""]; IODefs.PrintTime["Conversion aborted by user"]; locked ← FALSE};
Punt => {IODefs.WriteLine[""]; IODefs.PrintTime["Conversion aborted"]; locked ← FALSE};
END; -- of ReallyDoConversion