Getting all possible letter combinations of a word
I see some things that may help you improve your code.

Consider separating input and output

Right now, the unscramble function does both the permutation and the printing of both outputs and errors. A more modular (and likely more maintainable) approach would separate these into separate functions.

Return something useful from functions

Every single one of the routines is declared as returning void.  Something is wrong there.  For example, the unscramble routine could return the number of permutations or 0 on error.

Throw errors rather than printing error messages

The user of your code may be creating a GUI with no command line available and will not appreciate having your code printing instead of indicating an error to the calling code.  The two ways that C++ programs generally signal an error are either by throwing an exception (if the circumstance really is exceptional) or by returning a value that indicates an error. 

Eliminate global variables

Eliminating global variables allows your code to be more readable and maintainable, both of which are important characteristics of well-written code.  Global variables introduce messy linkages that are difficult to spot and error prone.  Either the file name or better, a std::ostream reference, should be passed rather than having the filename be a global variable.  Better still, have subroutines simply operate by passing a string in or out and collect the I/O elsewhere.

Use standard algorithms

You might want to use std::next_permutation to accomplish this.  It would make the code much simpler, and you're already including the required header.