$!++ $! $! [STARLET_SD]PASCAL$BUILD.COM $! $! This command file is inserted into the STARLETPAS.TLB file during the $! OpenVMS build. It is then extracted and invoked by the Pascal installation $! on the customer's system. The rest of the Pascal installation has no $! direct knowledge on the contents of the STARLETPAS.TLB file. $! $! Edit History: $! $! John Reagan 30-Sep-2004 $! - Initial version $! John Reagan 23-Jan-2006 $! - Add TBK routines $! $! $ ON ERROR THEN EXIT $! $! Extract the rest of the files from STARLETPAS.TLB $! $ IF PASCAL$DEBUG THEN LIBRARY := LIBRARY/LOG $ LIBRARY/TEXT/EXTRACT=PASCAL$D_FLOAT /OUTPUT=VMI$KWD:PASCAL$D_FLOAT.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$G_FLOAT /OUTPUT=VMI$KWD:PASCAL$G_FLOAT.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=STARLET /OUTPUT=VMI$KWD:STARLET.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$ACLEDIT_ROUTINES /OUTPUT=VMI$KWD:PASCAL$ACLEDIT_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$CLI_ROUTINES /OUTPUT=VMI$KWD:PASCAL$CLI_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$CMA_ROUTINES /OUTPUT=VMI$KWD:PASCAL$CMA_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$CONV_ROUTINES/OUTPUT=VMI$KWD:PASCAL$CONV_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$CVT_ROUTINES /OUTPUT=VMI$KWD:PASCAL$CVT_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$DCX_ROUTINES /OUTPUT=VMI$KWD:PASCAL$DCX_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$DTK_ROUTINES /OUTPUT=VMI$KWD:PASCAL$DTK_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$EDT_ROUTINES /OUTPUT=VMI$KWD:PASCAL$EDT_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$FDL_ROUTINES /OUTPUT=VMI$KWD:PASCAL$FDL_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$LBR_ROUTINES /OUTPUT=VMI$KWD:PASCAL$LBR_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$LIB_ROUTINES /OUTPUT=VMI$KWD:PASCAL$LIB_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$MAIL_ROUTINES/OUTPUT=VMI$KWD:PASCAL$MAIL_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$MTH_ROUTINES /OUTPUT=VMI$KWD:PASCAL$MTH_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$NCS_ROUTINES /OUTPUT=VMI$KWD:PASCAL$NCS_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$OTS_ROUTINES /OUTPUT=VMI$KWD:PASCAL$OTS_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$PPL_ROUTINES /OUTPUT=VMI$KWD:PASCAL$PPL_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$PSM_ROUTINES /OUTPUT=VMI$KWD:PASCAL$PSM_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$SMB_ROUTINES /OUTPUT=VMI$KWD:PASCAL$SMB_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$SMG_ROUTINES /OUTPUT=VMI$KWD:PASCAL$SMG_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$SOR_ROUTINES /OUTPUT=VMI$KWD:PASCAL$SOR_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$STR_ROUTINES /OUTPUT=VMI$KWD:PASCAL$STR_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$TPU_ROUTINES /OUTPUT=VMI$KWD:PASCAL$TPU_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASCAL$TBK_ROUTINES /OUTPUT=VMI$KWD:PASCAL$TBK_ROUTINES.PAS 'P1' $ LIBRARY/TEXT/EXTRACT=PASSTR$$FILE_LIST /OUTPUT=VMI$KWD:PASSTR$$FILE_LIST.TXT 'P1' $ LIBRARY/TEXT/EXTRACT=PASSTR$$FILES /OUTPUT=VMI$KWD:PASSTR$$FILES.DAT 'P1' $! $! Select oldest compiler that is at least V5.0-0 $! $ CALL SELECT_COMPILER V50-000 $! $ PASCAL := PASCAL/NOOBJECT/NOWARNING/ALIGN=VAX $! $ PASCAL/FLOAT=D_FLOAT/ENVIRONMENT=VMI$KWD:PASCAL$D_FLOAT.PEN VMI$KWD:PASCAL$D_FLOAT.PAS $ PASCAL/FLOAT=G_FLOAT/ENVIRONMENT=VMI$KWD:PASCAL$G_FLOAT.PEN VMI$KWD:PASCAL$G_FLOAT.PAS $! $ PASCAL := 'PASCAL'/FLOAT=G_FLOAT $! $ WRITE SYS$OUTPUT " Generating STARLET.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:STARLET VMI$KWD:STARLET $! $ WRITE SYS$OUTPUT " Generating PASCAL$ACLEDIT_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$ACLEDIT_ROUTINES VMI$KWD:PASCAL$ACLEDIT_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$CLI_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$CLI_ROUTINES VMI$KWD:PASCAL$CLI_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$CMA_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$CMA_ROUTINES VMI$KWD:PASCAL$CMA_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$CONV_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$CONV_ROUTINES VMI$KWD:PASCAL$CONV_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$CVT_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$CVT_ROUTINES VMI$KWD:PASCAL$CVT_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$DCX_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$DCX_ROUTINES VMI$KWD:PASCAL$DCX_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$DTK_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$DTK_ROUTINES VMI$KWD:PASCAL$DTK_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$EDT_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$EDT_ROUTINES VMI$KWD:PASCAL$EDT_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$FDL_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$FDL_ROUTINES VMI$KWD:PASCAL$FDL_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$LBR_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$LBR_ROUTINES VMI$KWD:PASCAL$LBR_ROUTINES $! $ CALL SELECT_COMPILER V54-041 $ WRITE SYS$OUTPUT " Generating PASCAL$LIB_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ DEFINE/USER SYS$LIBRARY VMI$KWD:,VMI$ROOT:[SYSLIB] $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$LIB_ROUTINES VMI$KWD:PASCAL$LIB_ROUTINES $ CALL SELECT_COMPILER V50-000 $! $ WRITE SYS$OUTPUT " Generating PASCAL$MAIL_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$MAIL_ROUTINES VMI$KWD:PASCAL$MAIL_ROUTINES $! $ CALL SELECT_COMPILER V54-041 $ WRITE SYS$OUTPUT " Generating PASCAL$MTH_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ DEFINE/USER SYS$LIBRARY VMI$KWD:,VMI$ROOT:[SYSLIB] $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$MTH_ROUTINES VMI$KWD:PASCAL$MTH_ROUTINES $ CALL SELECT_COMPILER V50-000 $! $ WRITE SYS$OUTPUT " Generating PASCAL$NCS_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$NCS_ROUTINES VMI$KWD:PASCAL$NCS_ROUTINES $! $ CALL SELECT_COMPILER V54-041 $ WRITE SYS$OUTPUT " Generating PASCAL$OTS_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ DEFINE/USER SYS$LIBRARY VMI$KWD:,VMI$ROOT:[SYSLIB] $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$OTS_ROUTINES VMI$KWD:PASCAL$OTS_ROUTINES $ CALL SELECT_COMPILER V50-000 $! $ WRITE SYS$OUTPUT " Generating PASCAL$PPL_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$PPL_ROUTINES VMI$KWD:PASCAL$PPL_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$PSM_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$PSM_ROUTINES VMI$KWD:PASCAL$PSM_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$SMB_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$SMB_ROUTINES VMI$KWD:PASCAL$SMB_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$SMG_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$SMG_ROUTINES VMI$KWD:PASCAL$SMG_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$SOR_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$SOR_ROUTINES VMI$KWD:PASCAL$SOR_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$STR_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$STR_ROUTINES VMI$KWD:PASCAL$STR_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$TBK_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$TBK_ROUTINES VMI$KWD:PASCAL$TBK_ROUTINES $! $ WRITE SYS$OUTPUT " Generating PASCAL$TPU_ROUTINES.PAS/PEN",PASSTR$USING_COMPILER $ PASCAL/ENVIRONENT=VMI$KWD:PASCAL$TPU_ROUTINES VMI$KWD:PASCAL$TPU_ROUTINES $! $ EXIT 1 $!--------------------------------------------------------------------------------------- $! $! SUBROUTINE SELECT_COMPILER: Select oldest Pascal compiler with ID equal $! to or greater than P1. $! $! P1 = "Minimum version required" $! $! This is exactly the same as the SELECT_COMPILER inside of KITINSTAL.COM. $! We have to repeat it here since we can't 'call' it inside of KITINSTAL.COM. $! I could have used a user-defined VMI$CALLBACK to select the compiler but $! even I'm not that nerdy. $! $ SELECT_COMPILER: $ SUBROUTINE $! $ IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT "Selecting compiler with ident greater than ''P1'" $! $ PASSTR$SELECTED_ID = "V99-999" $ I = 0 $ SELECT_NEXT_COMPILER: $ TMP = F$ELEMENT(I,",",PASCAL$SAVED_IDS) $ IF TMP .EQS. "," THEN GOTO NO_MORE_SAVED_COMPILERS $ IF (F$EXTRACT(1,99,TMP) .GES. F$EXTRACT(1,99,P1)) .AND. - (F$EXTRACT(1,99,TMP) .LTS. F$EXTRACT(1,99,PASSTR$SELECTED_ID)) $ THEN $ PASSTR$SELECTED_ID = TMP $ ENDIF $ I = I + 1 $ GOTO SELECT_NEXT_COMPILER $! $ NO_MORE_SAVED_COMPILERS: $! $! Select current compiler (if any) $! $ IF PASSTR$SELECTED_ID .NES. "V99-999" $ THEN $ IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT "Selected SYS$SYSTEM:PASCAL-''PASSTR$SELECTED_ID'.EXE" $ DEFINE/NOLOG PASCAL SYS$SYSTEM:PASCAL-'PASSTR$SELECTED_ID'.EXE $ ENDIF $! $! if (current compiler exists) .and. $! (current id is above the minimum) .and. $! (current is older than currently selected one) $! then $! select the current compiler $! $ IF (PASCAL$CURRENT_ID .NES. "") .AND. - (F$EXTRACT(1,99,PASCAL$CURRENT_ID) .GES. F$EXTRACT(1,99,P1)) .AND. - (F$EXTRACT(1,99,PASCAL$CURRENT_ID) .LTS. F$EXTRACT(1,99,PASSTR$SELECTED_ID)) $ THEN $ PASSTR$SELECTED_ID = PASCAL$CURRENT_ID $ IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT "Selected current SYS$SYSTEM:PASCAL.EXE (''PASSTR$SELECTED_ID')" $ DEFINE/NOLOG PASCAL SYS$SYSTEM:PASCAL.EXE $ ENDIF $! $! if (new compiler exists) .and. $! (new id is above the minimum) .and. $! (new is older than currently selected one) $! then $! select the new compiler $! $ IF (PASCAL$NEW_ID .NES. "") .AND. - (F$EXTRACT(1,99,PASCAL$NEW_ID) .GES. F$EXTRACT(1,99,P1)) .AND. - (F$EXTRACT(1,99,PASCAL$NEW_ID) .LTS. F$EXTRACT(1,99,PASSTR$SELECTED_ID)) $ THEN $ PASSTR$SELECTED_ID = PASCAL$NEW_ID $ IF VMI$SAFETY $ THEN $ IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT "Selected new VMI$KWD:PASCAL.EXE (''PASSTR$SELECTED_ID')" $ DEFINE/NOLOG PASCAL VMI$KWD:PASCAL.EXE $ DEFINE/NOLOG PASCALER1 VMI$KWD:PASCALER1.EXE $ DEFINE/NOLOG PASCALER2 VMI$KWD:PASCALER2.EXE $ ELSE $ IF PASCAL$DEBUG THEN WRITE SYS$OUTPUT "Selected new SYS$SYSTEM:PASCAL.EXE (''PASSTR$SELECTED_ID') [safety off]" $ DEFINE/NOLOG PASCAL SYS$SYSTEM:PASCAL.EXE $ ENDIF $ ENDIF $! $ IF PASSTR$SELECTED_ID .EQS. "V99-999" $ THEN $ TYPE SYS$INPUT One of the STARLET files requires a version of HP Pascal that is not available on your system. Please re-install the HP Pascal kit and select the "Do you want to install the HP Pascal compiler" option. If you did select that option and still received this message, then please submit a problem report to HP. If you chose to rename your existing compiler, you may have to rename it back to SYS$COMMON:[SYSEXE]PASCAL.EXE for the next installation to work properly. $ EXIT VMI$_FAILURE $ ENDIF $! $! If we're using a compiler with a dash in the name, then $! its one we've saved in the past. $! $ IF F$LOCATE("-",F$PARSE("PASCAL",,,"NAME")) .NE. F$LENGTH(F$PARSE("PASCAL",,,"NAME")) $ THEN $ PASSTR$USING_COMPILER == " using "+F$TRNLNM("PASCAL") $ ELSE $ PASSTR$USING_COMPILER == "..." $ ENDIF $ ENDSUBROUTINE