Below is a list of changes made to ll_get_data, I believe it is reasonably accurate, but there are problems with it. IBM does at times back port functionality, so some parameters seem to bounce in and out of the llapi.h at random. LL_StepDependency is a good example, it is in versions 3.1.0.31, 3.1.0.32, 3.2.0.16, 3.2.0.17, 3.2.0.18 & 3.3.0.3+, which frankly is down right annoying if you are trying to use #ifdefs.
3.1.0.4
3.1.0.5
LL_StepLargePage
LL_MachineLargePageSize64
LL_MachineLargePageCount64
LL_MachineLargePageFree64
3.1.0.31
3.2.0.0
3.2.0.0
LL_StepMaxProtocolInstances
LL_TaskInstanceMachineAddress
LL_AdapterUsageDevice
LL_AdapterUsageWindowMemory64
LL_AdapterMinWindowSize64
LL_AdapterMaxWindowSize64
LL_AdapterMemory64
LL_AdapterUsageCommunicationInterface
LL_AdapterUsageInstanceNumber
LL_AdapterWindowList
LL_ClassName
LL_ClassPriority
LL_ClassExcludeUsers
LL_ClassIncludeUsers
LL_ClassExcludeGroups
LL_ClassIncludeGroups
LL_ClassAdmin
LL_ClassNqsClass
LL_ClassNqsSubmit
LL_ClassNqsQuery
LL_ClassMaxProcessors
LL_ClassMaxJobs
LL_ClassGetFirstResourceRequirement
LL_ClassGetNextResourceRequirement
LL_ClassComment
LL_ClassCkptDir
LL_ClassCkptTimeHardLimit
LL_ClassCkptTimeSoftLimit
LL_ClassWallClockLimitHard
LL_ClassWallClockLimitSoft
LL_ClassCpuStepLimitHard
LL_ClassCpuStepLimitSoft
LL_ClassCpuLimitHard
LL_ClassCpuLimitSoft
LL_ClassDataLimitHard
LL_ClassDataLimitSoft
LL_ClassCoreLimitHard
LL_ClassCoreLimitSoft
LL_ClassFileLimitHard
LL_ClassFileLimitSoft
LL_ClassStackLimitHard
LL_ClassStackLimitSoft
LL_ClassRssLimitHard
LL_ClassRssLimitSoft
LL_ClassNice
LL_ClassFreeSlots
LL_ClassMaximumSlots
LL_ClassConstraints
LL_ClassExecutionFactor
LL_ClassMaxTotalTasks
LL_ClassPreemptClass
LL_ClassStartClass
LL_ClassMaxProtocolInstances
3.2.0.5
3.2.0.6
LL_StepBulkXfer
LL_StepTotalRcxtBlocks
LL_AdapterUsageTag
3.2.0.9
3.2.0.17
LL_AdapterReqInstances
LL_AdapterReqReserved01
LL_AdapterReqProtocol
LL_AdapterReqMode
LL_AdapterReqTypeName
3.3.0.0
LL_JobSchedd
LL_JobJobQueueKey
LL_JobIsRemote
LL_JobSchedulingCluster
LL_JobSubmittingCluster
LL_JobSubmittingUser
LL_JobSendingCluster
LL_JobRequestedCluster
LL_JobLocalOutboundSchedds
LL_JobScheddHistory
LL_JobGetFirstClusterInputFile
LL_JobGetNextClusterInputFile
LL_JobGetFirstClusterOutputFile
LL_JobGetNextClusterOutputFile
LL_StepRequestedReservationID
LL_StepReservationID
LL_StepPreemptable
LL_StepPreemptWaitList
LL_StepRsetName
LL_StepCkptExecuteDirectory
LL_StepAcctKey
LL_MachineReservationPermitted
LL_MachineReservationList
LL_MachinePrestartedStarters
LL_MachineCPUList
LL_MachineGetFirstMCM
LL_MachineGetNextMCM
LL_MachineCpuList
LL_TaskInstanceMachine
LL_TaskInstanceCpuList
LL_AdapterMCMId
LL_ClusterPreemptionEnabled
LL_ClusterSysPrioThreshold
LL_ClusterMusterEnvironment
LL_ClusterClusterMetric
LL_ClusterClusterUserMapper
LL_ClusterClusterRemoteJobFilter
LL_ReservationID
LL_ReservationStartTime
LL_ReservationDuration
LL_ReservationMachines
LL_ReservationJobs
LL_ReservationModeShared
LL_ReservationModeRemoveOnIdle
LL_ReservationStatus
LL_ReservationOwner
LL_ReservationGroup
LL_ReservationCreateTime
LL_ReservationModifiedBy
LL_ReservationModifyTime
LL_ReservationUsers
LL_ReservationGroups
LL_MClusterName
LL_MClusterInboundScheddPort
LL_MClusterLocal
LL_MClusterInboundHosts
LL_MClusterOutboundHosts
LL_MClusterIncludeUsers
LL_MClusterExcludeUsers
LL_MClusterIncludeGroups
LL_MClusterExcludeGroups
LL_MClusterIncludeClasses
LL_MClusterExcludeClasses
LL_MClusterSecureScheddPort
LL_MClusterMulticlusterSecurity
LL_MClusterSslCipherList
LL_ClusterFileLocalPath
LL_ClusterFileRemotePath
LL_MCMID
LL_MCMCPUList
LL_LastGetDataSpecification
3.3.0.1
3.3.1.0
LL_JobUsersJCF
LL_StepFavoredJob
LL_StepBgJobId
LL_StepBgState
LL_StepBgSizeRequested
LL_StepBgSizeAllocated
LL_StepBgShapeRequested
LL_StepBgShapeAllocated
LL_StepBgConnectionRequested
LL_StepBgConnectionAllocated
LL_StepBgPartitionRequested
LL_StepBgPartitionAllocated
LL_StepBgPartitionState
LL_StepBgErrorText
LL_MachineUsedCPUs
LL_MachineUsedCPUList
LL_AdapterUsageRcxtBlocks
LL_AdapterRcxtBlocks
LL_AdapterReqRcxtBlks
LL_MCMCPUs
LL_BgMachineBPSize
LL_BgMachineSize
LL_BgMachineSwitchCount
LL_BgMachineWireCount
LL_BgMachinePartitionCount
LL_BgMachineGetFirstBP
LL_BgMachineGetNextBP
LL_BgMachineGetFirstSwitch
LL_BgMachineGetNextSwitch
LL_BgMachineGetFirstWire
LL_BgMachineGetNextWire
LL_BgMachineGetFirstPartition
LL_BgMachineGetNextPartition
LL_BgBPId
LL_BgBPState
LL_BgBPLocation
LL_BgBPSubDividedBusy
LL_BgBPCurrentPartition
LL_BgBPCurrentPartitionState
LL_BgBPNodeCardCount
LL_BgBPGetFirstNodeCard
LL_BgBPGetNextNodeCard
LL_BgSwitchId
LL_BgSwitchBasePartitionId
LL_BgSwitchState
LL_BgSwitchDimension
LL_BgSwitchConnCount
LL_BgSwitchGetFirstConn
LL_BgSwitchGetNextConn
LL_BgPortConnToSwitchPort
LL_BgPortConnFromSwitchPort
LL_BgPortConnCurrentPartition
LL_BgPortConnCurrentPartitionState
LL_BgWireId
LL_BgWireState
LL_BgWireFromPortCompId
LL_BgWireFromPortId
LL_BgWireToPortCompId
LL_BgWireToPortId
LL_BgWireCurrentPartition
LL_BgWireCurrentPartitionState
LL_BgPartitionId
LL_BgPartitionState
LL_BgPartitionBPCount
LL_BgPartitionSwitchCount
LL_BgPartitionBPList
LL_BgPartitionGetFirstSwitch
LL_BgPartitionGetNextSwitch
LL_BgPartitionNodeCardList
LL_BgPartitionConnection
LL_BgPartitionOwner
LL_BgPartitionMode
LL_BgPartitionSmall
LL_BgPartitionMLoaderImage
LL_BgPartitionBLRTSImage
LL_BgPartitionLinuxImage
LL_BgPartitionRamDiskImage
LL_BgPartitionDescription
LL_BgNodeCardId
LL_BgNodeCardState
LL_BgNodeCardQuarter
LL_BgNodeCardCurrentPartition
LL_BgNodeCardCurrentPartitionState
3.3.1.1
3.4.0.1
LL_StepCoschedule
LL_StepSMTRequired
LL_StepMetaClusterJobID
LL_StepMetaClusterJob
LL_StepMasterVirtualIP
LL_StepMasterRealIP
LL_StepMasterNetmask
LL_StepVipNetmask
LL_StepMetaClusterPoeHostname
LL_StepMetaClusterPoePmdPhysnet
LL_StepCkptSubDir
LL_TaskInstanceMachineVirtualIP
LL_AdapterUsagePortNumber
LL_AdapterUsageLmc
LL_AdapterPortNumber
LL_AdapterLmc
LL_AdapterUsageNetworkId64
LL_AdapterUsageDeviceDriver
LL_AdapterUsageDeviceType
LL_AdapterInterfaceNetmask
LL_AdapterUsageVirtualIP
LL_AdapterUsageNetmask
LL_ClassGetFirstUser
LL_ClassGetNextUser
LL_ClassDefWallClockLimitHard
LL_ClassDefWallClockLimitSoft
LL_ReservationBgCNodes
LL_ReservationBgConnection
LL_ReservationBgShape
LL_ReservationBgBPs
LL_BgBPCnodeMemory
LL_BgPartitionSize
LL_BgPartitionShape
LL_FairShareCurrentTime
LL_FairShareTotalShares
LL_FairShareInterval
LL_FairShareNumberOfEntries
LL_FairShareEntryNames
LL_FairShareEntryTypes
LL_FairShareAllocatedShares
LL_FairShareUsedShares
LL_FairShareUsedBgShares
LL_ClassUserName
LL_ClassUserMaxIdle
LL_ClassUserMaxQueued
LL_ClassUserMaxJobs
LL_ClassUserMaxTotalTasks
3.4.1.1
LL_StepAsLimitHard64
LL_StepAsLimitSoft64
LL_StepNprocLimitHard64
LL_StepNprocLimitSoft64
LL_StepMemlockLimitHard64
LL_StepMemlockLimitSoft64
LL_StepLocksLimitHard64
LL_StepLocksLimitSoft64
LL_StepNofileLimitHard64
LL_StepNofileLimitSoft64
LL_NodeGetFirstResourceRequirement
LL_NodeGetNextResourceRequirement
LL_ClassGetFirstNodeResourceRequirement
LL_ClassGetNextNodeResourceRequirement
LL_ClassAsLimitHard
LL_ClassAsLimitSoft
LL_ClassNprocLimitHard
LL_ClassNprocLimitSoft
LL_ClassMemlockLimitHard
LL_ClassMemlockLimitSoft
LL_ClassLocksLimitHard
LL_ClassLocksLimitSoft
LL_ClassNofileLimitHard
LL_ClassNofileLimitSoft
LL_ReservationBgPartition
3.4.2.1
LL_StepTaskAffinity
LL_StepCpusPerCore
LL_StepIsTopDog
LL_StepConsideredAt
LL_StepEstimatedStartTime
LL_StepUserHoldTime
LL_StepQueueId
LL_StepQueueIndex
LL_ClassExcludeBg
LL_ClassIncludeBg
LL_BgBPIONodeCount
LL_BgPartitionUserList
LL_BgPartitionIONodeCount
LL_BgPartitionCnLoadImage
LL_BgPartitionIoLoadImage
LL_BgPartitionIONodeList
LL_BgNodeCardSubDividedBusy
LL_BgNodeCardIONodeCount
LL_BgNodeCardGetFirstIONode
LL_BgNodeCardGetNextIONode
LL_BgIONodeId
LL_BgIONodeIPAddr
LL_BgIONodeCurrentPartition
LL_BgIONodeCurrentPartitionState
3.5.0.0
LL_StepClusterOption
LL_StepScaleAcrossClusterCount
LL_StepGetFirstScaleAcrossCluster
LL_StepGetNextScaleAcrossCluster
LL_StepBgPartitionType
LL_MachineRSetSupport
LL_MachineSMTState
LL_ClusterScaleAcrossEnv
LL_WlmStatVMemoryHighWater
LL_WlmStatVMemorySnapshotUsage
LL_WlmStatLargePageMemorySnapshotUsage
LL_ClassAllowScaleAcrossJobs
LL_ClassGetFirstMaxResourceRequirement
LL_ClassGetNextMaxResourceRequirement
LL_ClassGetFirstMaxNodeResourceRequirement
LL_ClassGetNextMaxNodeResourceRequirement
LL_ClassStripingWithMinimumNetworks
LL_ClassMaxNode
LL_ReservationExpiration
LL_ReservationCanceledOccurrences
LL_ReservationCanceledOccurrencesCount
LL_ReservationRecurringString
LL_ReservationRecurrenceStructure
LL_ReservationBindingMethod
LL_ReservationGetNextOccurrence
LL_ReservationOccurrenceID
LL_StepReservationBindingMethod
LL_StepReservationFirstOidStepBoundTo
LL_MClusterAllowScaleAcrossJobs
LL_MClusterMainScaleAcrossCluster
LL_BgPartitionType
3.5.1.2
4.1.0.0
LL_StepJobKey
LL_StepGetFirstNetworkUsage
LL_NetworkUsageNetworkId
LL_NetworkUsageProtocol
LL_StepGetNextNetworkUsage
LL_NetworkUsageInstances
LL_MachineMaxDstgStarters
LL_NetworkUsageMode
LL_NetworkUsageRcxtBlocks
LL_NetworkUsageWindows
To cope with version changes in the supported calls in the Data Access API the defs.h.in file is processed by the Makefile.PL to produce defs.h. The make process works by finding all the definitions in your current llapi.h file, if they are not found in defs.h.in then you are told about it and a suggestion of how to add them is given. If the definition exists in defs.h.in and not in your llapi.h, it is deleted.
The defs array contained in the defs.h.in file is basically a mapping betweeen the Data Access API type and the returned variable type, the file is produced by massaging the llapi.h file to link data in the comment fields with the variable type, it is then hand tuned to correct entries where the data type in the comment is not quite right,
C99 introduced “Designated Initializers” for arrays, meaning you can do things like:
static int defs[]={
[LL_StepCheckpointing] = LL_BOOLEAN_STAR,
[LL_MachineName] = LL_CHAR_STAR,
The version of xlf on the IBM I have access to does not support this feature so it is not possible to initialize the array this way, instead the Makeffile.PL has a second processing step which will fully populate the defs array. This makes no difference to the functioning of the module.