docs: public void writeSetupSCode(String strMethodName, String strMethodReturns, String strMethodInterface, String strClassName)
      {
          Record recFieldData = new FieldData(this);
          try   {
              String strScreenFieldName, strScreenLocation, strScreenFieldDesc, strScreenRow, strScreenCol, strScreenOutNumber, strScreenSetAnchor;
              String strFileName = DBConstants.BLANK;
              String getFile = "getMainRecord()";
              int oldRow = 2, oldCol = 21;
  
              Record recScreenIn = this.getRecord(ScreenIn.SCREEN_IN_FILE);
              SubFileFilter newBehavior = new SubFileFilter(recScreenIn.getField(ScreenIn.SCREEN_FILE_NAME), FieldData.FIELD_FILE_NAME, recScreenIn.getField(ScreenIn.SCREEN_FIELD_NAME), FieldData.FIELD_NAME, null, null);
              recFieldData.addListener(newBehavior);
              recFieldData.setKeyArea(FieldData.FIELD_NAME_KEY);
          
              recScreenIn.close();
              while (recScreenIn.hasNext())
              {
                  recScreenIn.next();
                  if (recScreenIn.getField(ScreenIn.SCREEN_FIELD_NAME).getString().length() != 0)
                  {
                      strScreenFieldName = recScreenIn.getField(ScreenIn.SCREEN_FIELD_NAME).getString();
                      strScreenLocation = recScreenIn.getField(ScreenIn.SCREEN_LOCATION).getString();
                      strScreenFieldDesc = recScreenIn.getField(ScreenIn.SCREEN_FIELD_DESC).getString();
                      strScreenOutNumber = recScreenIn.getField(ScreenIn.SCREEN_OUT_NUMBER).getString();
                      strScreenSetAnchor = recScreenIn.getField(ScreenIn.SCREEN_ANCHOR).getString();
                      int row = (int)((NumberField)recScreenIn.getField(ScreenIn.SCREEN_ROW)).getValue();
                      int col = (int)((NumberField)recScreenIn.getField(ScreenIn.SCREEN_COL)).getValue();
                      if (strScreenOutNumber.equalsIgnoreCase("1")) if (strScreenLocation.length() == 0)
                      {
                          if (row > 2)
                              ((NumberField)recScreenIn.getField(ScreenIn.SCREEN_ROW)).setValue(row-2, DBConstants.DISPLAY, DBConstants.SCREEN_MOVE);
                      }
                      strScreenRow = recScreenIn.getField(ScreenIn.SCREEN_ROW).getString();
                      strScreenCol = recScreenIn.getField(ScreenIn.SCREEN_COL).getString();
          
                          if (recScreenIn.getField(ScreenIn.SCREEN_FILE_NAME).getLength() != 0)
                          {
                              strFileName = recScreenIn.getField(ScreenIn.SCREEN_FILE_NAME).getString();
                              getFile = "getRecord(" + strFileName + "." + this.convertNameToConstant(strFileName + "File") + ")";
                          }
                          else
                              getFile = "getMainRecord()";
                      // Screen location
                      if (strScreenOutNumber.equalsIgnoreCase("1"))
                          if (strScreenLocation.length() == 0)
                              if (row == oldRow+1) if (col == oldCol)
                                  strScreenLocation = "NEXT_LOGICAL";   // Next Logical
          
                      if (strScreenLocation.length() == 0)
                          strScreenLocation = "NEXT_LOGICAL";         // Use this R/C
                      if (strScreenLocation.length() == 1)
                      {
                          switch (strScreenLocation.charAt(0))
                          {
                              case 'U':
                                  strScreenLocation = "USE_ROW_COL";break;
                              case 'R':
                                  strScreenLocation = "RIGHT_OF_LAST";break;
                              case 'T':
                                  strScreenLocation = "TOP_NEXT";break;
                              case 'B':
                                  strScreenLocation = "BELOW_LAST";break;
                              case 'A':
                                  strScreenLocation = "AT_ANCHOR";break;
                              case 'L':
                                  strScreenLocation = "USE_THIS_LOCATION";break;
                              case 'D':
                              case 'N':
                              default:
                                  strScreenLocation = "NEXT_LOGICAL";break;
                          }
                      }
                      if (strScreenLocation.equalsIgnoreCase("USE_ROW_COL"))
                          strScreenLocation = "this.getNextLocation(" + strScreenCol + ", " + strScreenRow;
                      else
                          strScreenLocation = "this.getNextLocation(ScreenConstants." + strScreenLocation;
  // Set anchor?
                      if (strScreenSetAnchor.equalsIgnoreCase("N"))
                          strScreenSetAnchor = "DONT_SET_ANCHOR";
                      else if (strScreenSetAnchor.equalsIgnoreCase("Y"))
                          strScreenSetAnchor = "SET_ANCHOR";
                      else if (strScreenSetAnchor.length() == 0)
                          strScreenSetAnchor = "ANCHOR_DEFAULT";
                      strScreenLocation += ", ScreenConstants." + strScreenSetAnchor + ")";
  // Display the field desc?
                      if (strScreenFieldDesc.equalsIgnoreCase("Y"))
                          strScreenFieldDesc = "DISPLAY_FIELD_DESC";
                      else if (strScreenFieldDesc.equalsIgnoreCase("N"))
                          strScreenFieldDesc = "DONT_DISPLAY_FIELD_DESC";
                      else if (strScreenFieldDesc.length() == 0)
                          strScreenFieldDesc = "DEFAULT_DISPLAY";
                      strScreenFieldDesc = "ScreenConstants." + strScreenFieldDesc;
  // View Control type
                      String controlType = recScreenIn.getField(ScreenIn.SCREEN_CONTROL_TYPE).getString();
                      String strDisabledEnding = DBConstants.BLANK;
                      if ("disabled".equals(controlType))
                      {
                          controlType = DBConstants.BLANK;
                          strDisabledEnding = ".setEnabled(false)";
                      }
                      String fieldString = "this." + getFile + ".getField(" + strFileName + "." + this.convertNameToConstant(strScreenFieldName) + ")";
                      if (controlType.length() == 1)
                      {
                          switch (controlType.charAt(0))
                          {
                          case 'S': // Static
                              controlType = "SStaticText";break;
                          case 'T':
                              controlType = "STEView";break;
                          case 'N':
                              controlType = "SNumberText";break;
                          case 'C':
                              controlType = "SCheckBox";break;
                          case 'R':
                              controlType = "SRadioButton";break;
                          case 'B':
                              controlType = "SButtonBox";break;
                          case 'P':
                              controlType = "SPopupBox";break;
                          };
                      }
                      if (controlType.length() == 0)  // Default
                          m_StreamOut.writeit("\t" + fieldString + ".setupDefaultView(" + strScreenLocation + ", this, " + strScreenFieldDesc + ")" + strDisabledEnding + ";\n");
                      else
                      {
                          if (controlType.startsWith("S"))
                              if (Character.isUpperCase(controlType.charAt(1)))
                                  controlType = controlType.substring(1);
                          controlType = this.convertNameToConstant(controlType);
                          m_StreamOut.writeit("\tcreateScreenComponent(ScreenModel." + controlType + ", " + strScreenLocation + ", this, fieldString, " + strScreenFieldDesc + ", null)" + strDisabledEnding + ";\n");
                          //m_StreamOut.writeit("\tnew " + controlType + "(" + strScreenLocation + ", this, " + fieldString + ", " + strScreenFieldDesc + ", null)" + strDisabledEnding + ";\n");
                      }
                      oldRow = row;
                      oldCol = col;
                  }
                  if (recScreenIn.getField(ScreenIn.SCREEN_TEXT).getString().length() != 0)
                  {
                      m_StreamOut.setTabs(+1);
                      String tempString = recScreenIn.getField(ScreenIn.SCREEN_TEXT).getString();
                      m_StreamOut.writeit(tempString);
                      if (tempString.charAt(tempString.length() - 1) != '\n')
                          m_StreamOut.writeit("\n");
                      m_StreamOut.setTabs(-1);
                  }
              }
              recScreenIn.close();
          
              recFieldData.removeListener(newBehavior, true);  // Remove and free this listener
          } catch (DBException ex)   {
              ex.printStackTrace();
          } finally {
              recFieldData.free();
          }
      }