Your code has several typos and can't work, but I think I understand your question.
A port of type "out" can't be read inside a process, so it impossible to shift the current value.
The standard solution to this is to use an intermediate signal that can be read and also assigned to the output.
Another possibility is to use port type "buffer", but that will create problems if you don't do it strictly in all levels of the design. I don't recommend "buffer".
A third alternative is to use the attribute "driving_value". The current value that the process is trying to drive to a port of type "out" can be accessed with this attribute.