Приятно осознавать, что вы хорошо знакомы с концепцией PDOL. Насколько я понимаю с вашим вопросом, вы можете создать команду GPO, если PDOL нет. Я думаю, что вы сомневаетесь в том, чтобы написать универсальную функцию для создания команды APDU GPO.
Прежде всего я хочу сказать вам, что если в ответе SELECT присутствует информация о PDOL, то вы должны отправить данные PDOL в APDU команды GPO, в противном случае приложение карты может выдать какую-то ошибку.
Таким образом, вы можете установить индикатор при получении PDOL в команде SELECT. Если PDOL отсутствует, вы можете просто отправить 80 A8 00 00 02 83 00 00, и если ваш индикатор указал, что PDOL требуется, просто проанализируйте PDOL и ответ SELECT и подготовьте значение для данных PDOL, если вы знаете (как вы описали в Ваш вопрос) отправить в GPO команду APDU.
Если вы не знаете, какое значение, вы можете просто заполнить шестнадцатеричные нули в поле значения.
В качестве примера: 80 A8 00 00 04 83 02 03 80 00. Это правильная команда (я исправил байт INS). Или вы также можете отправить 80 A8 00 00 04 83 02 00 00 00 (значение PDOL заменяется нулями)
Я думаю, что это объяснение может помочь вам получить ответы на оба вопроса. Попробуйте и дайте нам знать, если понадобятся дальнейшие разъяснения.