"Subaru's logger (which an open software such as a TARI may have, I'm not sure) can tell why the ECU is setting that code by monitering a few paramenters. Everytime the car is at a consistant load and speed (such as driving on the interstate at 60), your car runs a series of tests within your charcoal canister and the respective solenoids and valves alongside with your fuel tank pressure. If it fails to completely run the EVAP test, it will try again. For a few cycles, if it sees that that same part of the test fails, then it will set a code. Diagnostic Process Display would show the Evaporative Purge Control not passing."
is basically what happens to me...only comes when i'm on highway for a while.
so idk wtf it is, gas cap is fine.