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:
Statement Category Filters: The following statement types have been filtererd out

Business Rule Code
/**
 * main_M120
 */
public void main_M120 ()
{
  clearScreen();
  displaySection("mainScreen");
  companyPf.open(ACMBasePersistence.OPEN_MODE_I_O);
  companyInfo.open(ACMBasePersistence.OPEN_MODE_I_O);
  perform("initializeCompany_M130");
  idata.setWsAnswer("N");

  while ( true ) {
    // termination condition 
    if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsTerminate)) {
      break;
    }
    if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsAdd)) {
      perform("addNewCompany_M160");
    } else if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsNext)) {
        perform("readNextCompany_M150");
      } else if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsFind)) {
          perform("findNextCompany_M140");
        } else if (ACMUtil.ACMCheck88Vars(idata.getWsAnswer(), idata.wsAnswerWsUpdate)) {
            perform("updateCurrentCompany_M170");
          } else {
            idata.setWsErrMess("Invalid Choice");
            perform("invalidMessage_M180");
          }
    idata.setWsMessage(idata.getWsSelMessValue());
    perform("displayMessage_M210");
    accept(idata.getWsAnswer(), 19, 40);
    idata.setWsMessage(idata.getWsBlankMessValue());
    perform("displayMessage_M210");
  }
  goBack();
}

/**
 * initializeCompany_M130
 */
public void initializeCompany_M130 ()
{
  companyPf.setCoRecType(1);
  companyPf.setCoId(0);

  // START statement 
  try {
    companyInfo.seek(companyInfo.getKey1(), ACMBasePersistence.CONDITION_TYPE_GREATER);
  } catch (InvalidKeyException e){
    idata.setWsErrMess("Could not open the COMPANY File");
    perform("invalidMessage_M180");
    goBack();
  }
  idata.setWsAnswer("n");
}

/**
 * findNextCompany_M140
 */
public void findNextCompany_M140 ()
{
  perform("clearWsArea_M200");
  idata.setWsMessage(idata.getWsFindMessValue());
  perform("displayMessage_M210");
  perform("clearWsArea_M200");
  accept(idata.getWsCompanyName(), 8, 40);
  companyInfo.setKey2(idata.getWsCompanyNameValue());

  // START statement 
  try {
    companyInfo.seek(companyInfo.getKey2(), ACMBasePersistence.CONDITION_TYPE_GREATER_OR_EQUALS);
  } catch (InvalidKeyException e){
    idata.setWsErrMess("Company not found");
    perform("invalidMessage_M180");
    perform("initializeCompany_M130");
  }
  perform("readNextCompany_M150");
}

/**
 * readNextCompany_M150
 */
public void readNextCompany_M150 ()
{
  idata.setWsEndFlag(0);

  // READ statement 
  try {
    companyPf.next();
  } catch (AtEndException  e){
    idata.setWsEndFlag(1);
  }
  if (idata.getWsEndFlag().getAsInt() == 1) {
    idata.setWsErrMess("This is the last record, starting again");
    perform("invalidMessage_M180");
    perform("initializeCompany_M130");
  } else {
    idata.setWsCompanyName(companyInfo.getCompanyIdValue());
    idata.setWsCompDetail(companyInfo.getCompanyDetailValue());
    displaySection("mainScreen");
  }
}

/**
 * addNewCompany_M160
 */
public void addNewCompany_M160 ()
{
  perform("clearWsArea_M200");
  idata.setWsMessage(idata.getWsAddMessValue());
  perform("displayMessage_M210");
  companyPf.setKey1("0");

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

    // WRITE statement 
    companyPf.insert();
  }

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

  // REWRITE statement 
  companyPf.update();
  companyPf.setCoRecType(1);
  companyPf.setCoId(companyPf.getCoNextId());
  companyPf.setCoNextId(0);

  // WRITE statement 
  try {
    companyInfo.insert();
  } catch (InvalidKeyException e){
    idata.setWsClearOk(0);
    idata.setWsErrMess("Write Failed");
    perform("invalidMessage_M180");
  }
  perform("clearWsArea_M200");
  perform("updateCurrentCompany_M170");
}

/**
 * updateCurrentCompany_M170
 */
public void updateCurrentCompany_M170 ()
{
  idata.setWsMessage(idata.getWsUpdateMessValue());
  perform("displayMessage_M210");
  acceptSection("mainScreen");
  companyInfo.setCompanyDetail(idata.getWsCompDetailValue());
  companyInfo.setCompanyId(idata.getWsCompanyNameValue());

  // REWRITE statement 
  try {
    companyInfo.update();
  } catch (InvalidKeyException e){
    idata.setWsClearOk(0);
    idata.setWsErrMess("Duplicate Company Name");
    perform("invalidMessage_M180");
  }
}

/**
 * invalidMessage_M180
 */
public void invalidMessage_M180 ()
{
}

/**
 * invalidSect1_M190
 */
public void invalidSect1_M190 ()
{
  display(idata.getWsErrMess(), 23, 10);
  goBack();
}

/**
 * clearWsArea_M200
 */
public void clearWsArea_M200 ()
{
  if (idata.getWsClearOk().getAsInt() == 1) {
    idata.getWsCompDetail().fill(" ");
    displaySection("mainScreen");
  } else {
    idata.setWsClearOk(1);
  }
}

/**
 * displayMessage_M210
 */
public void displayMessage_M210 ()
{
}

/**
 * c00DisplayMessSect1_M220
 */
public void c00DisplayMessSect1_M220 ()
{
  display(idata.getWsMessage(), 22, 5);
}

/**
 * c01DisplayMessSectExit_M230
 */
public void c01DisplayMessSectExit_M230 ()
{
  goBack();
}