41.2. Error Checking

In the Fortran version, each TAO routine has as its final argument an integer error variable, in contrast to the C++ convention of providing the error variable as the routine's return value. The error code is set to be nonzero if an error has been detected; otherwise, it is zero. For example, the Fortran and C++ variants of TaoSolveApplication() are given, respectively, below, where info denotes the error variable:

   call TaoSolveApplication(TAO_APPLICATION taoapp, TAO_SOLVER tao, int info) 
   info = TaoSolveApplication(TAO_APPLICATION taoapp, TAO_SOLVER tao) 

Fortran programmers can use the error codes in writing their own tracebacks. For example, one could use code such as the following:

   call TaoSolveApplication(taoapp, tao, info) 
   if (info .ne. 0) then 
       print*, 'Error in routine ...' 
       return 
   endif 
In addition, Fortran programmers can check these error codes with the macro CHKERRQ(), which terminates all process when an error is encountered. See the PETSc users manual for details. The most common reason for crashing PETSc Fortran code is forgetting the final info argument.

Additional interface differences for Fortran users: