if then else logic with while loop problem

Hi Friends,
I have to do write a shell file based on one flag.If that flag value is 'N' then process look in $DATA are and the normal process continue.If vaule is 'P' then it check for the files in different location $CONV and move those file in $DATA area and rest of the process continue.But if the vaule is 'J' then i have to look in both place i.e $DATA and $CONV area and then move the file from $CONV area to the $DATA area.
Now the problem is how to scan through bot are in one go(i.e) the 3rd condition.
Here is the code:-

----------------------------

  if   [ $CONV_FLAG= "'N'"]
      then
           PLACE_TO_CHECK=$DATA
      elif [ $CONV_FLAG= "'P'"]
    then 
           PLACE_TO_CHECK=$CONV       
      fi
while [ ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE01 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE02 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE03 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE04 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE05 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE06 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE07 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE08 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE09 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE10 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE11 -o ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE12 -o \
        ! -f $PLACE_TO_CHECK/$AMPS_COMPLETE13 -o \
        ! -f $PLACE_TO_CHECK/$ADD_FILE -o ! -f $PLACE_TO_CHECK/$ANS_FILE -o \
        ! -f $PLACE_TO_CHECK/$CDQ_FILE -o ! -f $PLACE_TO_CHECK/$COR_FILE -o \
        ! -f $PLACE_TO_CHECK/$CMP_FILE -o ! -f $PLACE_TO_CHECK/$ISH_FILE -o \
        ! -f $PLACE_TO_CHECK/$JNL_FILE -o ! -f $PLACE_TO_CHECK/$JRC_FILE -o \
        ! -f $PLACE_TO_CHECK/$JRF_FILE -o ! -f $PLACE_TO_CHECK/$PRC_FILE -o \
        ! -f $PLACE_TO_CHECK/$PRH_FILE -o ! -f $PLACE_TO_CHECK/$PYH_FILE -o \
        ! -f $PLACE_TO_CHECK/$RDR_FILE -o ! -f $PLACE_TO_CHECK/$REV_FILE -o \
        ! -f $PLACE_TO_CHECK/$RTS_FILE -o ! -f $PLACE_TO_CHECK/$SRC_FILE -o \
        ! -f $PLACE_TO_CHECK/$CCF_FILE -o ! -f $PLACE_TO_CHECK/$CUR_FILE -o \
        ! -f $PLACE_TO_CHECK/$CVR_FILE -o ! -f $PLACE_TO_CHECK/$DSP_FILE -o \
        ! -f $PLACE_TO_CHECK/$GEO_FILE -o ! -f $PLACE_TO_CHECK/$ISC_FILE -o \
        ! -f $PLACE_TO_CHECK/$LET_FILE -o ! -f $PLACE_TO_CHECK/$PYM_FILE -o \
        ! -f $PLACE_TO_CHECK/$SBJ_FILE -o ! -f $PLACE_TO_CHECK/$SCT_FILE -o \
        ! -f $PLACE_TO_CHECK/$STS_FILE -o ! -f $PLACE_TO_CHECK/$SUB_FILE -o \
        ! -f $PLACE_TO_CHECK/$SVR_FILE -o ! -f $PLACE_TO_CHECK/$TMC_FILE -o \
        ! -f $PLACE_TO_CHECK/$TWN_FILE -o ! -f $PLACE_TO_CHECK/$USE_FILE -o \
        ! -f $PLACE_TO_CHECK/$PYF_FILE -o ! -f $PLACE_TO_CHECK/$PPY_FILE -o \
        ! -f $PLACE_TO_CHECK/$WRD_FILE -o ! -f $PLACE_TO_CHECK/$SDV_FILE -o \
        ! -f $PLACE_TO_CHECK/$JTC_FILE -o ! -f $PLACE_TO_CHECK/$RCL_FILE -o \
 ! -f $PLACE_TO_CHECK/$ACP_FILE -o \
        ! -f $PLACE_TO_CHECK/$ANF_FILE -o ! -f $PLACE_TO_CHECK/$COF_FILE -o \
        ! -f $PLACE_TO_CHECK/$ISF_FILE -o ! -f $PLACE_TO_CHECK/$PYF_FILE -o \
 $PMON_COUNT -eq 0 ]
