The following Java code reads a problem from an LP or MPS file and writes it in LP or MPS format to another file.

import qs.*;
import java.io.*;

/**
 * use as java pp [params] infile outfile
 *       for paremeters see usage routine 
 *      needs qsopt.jar on classpath 
 * pp stands for pretty printer
 * 
 * @author Monika Mevenkamp, All Rights Reserved 
 */
class pp {

   // for defaults see pp() constructor 
   private String inFile;
   private String outFile;
   private boolean inMpsFile;
   private boolean outMpsFile;

   public pp() {
      inFile = null;
      outFile = null;
      inMpsFile = false;
      outMpsFile = false;
   }

   public pp(String av[]) throws QSException {
      this();
      getargs(av);
   }

   public static void main(String av[]) {
      pp printer = null;

      try {
         printer = new pp(av);
         System.out.println("Pretty Print: " + printer);
         Problem prob = Problem.read(printer.inFile, printer.inMpsFile);
         if (prob == null) {
            throw new QSException("Could not parse problem.");
         }
         prob.write(printer.outFile, printer.outMpsFile);
      } catch (QSException e) {
         System.err.println(e.toString());
      } catch (IOException e) {
         System.err.println("Could not access file\n");
         System.err.println(e);
      }
   }

   public static void usage() throws QSException {
      String msg;
      msg = "Usage: java pp [- below -] in out\n";
      msg += "   -m     input file is in MPS format " +
                        "(default: LP format)\n";
      msg += "   -M     output file is written in MPS format " + 
                        "(default: LP format)\n";
      msg += "\n";
      msg += "    in    input file name\n";
      msg += "    out   output file name\n";
      throw new QSException(msg);
   }

   public void getargs(String av[]) throws QSException {
      try {
         int i = 0;
         while (av[i].charAt(0) == '-') {
            switch (av[i].charAt(1)) {
               case 'm' :
                  inMpsFile = true;
                  break;
               case 'M' :
                  outMpsFile = true;
                  break;
               default :
                  usage();
            }
            i++;
         }
         inFile = av[i];
         outFile = av[i + 1];
         if ((inFile == null) || (outFile == null)) {
            usage();
         }
      } catch (ArrayIndexOutOfBoundsException e) {
         usage();
      }
   }

   public String toString() {
      String s = "File \"" + inFile + "\" -> \"" + outFile + "\"";
      s += ((inMpsFile) ? "MPS" : "LP") + "  -> " +
           ((outMpsFile) ? "MPS" : "LP");
      return s;
   }
}