SoftwareMining - Business Rule Extraction and Documentation 

Business Rule  
COMP_VW.CBL
COBOL Documentation
COMP_VW.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_M1110
 */

public void main_M1110 (){
  company.open(ACMBasePersistence.OPEN_MODE_I_O);
  perform("initializeCompany_M1120");

  while ( true ){
    // termination condition 
    if(ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsTerminate))
      break;

    iData.getWsErrMess().fill(" ");
    if (ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsAdd)) {
      perform("addNewCompany_M1150");
    } else if (ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsNext)) {
        perform("readNextCompany_M1140");
      } else if (ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsFind)) {
          perform("findNextCompany_M1130");
        } else if (ACMUtil.ACMCheck88Vars(iData.getWsAnswer(), iData.wsAnswerWsUpdate)) {
            perform("updateCurrentCompany_M1160");
          } else {
            iData.setWsErrMess("Invalid Choice");
          }
  }
  company.close();
  goBack();
}


/**
 * initializeCompany_M1120
 */

public void initializeCompany_M1120 (){
  company.setCoRecType(1);
  company.setCoId(0);

  // START statement 
  try {
    company.seek(company.getKey1(), ACMBasePersistence.CONDITION_TYPE_GREATER);
    iData.setWsAnswer("N");
  } catch (InvalidKeyException e){
    iData.setWsAnswer("A");
  }
}


/**
 * findNextCompany_M1130
 */

public void findNextCompany_M1130 (){
  iData.setWsHeader(iData.getWsFindMessValue());
  if (!company.getCompanyName().isFilled(' ')) {

    // START statement 
    try {
      company.seek(company.getKey2(), ACMBasePersistence.CONDITION_TYPE_GREATER_OR_EQUALS);
      iData.setWsErrMess("Company found");
      perform("readNextCompany_M1140");
    } catch (InvalidKeyException e){
      iData.setWsErrMess("Company not found");
      perform("initializeCompany_M1120");
    }
  } else {
    iData.setWsErrMess("Company name missed");
  }
}


/**
 * readNextCompany_M1140
 */

public void readNextCompany_M1140 (){
  iData.setWsHeader(iData.getWsViewMessValue());

  // READ statement 
  try {
    company.next();
  } catch (AtEndException  e){
    iData.setWsErrMess("Last record reached, restarted");
    perform("initializeCompany_M1120");

    // READ statement 
    company.next();
  }
}


/**
 * addNewCompany_M1150
 */

public void addNewCompany_M1150 (){
  iData.setWsHeader(iData.getWsAddMessValue());
  company.setKey1("0");

  // START statement 
  try {
    company.seek(company.getKey1(), ACMBasePersistence.CONDITION_TYPE_EQUALS);
  } catch (InvalidKeyException e){
    company.setCoNextId(0);

    // WRITE statement 
    company.insert();
  }

  // READ statement 
  company.read();
  company.setCoNextId(1 + company.getCoNextId().getAsInt());

  // REWRITE statement 
  company.update();
  company.setCoId(company.getCoNextId());
  company.getCompanyDetail().fill(" ");
  company.setCoRecType(1);
  iData.setWsErrMess("Company added");

  // WRITE statement 
  try {
    company.insert();
  } catch (InvalidKeyException e){
    iData.setWsErrMess("Duplicate Company Name");
  }
}


/**
 * updateCurrentCompany_M1160
 */

public void updateCurrentCompany_M1160 (){
  iData.setWsHeader(iData.getWsUpdMessValue());

  // REWRITE statement 
  try {
    company.update();
    iData.setWsErrMess("Company info updated");
  } catch (InvalidKeyException e){
    iData.setWsErrMess("Duplicate Company Name");
  }
}