SoftwareMining - Business Rule Extraction and Documentation 

Business Rule  
COMP_SCL.CBL
COBOL Documentation
COMP_SCL.html
Persistent Records:
Signature (From Linkage Section) 
Working Storage Section

 

Analyst's Description/Comments
Data Filters Applied to this rule:
Statement Category Filters: The following statement types have been filtererd out

Business Rule Code
/**
 * main_M90
 */
public void main_M90 ()
{
  companyPf.open(ACMBasePersistence.OPEN_MODE_INPUT);
  companyInfo.open(ACMBasePersistence.OPEN_MODE_INPUT);
  displaySection("ssMainScreen");
  perform("initializeCompany_M100");

  while ( true ) {
    // termination condition 
    if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsTerminate)) {
      break;
    }
    if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsNext)) {
      if (idata.getWsRestartFlag().getAsInt() == 1) {
        perform("initializeCompany_M100");
      }
      if (idata.getWsBreakFlag().getAsInt() == 0) {
        perform("readNextCompany_M110");
      }
    } else if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsTerminate)) {
        idata.getWsErrMess().fill(" ");
        displaySection("ssErrMess");
      } else {
        idata.setWsErrMess("Invalid choice");
        displaySection("ssErrMess");
      }
    accept(idata.getWsAnswer(), 19, 41);
  }
  goBack();
}

/**
 * initializeCompany_M100
 */
public void initializeCompany_M100 ()
{
  companyPf.setCoRecType(1);
  companyPf.setCoId(0);
  idata.setWsRestartFlag(0);
  idata.setWsBreakFlag(0);
  idata.setWsAnswer("N");

  // START statement 
  try {
    companyInfo.seek(companyInfo.getKey1(), ACMBasePersistence.CONDITION_TYPE_GREATER);
  } catch (InvalidKeyException e){
    idata.setWsBreakFlag(1);
    idata.setWsErrMess("Could not open the Company file");
    displaySection("ssErrMess");
  }
}

/**
 * readNextCompany_M110
 */
public void readNextCompany_M110 ()
{
  // INITIALIZE 
  ACMInitialize.initialize(idata.getWsCompTable());
  idata.setWsEndFlag(0);
  idata.setWsN(0);

  while ( true ) {
    // termination condition 
    if (idata.getWsN().getAsInt() > 10) {
      break;
    }
    idata.setWsN(idata.getWsN().getAsInt() + 1);

    // READ statement 
    try {
      companyPf.next();
    } catch (AtEndException  e){
      idata.setWsEndFlag(1);
    }
    if (idata.getWsEndFlag().getAsInt() == 1) {
      idata.setWsRestartFlag(1);
      idata.setWsN(12);
    } else {
      idata.getWsCompId(idata.getWsN().getAsInt() - 1).setValue(companyPf.getCoId());
      idata.getWsCompName(idata.getWsN().getAsInt() - 1).setValue(companyInfo.getCompanyIdValue());
    }
  }
  displaySection("ssCompList");
  if (idata.getWsRestartFlag().getAsInt() == 1) {
    idata.setWsErrMess("Last record reached, restarting");
    displaySection("ssErrMess");
  }
}