do   
if   [ $NO_OF_PAUSES -gt $MAX_PAUSES ]
      then
           echo "\nLoad process now paused $NO_OF_PAUSES times - Job Cancelled"
           touch $LOGS/main/FAILED-dataload
    touch $LOGS/main/FINISHED-dataload
           $SCRIPTS/msg_fail.ksh
           exit 1
      fi
      if   [ $PMON_COUNT -gt 0 ]
      then
           echo "\nAMPS file(s) missing - load process sleeping for \c"
           echo "$SLEEP_MINS minute(s)"
      else
           echo "\nOracle Instance $ORACLE_SID not running - load process \c"
           echo "sleeping for $SLEEP_MINS minute(s)"
      fi
      sleep $PAUSE_TIME
      date
      PMON_COUNT=`ps -ef | grep pmon_$ORACLE_SID | grep -v grep | wc -l`
      NO_OF_PAUSES=`expr $NO_OF_PAUSES + 1`
      echo "NO_OF_PAUSES  = $NO_OF_PAUSES"
done
if [ $CONV_FLAG= "'P'"]
    then 
           mv $CONV/$DATAFILE_PFX*.[Tt][Xx][Tt] $DATA      
 fi
 
if [ $CONV_FLAG= "'J'"]
  then
          PLACE_TO_CHECK_DATA=$DATA
          PLACE_TO_CHECK_CONV=$CONV 
    
while [ ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE01 -o ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE02 -o \
        ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE01 -o ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE02 -o \
        ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE05 -o ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE06 -o \
  ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE05 -o ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE06 -o \
        ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE07 -o ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE08 -o \
  ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE07 -o ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE08 -o \
        ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE09 -o ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE10 -o \
  ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE09 -o ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE10 -o \
        ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE11 -o ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE12 -o \
  ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE11 -o ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE12 -o \
        ! -f $PLACE_TO_CHECK_DATA/$AMPS_COMPLETE13 -o \
  ! -f $PLACE_TO_CHECK_CONV/$AMPS_COMPLETE13 -o \
        ! -f $PLACE_TO_CHECK_DATA/$ADD_FILE -o ! -f $PLACE_TO_CHECK_DATA/$ANS_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$ADD_FILE -o ! -f $PLACE_TO_CHECK_CONV/$ANS_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$CDQ_FILE -o ! -f $PLACE_TO_CHECK_DATA/$COR_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$CDQ_FILE -o ! -f $PLACE_TO_CHECK_CONV/$COR_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$CMP_FILE -o ! -f $PLACE_TO_CHECK_DATA/$ISH_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$CMP_FILE -o ! -f $PLACE_TO_CHECK_CONV/$ISH_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$JNL_FILE -o ! -f $PLACE_TO_CHECK_DATA/$JRC_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$JNL_FILE -o ! -f $PLACE_TO_CHECK_CONV/$JRC_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$JRF_FILE -o ! -f $PLACE_TO_CHECK_DATA/$PRC_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$JRF_FILE -o ! -f $PLACE_TO_CHECK_CONV/$PRC_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$PRH_FILE -o ! -f $PLACE_TO_CHECK_DATA/$PYH_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$PRH_FILE -o ! -f $PLACE_TO_CHECK_CONV/$PYH_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$RDR_FILE -o ! -f $PLACE_TO_CHECK_DATA/$REV_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$RDR_FILE -o ! -f $PLACE_TO_CHECK_CONV/$REV_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$RTS_FILE -o ! -f $PLACE_TO_CHECK_DATA/$SRC_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$RTS_FILE -o ! -f $PLACE_TO_CHECK_CONV/$SRC_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$CCF_FILE -o ! -f $PLACE_TO_CHECK_DATA/$CUR_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$CCF_FILE -o ! -f $PLACE_TO_CHECK_CONV/$CUR_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$CVR_FILE -o ! -f $PLACE_TO_CHECK_DATA/$DSP_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$CVR_FILE -o ! -f $PLACE_TO_CHECK_CONV/$DSP_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$GEO_FILE -o ! -f $PLACE_TO_CHECK_DATA/$ISC_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$GEO_FILE -o ! -f $PLACE_TO_CHECK_CONV/$ISC_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$LET_FILE -o ! -f $PLACE_TO_CHECK_DATA/$PYM_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$LET_FILE -o ! -f $PLACE_TO_CHECK_CONV/$PYM_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$SBJ_FILE -o ! -f $PLACE_TO_CHECK_DATA/$SCT_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$SBJ_FILE -o ! -f $PLACE_TO_CHECK_CONV/$SCT_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$STS_FILE -o ! -f $PLACE_TO_CHECK_DATA/$SUB_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$STS_FILE -o ! -f $PLACE_TO_CHECK_CONV/$SUB_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$SVR_FILE -o ! -f $PLACE_TO_CHECK_DATA/$TMC_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$SVR_FILE -o ! -f $PLACE_TO_CHECK_CONV/$TMC_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$TWN_FILE -o ! -f $PLACE_TO_CHECK_DATA/$USE_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$TWN_FILE -o ! -f $PLACE_TO_CHECK_CONV/$USE_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$PYF_FILE -o ! -f $PLACE_TO_CHECK_DATA/$PPY_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$PYF_FILE -o ! -f $PLACE_TO_CHECK_CONV/$PPY_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$WRD_FILE -o ! -f $PLACE_TO_CHECK_DATA/$SDV_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$WRD_FILE -o ! -f $PLACE_TO_CHECK_CONV/$SDV_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$JTC_FILE -o ! -f $PLACE_TO_CHECK_DATA/$RCL_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$JTC_FILE -o ! -f $PLACE_TO_CHECK_CONV/$RCL_FILE -o \
 ! -f $PLACE_TO_CHECK_DATA/$ACP_FILE -o \
 ! -f $PLACE_TO_CHECK_CONV/$ACP_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$ANF_FILE -o ! -f $PLACE_TO_CHECK_DATA/$COF_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$ANF_FILE -o ! -f $PLACE_TO_CHECK_CONV/$COF_FILE -o \
        ! -f $PLACE_TO_CHECK_DATA/$ISF_FILE -o ! -f $PLACE_TO_CHECK_DATA/$PYF_FILE -o \
  ! -f $PLACE_TO_CHECK_CONV/$ISF_FILE -o ! -f $PLACE_TO_CHECK_CONV/$PYF_FILE -o \
 $PMON_COUNT -eq 0 ]
