Пакетная программа запуска JZOS — запуск задания JCL с исходным кодом Java в SYSIN DD *

Описание ЗАДАНИЯ: Библиотека JVMLDM76 находится в наборе данных WLM.ABC.DEF.LINKLIB.PDSE. JVMLDM76 (загрузочный модуль) поставляется с установленным набором инструментов пакетного запуска jzos.

Вот моя работа:

    //JHELLO JOB MSGLEVEL=(1,1),REGION=0M,CLASS=Q,MSGCLASS=A 
    /* NOTIFY=&SYSUID */                                     
    //JOMVS EXEC PGM=JVMLDM76,REGION=0M,TIME=NOLIMIT         
    //STEPLIB  DD DSN=WLM.ABC.DEF.LINKLIB.PDSE,DISP=SHR  
    //SYSIN    DD  *                                         
    /* program starts here */                                
    public class JHelloWorld                              
    {                                                     
        public static void main(String args[])              
        {                                                  
           System.out.println("Hello :)");                 
        }                                                  
    }                                                    
    //*                                                      
    //STDOUT   DD SYSOUT=*                                   
    //SYSPRINT DD SYSOUT=*                                   
    //STDERR   DD SYSOUT=*                                   
    //

Ошибка:

Аргумент имени класса java не указан. Сбой пакетного запуска Jzos, код возврата = 101

Запросы:

  1. Могу ли я отправить Java-программу только в виде файла класса, такого как JOMVS EXEC PGM = JVMLDM76, REGION = 0M, TIME = NOLIMIT, JAVACLS = Hello? (это работает нормально)

  2. Есть ли способ интегрировать исходный код Java с jcl? Я не могу изменить загрузочный модуль. Он зашифрован.

  3. Пока я переношу свою Java-программу с рабочей станции на хост (режим передачи ascii), специальный символ [] в программе в «main (String args [])» исчезает. Если я наберу его в jcl, он работает нормально. может кто-нибудь сказать причину этого? Я видел эту ссылку. Но не нашел никакой документации по этому поводу. Есть ли список специальных символов, которых следует избегать в переменных сценария JCL/MVS

Спасибо за внимание,


person user1    schedule 14.01.2016    source источник
comment
Номер 3 - это отдельный вопрос, если вы не можете до него добраться. Похоже, у вас проблема с кодовой страницей. Значение [ в используемой вами кодовой странице ASCII не преобразуется в правильный символ в используемой вами кодовой странице EBCDIC. Проконсультируйтесь с вашим техническим персоналом.   -  person Bill Woodger    schedule 14.01.2016
comment
Не используйте TIME=NOLIMIT. Если вы получите Big Fat Loop, вы поглотите много процессорного времени, и это кого-то расстроит. TIME=(,2) даст вам массу времени обработки.   -  person Bill Woodger    schedule 14.01.2016
comment
Почему исходный код программы Java должен быть встроенным?   -  person zarchasmpgmr    schedule 15.01.2016
comment
@БиллВуджер спасибо.   -  person user1    schedule 15.01.2016
comment
@BillWoodger, я нашел свою ошибку в третьем запросе. символы стали невидимыми, когда я вырезал пасту с рабочей станции Windows на другую платформу. когда я выбрал опцию преобразования ascii в ebcdic во время передачи по ftp, символы отображаются нормально.   -  person user1    schedule 20.01.2016


Ответы (1)


Java не является интерпретируемым языком. Его необходимо скомпилировать в файл байт-кода *.class или *.jar, а затем выполнить. Чтобы сделать то, что вы хотите сделать, потребуется более сложная пакетная программа запуска, такая как пакет Co:Z от технологий «ласточкин хвост» https://dovetail.com/docs/coz/coz_index.html. Dovetailed — оригинальные авторы JZOS.

//COZBATCH JOB CLASS=W,NOTIFY=&SYSUID                                  
//*                                                                    
//JOBLIB  DD DISP=SHR,DSN=COZ.LOADLIB                                  
//*                                                                    
//*====================================================================
//* Batch job to run the CoZLauncher.                                  
//*====================================================================
//RUNCOZ  EXEC PGM=COZBATCH                                            
//STDIN  DD *                                                          
cd /tmp                                                                
mkdir -p hello                                                         
cd hello                                                               
cat >HelloWorld.java <<EOF                                             
public class HelloWorld {                                              
   public static void main(String[] args) {                            
        System.out.println("Hello World!");                            
   }                                                                   
}                                                                      
EOF                                                                    
export JAVA_HOME=/usr/lpp/java/J7.1_64                                 
export PATH=$PATH:$JAVA_HOME/bin                                       
javac HelloWorld.java                                                  
java HelloWorld                              
/*   
person David Crayford    schedule 02.03.2016
comment
Спасибо @Дэвид Крейфорд - person user1; 03.03.2016