I don't uderstand the language, so I don't exactly know what it is supposed to do but:
Here are the compiler messages (I saved the project as atm.lpr):
atm.lpr(76,15) Hint: Variable "a" does not seem to be initialized
atm.lpr(77,24) Warning: Variable "found" does not seem to be initialized
atm.lpr(100,20) Warning: Variable "tmp" does not seem to be initialized
atm.lpr(10,9) Note: Local variable "n" not used
atm.lpr(13,11) Note: Local variable "i" not used
In line 100 you do:
if tmp.saldo>=p then
This is likely to give you an access violation right from te start.
Fix the compiler warnigs first.
procedure login(var a:array of nasabah;x:integer;found:boolean);
I suppose the found parameter is there to indicate wether or not something is found (a pin)?
If so then either declare found as an out parameter (or var, if you must be TurboPascal compatible), or more logical to me: declare it as a function:
procedure login(var a:array of nasabah;x:integer): Boolean;
Line 104:
if(tmp.saldo>=p) then
This is redundant, you are already in a block that is only executed if (tmp.saldo>=p) (line 100)
Please give your variable names that make sense.
It's perfectly OK to have i, j etc as loop variables but almost anything else would benefit from a more descriptive name.
Bart