do
   if   [ $NO_OF_PAUSES -gt $MAX_PAUSES ]
      then
           echo "\nLoad process now paused $NO_OF_PAUSES times - Job Cancelled"
           touch $LOGS/main/FAILED-dataload
    touch $LOGS/main/FINISHED-dataload
           $SCRIPTS/msg_fail.ksh
           exit 1
      fi
      if   [ $PMON_COUNT -gt 0 ]
      then
           echo "\nAMPS file(s) missing - load process sleeping for \c"
           echo "$SLEEP_MINS minute(s)"
      else
           echo "\nOracle Instance $ORACLE_SID not running - load process \c"
           echo "sleeping for $SLEEP_MINS minute(s)"
      fi
      sleep $PAUSE_TIME
      date
      PMON_COUNT=`ps -ef | grep pmon_$ORACLE_SID | grep -v grep | wc -l`
      NO_OF_PAUSES=`expr $NO_OF_PAUSES + 1`
      echo "NO_OF_PAUSES  = $NO_OF_PAUSES"
done      
mv $DATA/$DATAFILE_PFX*.txt $DATA/$DATAFILE_PFX*.cnv
cat $CONV/$DATAFILE_PFX*.txt $DATA/$DATAFILE_PFX*.cnv >$DATA/$DATAFILE*.txt
rm $CONV/$DATAFILE_PFX*.txt
fi
echo "\nAll AMPS files in Data directory - starting Warehouse Dataload...\n"
# name the scripts
S0=load_txt.ksh
S1=merge_process.ksh

----------------------------------------------

Yes, a wrapper loop seems like the right way to go for one, the other or both. Is your while a loop or an if? All the file names to check should be in a variable (line feeds between is perfectly legal and good form), and applied in a 'for' loop. You should get more mileage out of ( cd some_dir, . . . ), where the parens make just that code run in the target dir, not the parent loop. Use more lines, and one item per line, formatted identically. Case is a great place to test, ensure all cases are covered and hang comments. Indent hierarchically, consistently. Put a blank line between structures. Then, it is much more readable and maintainable:

FILE_LIST="
   $AMPS_COMPLETE01
   $AMPS_COMPLETE02
 .
 .
 .
"
 
case $CONV_FLAG in
(P)
     places_to_check=$DATA
     ;;
(J)
     places_to_check="$CONV $DATA"
    ;;
(N)
     places_to_check=$CONV
    ;;
(*)
     echo "Bad input CONV_FLAG='$CONV_FLAG'" >&2
     exit 1
esac
 
for PLACE_TO_CHECK in $places_to_check
do
  (
  cd $PLACE_TO_CHECK
 
  for file in $FILE_LIST
  do
    .
    .
    .
  done
  .
  .
  .
  )
done

Hi Thanks for the reply.
In my while loop i am checking for the existance of the file (like $AMPS_COMPLETE01 etc ) and also the [$PMON_COUNT -eq 0 ].if any of the condition is not met then i do the wait or the error raising.
Now if $CONV_FLAG is passed as 'J' then how to compair all the file in both are (i.e $DATA and $CONV):confused: