LINUX.ORG.RU

История изменений

Исправление vM, (текущая версия) :

следует рассмотреть cmd.exe как пример умственной инвалидности разработчиков M$ альтернативных оболочек в других ОС, которые, тем не менее, тоже используют концепцию кодов возврата и аргументов.

Коды возврата использовались до юникса в системах пакетной обработки, чтобы знать, на каком шаге прервать цепочку в задании Compile-Link-Go, и что делать, если что-то пойдёт не так, без физического присутствия пользователя и без вмешательства оператора.

//ASMFCLG  PROC MAC='SYS1.MACLIB',MAC1='SYS1.MACLIB'                    00050000
//ASM      EXEC PGM=IFOX00,PARM=OBJ,REGION=128K                         00100000
//SYSLIB   DD   DSN=&MAC,DISP=SHR                                       00150000
//         DD   DSN=&MAC1,DISP=SHR                                      00200000
//SYSUT1   DD   DSN=&&SYSUT1,UNIT=SYSSQ,SPACE=(1700,(600,100)),         00250000
//             SEP=(SYSLIB)                                             00300000
//SYSUT2   DD   DSN=&&SYSUT2,UNIT=SYSSQ,SPACE=(1700,(300,50)),          00350000
//             SEP=(SYSLIB,SYSUT1)                                      00400000
//SYSUT3   DD   DSN=&&SYSUT3,UNIT=SYSSQ,SPACE=(1700,(300,50))           00450000
//SYSPRINT DD   SYSOUT=A,DCB=BLKSIZE=1089                               00500000
//SYSPUNCH DD   SYSOUT=B                                                00550000
//SYSGO    DD   DSN=&&OBJSET,UNIT=SYSSQ,SPACE=(80,(200,50)),            00600000
//             DISP=(MOD,PASS)                                          00650000
//LKED     EXEC PGM=IEWL,PARM=(XREF,LET,LIST,NCAL),REGION=128K,         00700000
//             COND=(8,LT,ASM)                                          00750000
//SYSLIN   DD   DSN=&&OBJSET,DISP=(OLD,DELETE)                          00800000
//         DD   DDNAME=SYSIN                                            00850000
//SYSLMOD  DD   DSN=&&GOSET(GO),UNIT=SYSDA,SPACE=(1024,(50,20,1)),      00900000
//             DISP=(MOD,PASS)                                          00950000
//SYSUT1   DD   DSN=&&SYSUT1,UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD)),         01000000
//             SPACE=(1024,(50,20))                                     01050000
//SYSPRINT DD   SYSOUT=A                                                01100000
//GO       EXEC PGM=*.LKED.SYSLMOD,COND=((8,LT,ASM),(4,LT,LKED))        01150000

Если интерактивный пользователь физически присутствует и может наблюдать вывод программы, то ему лучше сообщить об ошибке человечьим языком, а не невидимым RC.

Исходная версия vM, :

следует рассмотреть cmd.exe как пример умственной инвалидности разработчиков M$ альтернативных оболочек в других ОС, которые, тем не менее, тоже используют концепцию кодов возврата и аргументов.

Коды возврата использовались до юникса в системах пакетной обработки, чтобы знать, на каком шаге прервать цепочку в задании Compile-Ling-Go, и что делать, если что-то пойдёт не так, без физического присутствия пользователя и без вмешательства оператора.

//ASMFCLG  PROC MAC='SYS1.MACLIB',MAC1='SYS1.MACLIB'                    00050000
//ASM      EXEC PGM=IFOX00,PARM=OBJ,REGION=128K                         00100000
//SYSLIB   DD   DSN=&MAC,DISP=SHR                                       00150000
//         DD   DSN=&MAC1,DISP=SHR                                      00200000
//SYSUT1   DD   DSN=&&SYSUT1,UNIT=SYSSQ,SPACE=(1700,(600,100)),         00250000
//             SEP=(SYSLIB)                                             00300000
//SYSUT2   DD   DSN=&&SYSUT2,UNIT=SYSSQ,SPACE=(1700,(300,50)),          00350000
//             SEP=(SYSLIB,SYSUT1)                                      00400000
//SYSUT3   DD   DSN=&&SYSUT3,UNIT=SYSSQ,SPACE=(1700,(300,50))           00450000
//SYSPRINT DD   SYSOUT=A,DCB=BLKSIZE=1089                               00500000
//SYSPUNCH DD   SYSOUT=B                                                00550000
//SYSGO    DD   DSN=&&OBJSET,UNIT=SYSSQ,SPACE=(80,(200,50)),            00600000
//             DISP=(MOD,PASS)                                          00650000
//LKED     EXEC PGM=IEWL,PARM=(XREF,LET,LIST,NCAL),REGION=128K,         00700000
//             COND=(8,LT,ASM)                                          00750000
//SYSLIN   DD   DSN=&&OBJSET,DISP=(OLD,DELETE)                          00800000
//         DD   DDNAME=SYSIN                                            00850000
//SYSLMOD  DD   DSN=&&GOSET(GO),UNIT=SYSDA,SPACE=(1024,(50,20,1)),      00900000
//             DISP=(MOD,PASS)                                          00950000
//SYSUT1   DD   DSN=&&SYSUT1,UNIT=(SYSDA,SEP=(SYSLIN,SYSLMOD)),         01000000
//             SPACE=(1024,(50,20))                                     01050000
//SYSPRINT DD   SYSOUT=A                                                01100000
//GO       EXEC PGM=*.LKED.SYSLMOD,COND=((8,LT,ASM),(4,LT,LKED))        01150000

Если интерактивный пользователь физически присутствует и может наблюдать вывод программы, то ему лучше сообщить об ошибке человечьим языком, а не невидимым RC.