main open "commands.dat" as inputFile read command from inputFile while inputFile process command read command from inputFile close inputFile On first draft I did: process if the command requires additional input read the input call correct encryption routine process input: input, a file stream inputName, a string outputName, a string command, a char output: none This routine will be big, so make it simple switch command case 'A' FileToNumber(inputName, outputName) case 'a' FileFromNumber(inputName, outputName) case 'I' FileIncrement(inputName, outputName, 1) case 'i' FileIncrement(inputName, outputName, -1) case 'o' ReverseFileByWord(inputName, outputName) case 'O' ReverseFileByMessage(inputName, outputName) case 'C' read shift from input CeasarFile(inputName, outputName, shift) case 'S' read dir from input SelfCeasarFile(inputName, outputName, dir) case 'P' FileToPigLatin(inputName, outputName) case 'p' FileFromPigLatin(inputName, outputName) case '<' CopyFile(inputName, outputName) case '+' read secondInput from input MergeFiles(inputName, secondInput, outputName) case '=' CompareFiles(inputName, outputName) read input: input, a file stream output: inputName, a string outputName, a string command, a char read inputName read command read outputName FileToNumber open inputFile message = "" read character from inputFile Make sure this reads white space as well while inputFile message = message + CharToHexString( character) read character from inputFile write message to output file CharToHexString div and mod? find the first hex digit of the input character convert the hex digit to a character and add it to the return value find the second hex digit of the input character convert the hex digit to a character and add it to the return value return the new string FileFromNumber open the input file read the inputMessage from the file close the input file outputMessage = "" pos = 0 while pos < length of inputMessage get the first character if more characters get second character if both characters are ValidHexDigit HexStringToAsciiCharacter both characters to a single ascii chararacter add new character to outputMessage else add both characters to outputMessage else add the first character to the outputMessage write outputMessage to output file ValidHexDigit if the charactar is between 0 and 9, or betwen a and f return true else return false HexStringToAsciiChar convert first character value from ascii to hex convert second character value from ascii to hex value = first_digit * 16 + second_digit return value FileIncrement open input file outputMessage = "" for each character in the message if the character is a hex value newCharacter = DoSimpleAddition(character, dir) outputMessage = outputMessage + newCharacter else outputMessage = outputMessage + character write outputMessage to outputFile DoSimpleAddition convert the character to hex value newValue = converted char + dir move the new value to the range 0 to 16 conver newValue to character return the character ReverseFileByWord open the input file while not at the end of the inputMessage copy white space to outputMessage build a word reverseWord add reverseWord to outputMessage print outputMessage to outputFile ReverseFileByMessage read inputMessage from inputFile for last letter to first letter in inputMessage add letter to outputMessage write outputMessage to outputFile CeaserFile read inputMessage from inputFile for each letter in the inputMessage if the letter is an alphabetic letter outputMessage += EncryptLetter(letter, shift) else outptuMessage += letter write outputMessage to outputFile SelfCeaserFile read inputMessage from inputFile shift = 'a' for each letter in the inputMessage if the letter is an alphabetic letter if (dir = +) outputMessage += EncryptLetter(letter, shift) else outputMessage += EncryptLetter(letter, -shift) else outptuMessage += letter write outputMessage to outputFile EncryptLetter Careful about coersion here Add shift to letter If the letter is out of range bring the letter back into range return new letter FileToPigLatin read inputMessage from inputFile for each letter in inputMessage if the letter is whitespace add the letter to the output message else build word PigLatin the word add the pigLatinWord to the outputMessage write outputMessage to outputFile PigLatinWord pos = 0 while the letter at pos is not a vowel add the letter to the postfix add the letters from pos on to the return word add "-" to the return word add the postfix to the return word add "ay" to the return word FileFromPigLatin read inputMessage from inputFile for each letter in inputMessage if the letter is whitespace add the letter to the output message else build word UnPigLatin the word add the newWord to the outputMessage write outputMessage to outputFile UnPigLatinWord find the - in the word If ther is no - return the word else for each letter from the - to the letter a add the letter to the outputWord add the letters fromt he beginning to - to the outputWord return the outputWord CopyFile read inputMessage from inputFile write outputMessage to outputFile MergeFiles read inputMessage from inputFile write outputMessage to outputFile read inputMessage from secondInputFile write outputMessage to outputFile CompareFiles read message1 from inputFile read message2 from secondInputFile if message1 == message 2 print files match else print files do not match