Miros,
I looked at the assembler output, and you did not get the changes I suggested quite right. With what you have done, it won't get the S0C2 problem, but it will be a bit messed up. This is what you need to do to fix it:
In the SECOND routine, you have lost the line with the date, ( DC CL8'12/31/99' ...) which should have been immediately after the line with label AREA.
In the DATIME routine, you have not changed "SOURCE DS 4D" to "SOURCE DS 0D", and that is despite me adding a comment on it to highlight that this needed to be done.
I'm not sure if Wilfred has sorted your other problem out, but this might help, (or might just confuse things more, sorry).
Object code consists of records 80 bytes long (hangover from days of punched cards). Can be stored in "partitioned" datasets (DSORG=PO in the DCB info) which need additional parameter for "directory blocks" when they are created, or sequential data set (DSORG=PS). Either of those would normally be blocked (RECFM=FB), so with LRECL=80 and BLKSIZE=<some multiple of 80 appropriate for track size>.
Object code can be linked to form a (perhaps incomplete) load module (that is what you were doing originally with the assembler object code, I did not check if it is still like that - nothing wrong with doing it that way).
A library with executable programs (complete, ready to run load modules) is in a different format. It is always a partitioned dataset (so DSORG=PO), so-called "undefined" record format (RECFM=U), and typically block size chosen to be the maximum which will fit on a track (BLKSIZE=13030 for 3330 disks, and BLKSIZE=19069 for 3350 disks). (I'm sort-of amazed that I still remember those strange numbers).
And, if you have not noticed it yet, partitioned datasets need to be "compressed" occasionally to reclaim space that becomes unused when members are deleted or replaced.
BTW, if you write to an existing dataset using the wrong setting for things like RECFM or BLKSIZE, it may change the original settings for the dataset and mess it up. Probably best to just delete it and start over if that has happened to you.
Apologies in advance for any typos in that very brief explanation.
For the record, here is the JCL I used. The HERC01.TEST.LOADLIB is as it came with the TK4- system. I allocated the HERC01.TEST.OBJ (partitioned dataset for storing both the assembler and Fortran object code) before I ran the job. I more-or-less copied your JCL but the whole lot is in one job, and no, I did not try to sort out the condition code checking to stop it from trying to proceed when there have been errors.
... JOB card here ...
//*
//ASMF EXEC PGM=IFOX00,REGION=2048K
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
// DD DSN=SYS1.AMODGEN,DISP=SHR
// DD DSN=SYS2.MACLIB,DISP=SHR
//SYSUT1 DD DISP=(NEW,DELETE),SPACE=(1700,(900,100)),UNIT=SYSDA
//SYSUT2 DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
//SYSUT3 DD DISP=(NEW,DELETE),SPACE=(1700,(600,100)),UNIT=SYSDA
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD DSN=HERC01.TEST.OBJ(SPICEA),DISP=SHR
//SYSIN DD *
ADDGEN CSECT
* CREATE THE SECOND HALFWORD OF AN RX TYPE INSTRUCTION.
..... all the rest of the assembly code
//*
//FORT EXEC PGM=IEYFORT
//SYSPRINT DD SYSOUT=*
//SYSPUNCH DD SYSOUT=B
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=SHR
//SYSLIN DD DSNAME=HERC01.TEST.OBJ(SPICEF),DISP=SHR
//SYSIN DD *
C SPICE VERSION 2G.6 SCCSID=root.ma 3/15/83
C PROGRAM SPICE
..... all the rest of the Fortran code
//*
//LKED EXEC PGM=IEWL,REGION=8000K,
// PARM=(XREF,LET,LIST),COND=(4,LT,FORT)
//SYSLIB DD DSNAME=SYS1.FORTLIB,DISP=SHR
//SYSLMOD DD DSNAME=HERC01.TEST.LOADLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(900,90),RLSE),
// DCB=BLKSIZE=1024,DSNAME=&SYSUT1,SEP=SYSLMOD
//OBJECT DD DSNAME=HERC01.TEST.OBJ,DISP=SHR
//SYSLIN DD *
INCLUDE OBJECT(SPICEF)
INCLUDE OBJECT(SPICEA)
ENTRY MAIN
NAME SPICE(R)
//GO EXEC PGM=SPICE
//STEPLIB DD DSN=HERC01.TEST.LOADLIB,DISP=SHR
// DD DSN=SYS1.FORTLIB,DISP=SHR
//SYSUDUMP DD SYSOUT=*
//FT06F001 DD SYSOUT=*
//FT07F001 DD SYSOUT=B
//FT05F001 DD *
DIFPAIR CKT - SIMPLE DIFFERENTIAL PAIR
.WIDTH IN=72
... all the rest of the input for the spice program
Edit: I mentioned wrong label in SECOND routine, corrected it to be "AREA" not "SOURCE".