docs: public String getSFieldParam(String strSuffix, boolean bEncodeParam)
      {
          String strFieldName = null;
          if (this.getConverter() != null)
          {
              String strFieldDesc = this.getConverter().getFieldDesc();
              BaseField field = (BaseField)this.getConverter().getField();
              if (field != null)
              {
                  if ((field.getListener("org.jbundle.base.field.eventMainReadOnlyHandler") == null)   // Special case - If this is reading a secondary file there is a huge chance of name collision
                  	|| (field.getComponent(0) == this))	// Only allow the first one to use this name
                  {
                      strFieldName = field.getFieldName(false, true);	// Recordname.fieldname
                      int iCount = 0;
                      for (int i = 0; ; i++)
                      {   // From second component on, add the component count
                          if (field.getComponent(i) == null)
                              break;  // End of list (Almost all cases stop here on first try)
                          if (!((ScreenField)field.getComponent(i)).isInputField())
                              continue;   // Only need params for input fields (not buttons, etc)
                          if (((ScreenField)field.getComponent(i)).getParentScreen() != this.getParentScreen())
                              continue;   // Not on this screen
                          iCount++;
                          if (iCount > 1)
                              if (field.getComponent(i) == this)
                                  strFieldName += Integer.toString(iCount);
                      }
                  }
              }
              else
                  strFieldName = Params.FIELD + strFieldDesc;
          }
          if (strFieldName == null)
          {
              int i = 0;
              for (; i < this.getParentScreen().getSFieldCount(); i++)
              {
                  if (this.getParentScreen().getSField(i) == this)
                      break;
              }
              strFieldName = "ScreenField" + Integer.toString(i); 
          }
          if (strSuffix != null) if (strFieldName != null)
              strFieldName = strFieldName + strSuffix;    // Add param suffix
          if (bEncodeParam) if (strFieldName != null)
          {
          	for (int i = 0; i < strFieldName.length(); i++)
          	{
          		char ch = strFieldName.charAt(i);
          		char chx = ch;
          		if (i == 0) if (!Character.isLetter(ch))
          			chx = '_';
          		if (!Character.isLetterOrDigit(ch))
          			if (ch != '_')
              			if (ch != '-')
                  			if (ch != '.')
                  				chx = '_';
          		if (ch != chx)
          			strFieldName = strFieldName.substring(0, i) + chx + strFieldName.substring(i + 1);
          	}
              //xtry {
              //x    strFieldName = URLEncoder.encode(strFieldName, DBConstants.URL_ENCODING);	// Just being safe
              //x} catch (java.io.UnsupportedEncodingException ex) {
              //x    ex.printStackTrace();
              //x}
          }
          return strFieldName;
      }