docs: public void init(Record recLayout, PrintWriter out)
      {
          boolean bFirstTime = false;
          boolean bNewRecord = false;
          if (out == null)
          { // First time
              bFirstTime = true;
              if (recLayout == null)
              {
                  recLayout = new Layout((Record.findRecordOwner(null)));
                  bNewRecord = true;
              }
              recLayout.getField(Layout.ID).setValue(1);
              try   {
                  if (!recLayout.seek("="))
                  { // Error - top level not found?
                  }
              } catch   (DBException ex)  {
                  ex.printStackTrace();
                  return;
              }
              String strFileName = recLayout.getField(Layout.NAME).toString() + ".idl";
              try   {
                  FileOutputStream outStream = new FileOutputStream(strFileName);
                  BufferedOutputStream buffOut = new BufferedOutputStream(outStream);
                  out = new PrintWriter(buffOut);
              } catch (IOException ex)    {
                  ex.printStackTrace();
                  return;
              }
          }
              
          this.printIt(recLayout, out, 0, ";");
          
          if (bFirstTime)
              out.close();
          if (bNewRecord)
              recLayout.free();
      }