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:
  • None
Statement Category Filters:
  • Screen statements

Business Rule Code
/**
 * main_M1080
 */

public void main_M1080 (){
  company.open(ACMBasePersistence.OPEN_MODE_INPUT);
  perform("initializeCompany_M1090");

  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_M1090");
      }
      if (iData.getWsBreakFlag().getAsInt() == 0) {
        perform("readNextCompany_M1100");
      }
    } else if (ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsTerminate)) {
        iData.getWsErrMess().fill(" ");
      } else {
        iData.setWsErrMess("Invalid choice");
      }
  }
  company.close();
  goBack();
}


/**
 * initializeCompany_M1090
 */

public void initializeCompany_M1090 (){
  company.setCoRecType(1);
  company.setCoId(0);
  iData.setWsRestartFlag(0);
  iData.setWsBreakFlag(0);
  iData.setWsAnswer("N");

  // START statement 
  try {
    company.seek(company.getKey1(), ACMBasePersistence.CONDITION_TYPE_GREATER);
  } catch (InvalidKeyException e){
    iData.setWsBreakFlag(1);
    iData.setWsErrMess("Company file empty");
  }
}


/**
 * readNextCompany_M1100
 */

public void readNextCompany_M1100 (){
  // 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 {
      company.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(company.getCoId());
      iData.getWsCompName(iData.getWsN().getAsInt() - 1).setValue(company.getCompanyNameValue());
    }
  }
  if (iData.getWsRestartFlag().getAsInt() == 1) {
    iData.setWsErrMess("Last record reached, restarting");
  }
}